stc89c52单片机表决器的设计大学论文Word下载.docx
《stc89c52单片机表决器的设计大学论文Word下载.docx》由会员分享,可在线阅读,更多相关《stc89c52单片机表决器的设计大学论文Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
![stc89c52单片机表决器的设计大学论文Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/5219a7e3-c6c9-4be1-8cbf-478daca4341e/5219a7e3-c6c9-4be1-8cbf-478daca4341e1.gif)
与有线表决相比,无线电子表决系统在可靠性、安全性、以及易用性上更有优势,而且大幅度降低了会议成本,适合普及推广。
目前,市面上能够进行表决器的仪表种类繁多,但是同时具有按键表决,LED灯显示,且能报警的装置并不多。
在某些需要表决的场合中,单一的表决这一基本功能已不能满足场景的要求,往往需要同时伴随灯光提示,对其结果进行不同颜色的提示。
表决器的进一步优化,有助于人们在特定场合进行表决时,为进一步对提高表决效率、为特定的场合,大会的表决提供更好的支持。
会议表决器,是投票系统中的客户端,是一种代表投票表决装置。
表决时,与会的有关人员“赞成”或“反对”,如果对某个决议有任意二到三人同意,那么此决议通过,如果对某个决议只有一个人或没人同意,那么此决议不通过。
STC89C52单片机
2.1STC89C52单片机概述
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
早期的单片机都是8位或4位的。
其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。
此后在8031上发展出了MCS51系列单片机系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
STC89C52是一种低功耗、高性能的8位CMOS微控制器,如图3-2所示,具有8K的可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
STC89C52单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。
事实上单片机是世界上数量最多的计算机。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。
而个人电脑中也会有为数不少的单片机在工作。
汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!
单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。
STC89C52单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。
我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!
它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
STC89C52单片机是靠程序的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。
一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!
但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!
只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于STC89C52单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?
很多高级的语言已经达到了可视化编程的水平为什么不用呢?
原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。
一个可视化高级语言可编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!
对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。
2.2STC89C52单片机设计要求
本系统由单片机STC89C52、LED灯、电阻、按键等电路组成。
实际表决过程中要确保按键按下不会出错,采用单片机内部的锁存器,从而存储按键信息,保证按键信号正常。
同时对投票的结果进行显示,显示的方法用LED灯显示,开始表决时,用黄色LED灯显示,表决通过时为绿色LED灯,表决未通过时为红色LED灯。
本方案采用单片机设计一个三人表决器,具体要求满足以下条件:
1.要求采用51单片机作为微控制器;
2.通过三个LED灯进行判断显示;
3.通过一个按键进行表决开始的操作;
3.支持两键常规表决方式:
“赞成”、“反对”;
4.同时使用不同颜色的LED灯报警,通过显示黄灯,表示表决开始;
显示绿灯,表示表决通过;
显示红灯,表示表决未通过。
2.3STC89C52单片机设计方案
方案一:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。
方案三:
采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。
方案四:
采用LED灯来进行显示,分别用不同的颜色来表示不同的状态,电路实现只需要加上一个电阻即可,然后用单片机进行控制,用黄色的LED灯光来表示表决开始,用红色的LED灯光来表示表决未通过,用绿色的LED灯光来表示表决通过。
比较以上四种方案,很容易看出,采用方案四,电路比较简单,软件设计容易实现,故实际设计中拟采用方案四。
2.3STC89C52单片机硬件组成
为了实现功能,本表决器设计了相关的硬件电路和相关应用程序。
硬件电路主要包括STC89C52单片机最小系统,LED显示电路、按键电路等。
系统程序主要包括主程序,表决显示子程序,按键处理程序以及数据存储程序等。
在本系统的电路设计方框图如图3-1所示,它由三部分组成:
1.主控芯片STC89C52;
2.LED显示部分;
3.按键电路部分。
图2-1系统总体框图
(1)控制部分
采用传统的数字模似电路,功能可以实现,但电路复杂,温度误差大,成本高,可靠性也比较差;
于是我选择采用单片机89C52控制,它结构简单,可以减少外围电路的搭接,并且89C51使用方便,成本比较低,性能稳定,还可以控制各模块输入输出。
(2)显示部分
LED灯进行显示,用黄色的LED灯光来表示表决开始,用红色的LED灯光来表示表决未通过,用绿色的LED灯光来表示表决通过。
(3)按键部分
普通的矩阵按键即可。
2.4STC89C52单片机引脚
2.4.1STC89C52单片机引脚实物图
图2-2STC89C52引脚实物图
2.4.2STC89C52单片机引脚功能
图2-3STC89C52引脚图
从引脚功能来看,可将引脚分为三部分:
1、电源及时钟引脚
VCC:
接+5V电源;
VSS:
接地;
XTAL1和XTAL2:
时钟引脚,外接晶体引线端。
当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;
当使用外部时钟时,用于接外部时钟脉冲信号。
2、控制引脚
RST/VPT:
RST是复位信号输入端,VPT是备用电源输入端。
当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。
当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片内RAM提供电源以保护片内RAM中的信息不丢失。
ALE/PROG:
地址锁存允许信号输出端。
在存取外存储器时,用于锁存低8位地址信号。
当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。
此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。
PSEN:
程序存储允许输出端。
是片外程序存储器的读选通信号,低电平有效。
CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。
EA/VPP:
程序存储器地址允许输入端。
当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;
当EA为低电平时,CPU只执行片外程序存储器指令。
对8031单片机,EA必须接低电平。
在8751中,当对片内EPROM编程时,该端接21V的编程电压。
3、I/O口引脚
P0.0~P0.7:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
P1.0~P1.7:
P1口是一个具有内部上拉电阻的8位双向I/O口。
作为输出口,每位能驱动4个TTL逻辑电平。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
P2.0~P2.7:
P2口是一个具有内部上拉电阻的8位双向I/O口。
在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。
P3.0~P3.7:
P3口是一个具有内部上拉电阻的8位双向I/O口。
P3口亦作为STC89C52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号。
2.5STC89C52单片机模块设计
2.5.1STC89C52单片机主控制模块设计
本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。
51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。
单片机的最小系统如图2-4所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。
XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
复位电路包括复位电容(C6)、复位电阻(R3)和复位开关(S4)。
VSS为电源地,VCC为电源正。
图2-4单片机最小系统
单片机复位电路、晶振电路简介
1、复位电路的使用
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。
(1)常见的复位电路
通常单片机复位电路有两种:
上电复位电路,按键复位电路。
上电复位电路:
上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。
它利用的是电容充电的原理来实现的。
按键复位电路:
它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。
如果要实现复位的话,只要按下RESET键即可。
它主要是利用电阻的分压来实现的
在此设计中,采用的按键复位电路。
按键复位电路如图2-5所示。
图2-5复位电路
(2)复位电路工作原理
上电复位要求接通电源后,单片机自动实现复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作
2、晶振电路的使用
晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4.4中Y1、C1、C2。
可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,这里选择12MHz晶振。
补偿电容通常选择30pF左右的瓷片电容。
图2-6时钟振荡电路
2.5.2STC89C52单片机按键模块设计
键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。
考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。
在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。
本设计中将8个按键分别接在单片的P3口,并公共端接地,采用高电平的触发方式。
图2-7按键电路
2.5.3STC89C52单片机LED模块设计
LED的全称是LighyEmittingDiode,即发光二极管。
LED是一种半导体固体发光器件,它是利用固体半导体芯片作为发光材料,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光。
LED可以直接发出红、黄、蓝、绿、青、橙、紫、白色的光。
本设计中用黄色的LED灯表示表决开始,用红色的LED灯表示表决未通过,用绿色的LED灯表示表决通过,且分别接在单片机的P1.2、P1.4、P1.6口上。
图2-8LED显示电路
第2章三人表决器的功能调试
3.1调试过程
本系统的调试主要分为硬件调试、软件调试两大部分。
经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。
这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。
软件编程中,首先编写单元模块的程序,并且在硬件上调试成功问题,即可以做系统整体程序的调试。
联机调试是最重要的一部分,同时也是本设计成功的关键。
3.2检测电路
首先对电路进行通电,观察是否能正常工作,如不能正常工作,按原理图分模块进行电路检测,是否焊接正常,是否有虚焊或漏焊现象;
如焊接正常,在按信号传递的方向逐级检测,找出出问题的一级,并向该级的上级进行检测,直到将故障排除。
对于虚焊和漏焊的情况最好的办法是先找到一个比较大的电路回路,如果用的是指针式万用表,打到欧姆档1X10欧姆档就可以测,如果是指针摆到最右,说明我们的线路连接是正常的!
如果用的是数字万用表,我们可以调整到短路档位,接上要测的点直接就可以测,如果有蜂鸣响说明线路连接正常。
3.3仿真调试
模拟调试:
当电路搭建好之后,选中单片机STC89C52,左键点击STC89C52,在出现的对话框里点击ProgramFile按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。
点击模拟调试按钮的运行按钮,进人调试状态。
图3-1为运行按键:
图3-1运行按键
三人表决器初始化:
图3-2三人表决器初始化
开始表决:
图3-3开始表决
表决通过:
图3-4表决通过
表决未通过:
图3-5表决未通过
3.4调试出现的问题
1、将所编程的程序烧写在单片机8051芯片中,然后将其加入硬件电路中,然后进行调试,发现不能实现其功能。
2、调整后继续进行调试,结果还是不能实现预期的功能,当按下的同意键大于反对建时,LED黄色灯亮;
但当按下的反对建大于同意键时,仍然出现LED黄色灯亮;
进一步对程序进行调试,后来发现是代码的LED引脚有错误,修正引脚之后,终于出现如期的性能。
第3章三人表决器软件设计
4.1.1开发语言介绍
C语言是在70年代初问世的。
一九七八年由美国电话电报公司(AT&
T)贝尔实验室正式发表了C语言。
同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THECPROGRAMMINGLANGUAGE”一书[20]。
通常简称为《K&
R》,也有人称之为《K&
R》标准。
但是,在《K&
R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C语言标准,于一九八三年发表。
通常称之为ANSIC。
早期的C语言主要是用于UNIX系统。
由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。
成为当代最优秀的程序设计语言之一。
C语言是一种结构化语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
C语言的表现能力和处理能力极强。
它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。
它还可以直接访问内存的物理地址,进行位(bit)一级的操作。
由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。
既可用于系统软件的开发,也适合于应用软件的开发。
此外,C语言还具有效率高,可移植性强等特点。
因此广泛地移植到了各类各型计算机上,形成了多种版本的C语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于