ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:410.50KB ,
资源ID:83839      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-83839.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的班级投票器.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机的班级投票器.doc

1、基于单片机的班级投票器【摘 要】班级投票器是针对班级而设计的现场投票计数器系统,该系统可用于班级人数小于99人,职位候选人不超过10人的投票选举。投票器是由键盘接口专用芯片74C922来完成按键编码,再通过单片机采集信息,进行票数的累计,最后有四联数码管来显示选举结果。投票期间用一个按键来控制投票有效性,并通过发光二极管来完成指示工作。选举投票期间可暂停投票,查看投票结果,后可继续投票,直至达到预设的最大班级人数关闭投票系统。【关键词】单片机;投票;74C922引言 31 系统总体设计 41.1 设计要求.41.2 系统组成方框图.41.3 方案设计.42 系统硬件设计 42.1 相关芯片介绍

2、.42.1.1 AT89C51芯片介绍.42.1.2 74C922芯片介绍.52.1.3 74LS04芯片介绍.62.2 各单元电路设计与分析.72.2.2 由74C922够成的键盘电路.72.2.2 复位电路.82.2.3 时钟电路.82.2.4 显示模块.92.2.5 控制投票有效部分102.3 总原理图和元器件清单.112.3.1 总原理图.112.3.2 元件清单.113 系统软件设计123.1 主程序设计123.2 中断程序设计133.3 定时程序设计144 调试165 总结166 致谢语17参考文献17附录一 PCB图 19附录二 源程序 19引言在大学生活中,时常发生选举投票事件

3、。目前班级职位选举采用纸条的方式进行投票。具体过程如下:首先,在黑板上列出要选举的职位及职位候选人的名字;接着班级成员在纸条上写上候选人的名字,折叠好放在指定的位置(如讲台桌上);再来全部投票完毕后,进行唱票,判断票的有效性(写上多于一个候选人的名字,或不写都视为废票),同时并统计票数。最后,票数统计完成后先判断本次选举是否有效(若发生选票多于选民数,视为无效)。确定本次选举有效后,宣布最高得票者为该职位的的当选者。这样的选举的缺点是比较费时,效率不高,同时也由于可能发生的选举无效问题,造成时间的延长,同时降低班级成员的积极性等。其优点就是选举十分的直观,可以在唱票时期直接观察到每个候选人的得

4、票情况,并较直接判断出当选人。针对纸条选举费时,效率不高的问题,采用设计投票器来改善这一情况。本设计是基于单片机设计的适用于班级选举的投票器,由键盘专用芯片74C922完成投票,再经由单片机采集信息,统计票数。最后由四联数码管显示投票结果。并且利用发光二极管和一个按键来控制投票的有效性。选举投票期间可暂停投票,查看当前投票结果,后可继续投票,直至达到预设的最大班级人数就会自动关闭投票系统。本次设计的班级投票器可以有效地控制投票及选举的有效性,就节省了去判断选票及选举的有效性及选举无效延长的时间。同时投票器本身有统计票数的功能,就又节省了统计票数的时间。整体上提高了班级选举的效率,同时也使得选举

5、更加地民主,公平。1、系统总体设计1.1 设计要求假定班级成员45人,职位候选人10人(不超过10人)。选民(班级成员)分别编号为01,02,44,45;候选人分别编号为01,02,09,10(由10个按键构成)。(1) 一上电不允许投票,按下允许投票键,利用10个按键进行投票,有效投票后显示选民编号和所选候选人的编号。将投票结果储存起来并且再按其他按键无效。(2) 按下允许投票键进行下一个选民的投票。(3) 投票期间,可暂停投票来查看票数统计结果,后按下允许投票键又可继续投票。(4) 全部成员投票完成后,最后显示候选人的编号及其得票数。(5) 按下复位键,进行新一轮的职位选举。1.2 系统组

6、成方框图单片机(AT89C51)时钟电路复位电路由74C922构成的键盘投票允许投票键开启选民投票LED灯灭提示选民可以进行投票;当LED灯亮,无法进行投票。数码管显示图1-2 系统模块组成方框图1.3 方案设计设计时班级成员不超过99,职位候选人10人。由键盘接口专用芯片74C922及12个按键(10个按键用于投票工作,2个按键用于查看投票结果)构成的电路来完成键盘扫描,编码,再通过AT89C51芯片来采集信息,进行票数的统计。由四联数码管完成显示工作,投票期间显示选民编号和所选候选人的编号,查看结果时显示候选人的编号及其得票数。设置一按键来控制有效投票,并让发光二极管配合指示。选举投票期间

7、可暂停投票,查看投票结果,后可继续投票,直至达到预设的最大班级人数关闭投票系统。2、系统硬件设计2.1 相关芯片介绍2.1.1 AT89C51芯片简介AT89C51是一种低电压,高性能CMOS8位单片机,采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性能比的应用场合,可灵活应用在各种控制领域。1它具有以下特点:4K字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量级中断接口,一个全双工串行通信口,片内振荡器及时钟

8、电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到出现下一个硬件复位。图2-1-1 AT89C51引脚图2.1.2 74C922芯片简介74C922芯片有16键IC和20键IC,本设计采用的是16键的IC。图2-1-2(1)所示为44(16键)扫描式编码键盘原理图。这种键盘的按键排成矩阵形式,以减少按键联线。如图中有16个键,排列成4行4列,仅需8根引线。时钟发生器的输出送给4位计数器进行计数,计数器的低

9、2位经译码后作为行扫描,高2位经译码后作为列扫描。若没有检出有键闭合,则计数器周而复始反复计数,即反复进行扫描,一旦检出有键闭合,就发出一个脉冲使时钟振荡器停振,计数器随即停止计数。单片机通过读取计数器的计数值来获取闭合键所在的行列位置,然后从真值表得到按键读数。如果有两个键同时按下,则扫描到第一个闭合键时就停止扫描,把该键当作有效按键进行处理。24位计数器时钟发生器24译码器44键盘24译码器去抖动停振选通3210图2-1-2(1)扫描式编码键盘74C922芯片(16键IC)的引脚排列如图2-1-2(2)所示:图2-1-2(2)74C922引脚图X1X4:列线。Y1Y4:行线。OSC:接振荡

10、电容0.1F,以便扫描矩阵键盘KM:键盘消除抖动电路,并发出两种信号。(1)内部计数器停止计数。(2)若有键按下,使DA脚由未按键时的低电平变为高电平,若按键未放开则一直保持高电平,当按键放开时,才转为低电平。此引脚外接一个电容是OSC所接电容的10倍。DA:数据有效信号。若无键按下,保持低电平。若有键按下,变为高电平,直到键放开,才转为低电平。/OE:输出使能。DA:按键值输出,按BCD码输出,具体输出情况如表2-1-2所示。表2-1-2 真值表数据输出0Y1,X11Y1,X22Y1,X33Y1,X44Y2,X15Y2,X26Y2,X37Y2,X48Y3,X19Y3,X210Y3,X311Y

11、3,X412Y4,X113Y4,X214Y4,X315Y4,X4A0101010101010101B0011001100110011C0000111100001111D00000000111111112.1.3 74LS04芯片简介74ls04是一六反向器,其功能表如表2-1-3,其引脚分布如图2-1-3。表2-1-3功能表Y=输入输出AYLHHLH为高电平L为低电平图2-1-3 74LS04引脚图2.2 各单元电路设计与分析2.2.1由74C922够成的键盘电路图2-2-1 74C922构成的键盘电路在键盘部分采用74C922来完成工作。键盘电路图如图2-2-1所示。74922芯片是专用编码

12、键盘接口芯片,当按下某一按键时,该芯片能自动给出相应的编码信息,并可自动消除抖动,从而可免除关于削抖的软件编程,提高了CPU的利用率。2因为按键扫描要对按键进行削抖处理,而削抖分为软件削抖和硬件削抖,一般情况下多采用软件削抖。74C922为CMOS工艺技术制造,工作电压为315V,“二键锁定”功能,编码输出为三态输出,可直接与微处理器数据线相连,内部振荡器完成44矩形键盘扫描,当有按键按下时,DA变高,通过非门接到AT89C51的外部中断0,并且设外部中断0为边沿触发方式,当DA变高时,经过非门变为低电平跳变产生外部中断,通知AT89C51从数据总线读键值,判断键值从而完成相应的散转程序功能。

13、3根据图2-2-1及74C922芯片真值表2-1-2,按键S1S10对应DCBA输出(00001001),上下翻查键S11,S12对应输出是(1010)和(1011)。同时ABCD输出连接到AT89C51的P2口的P2.0P2.3。2.2.2复位电路图2-2-2 复位电路单片机的复位都是靠外部电路来实现的。在时钟电路工作后,只要在单片机的复位(RST)脚上出现24个时钟振荡脉冲(也就是2个机器周期)以上的高电平,单片机便实现初始化状态复位。4传统的复位方法有阻容上电复位和按键电平复位如图2-2-2。本设计采用按键手动复位电路。它们实际上利用RC充放电原理实现的复位电路,从外部给RST脚2个机器

14、周期以上的高电平。在实际应用系统中,为了保证复位电路可靠地工作,常常将RC电路接斯密特电路后再接入单片机的复位端和外围电路复位端。这样就特别适用于应用现场干扰大、电压波动大的工作环境,并且当系统有多个复位端时,也能够保证可靠的同步复位。当AT89C51的RST引脚到高电平时,单片机就会复位。按下按纽S13,将高电平接到RST端,从而复位。复位后,单片机就从0000H地址开始执行程序。P0P3四个并行接口全为高电平,其他寄存器全部清零,只有SBUF寄存器状态不确定。2.2.3时钟电路图2-2-3 时钟电路时钟电路是计算机的心脏,它控制着计算机的工作节奏。CPU就是通过复杂的时序电路完成不同的指令

15、功能的。MCS-51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。MCS-51单片机有HMOS型和CHMOS型,它们的时钟电路有一定区别。5内部时钟电路,利用AT89C51内部一个高增益的反向放大器,把一个晶振体和两个电容器组成的自激振荡电路接于XTAL1(19脚)和XTAL2(18脚)之间。这样,振荡器发出的脉冲直接送入内部时钟电路。如图2-2-3所示。图中晶振体可以是石英晶体或陶瓷结构,振荡频率可任选,一般频率在1.212MHz。对于石英晶体振荡器,电容C3,C4在30pF左右,对于陶瓷振荡器,C3,C4约47pF

16、左右。外部部时钟电路,MCS-51的内部工作时钟也可以由外部振荡器提供,这时,对HMOS型芯片,外部振荡器的信号接至XTAL2,即内部时钟发生器的输出端,而内部反相放大器的输人端XTAL1应接地.在CHMOS电路中,因内部时钟发生器的信号取自反相放大器的输入端(即与非门的一个输人端),故采用外部时钟源时,接线方式与HMOS型的有所不同:外部信号接至XTALI,XTAL2不用。外部时钟引入方式如图2-2-3(A,B,C)所示。对外部振荡器的信号没有特殊的要求,一般为0.5一12 MHz的方波,方波的波形应尽量规范即上升沿、下降沿尽可能垂直。时钟发生器把振荡频率加以二分频,给主机提供了一个双相信号

17、,第一相信号在每一个时钟周期的前半部分有效,第二相信号则在时钟周期的后一半有效。图2-2-3(A)HMOS和CMMOS器件都适用的外部时钟连接图 图2-2-3(B)HMOS器件外部时钟连接图 图2-2-3(C)CHMOS器件外部时钟连接图本次设计采用内部时钟电路,石英晶体(频率12M),电容C3,C4为30pF。AT89C51的机器周期为1us。2.2.4显示模块(1)显示方式的选择7段数码管的显示方法可分为静态显示和动态显示,所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒定地导通或截止。例如,7段显示器的a、b、c、d、e、f段导通,g、dp段截止,则显示0。这种显示方法的每一位都

18、需要有一个8位输出口控制。对于51单片机,可以在并行口上扩展多片锁存器74LS573作为静态显示器接口。所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼的视觉暂流效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。显示器亮度既与点亮是的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需一个8位I/O口(称为扫描口或字位口),控制各位LED显示器所显示的字形也需要一个8位口(数据口

19、或字形口)。与静态驱动显示相比,动态扫描显示具有以下优点:第一,能显著降低显示器的功耗,这对于采用电池供电的便携式数字仪表尤为重要;第二,能大大减少显示器的外部引线,给印制板的设计和安装带来方便;第三,能采用BCD码多路输出的方式,不仅使译码、驱动电路大为简化,还可以与微机相连等。6动态扫描的缺点是CPU工作效率比静态扫描低,同时显示亮度较静态显示器要低。本次设计选择采用动态扫描。如图2-2-4芯片AT89C51的P1.0P1.6作为数据口,P0.0P0.3作为扫描片选口。图2-2-4 LED显示电路(2)数码管的驱动本设计采用共阴型的四联数码管,关于数码管的驱动部分把P1口(P1.0 P1.

20、6)作为驱动接口,并外接上排阻511作为其上拉电阻增强其驱动能力。这样的驱动能力就可使数码管显示合适的亮度。2.2.5控制投票有效部分由一个发光二极管(DS1)和一个按键(S)构成控制投票有效部分,如图2-2-5所示。通过软件设置成发光二极管DS1灭时可允许投票,DS1亮时不可以投票。而按下按键S(允许投票键),让P3.3产生一个负跳变,开启外部中断1(外部中断选择边沿触发的方式),通过软件编程使发光二极管灭,一检测到有投票按键按下,使发光二极管亮。通过DS1和S的配合来控制投票有效的问题。图2-2-5 控制投票有效部分电路2.3总原理图和元器件清单2.3.1总原理图图2-3 总原理图232元

21、件清单器件名称器件型号数量备注单片机AC89C511晶振12M1键盘编码器74C9221非门74LS041四联数码管共阴型1发光二极管1按键14磁介电容30pf21042电解电容22uf1电阻1K6100欧1排阻5111导线若干电源5V13、系统软件设计开始寄存器的配置灯和系统的初始化进入for(;)死循环按下键是有效投票吗?显示数据转换,被选候选人选票加1,选民编号自动加1,灯亮选民编号等于预设的最大选民人数加1关闭投票系统按下键S11?按下键S12?上翻操作下翻操作YNNYNNYintbit=1YN31主程序设计图3-1 主程序流程图主程序流程图如图3-1所示,在寄存器配置的环节中,包含了

22、打开外部中断1,外部中断0,选择2个外部中断的触发方式为边沿触发方式;选择定时器T1的工作方式为方式2(自动再装入的8位定时器的工作方式),打开T1的溢出中断并对其赋初值。当intbit=1时,开始执行主程序中关于对选票的统计,上下翻等操作,而外部中断0打开后的便会执行intbit=1。按下键是有效投票须同时满足3个条件,第一个是发光二极管LED指示灯处于灯灭状态,第二个是选民编码未超过最大班级人数,第三个是按下的键是键S1S10其中一个。与74C922配合的12个按键中,S1S10代表的是10个候选人(0110)相应被投票键,S11是用于查询结果时的上翻键,S12是用于查询结果时的下翻键。中

23、断0的中断入口Key键值清零 Key键值加1,并置intbit为1中断返回P2.0为高电平?Key键值加1P2.1为高电平?Key键值加2P2.2为高电平?Key键值加4P2.3为高电平?Key键值加8NNNNYY3.2中断程序设计关闭LED中断1的中断入口中断返回图3-2(1) 外部中断1流程图图3-2(2) 外部中断0流程图外部中断1流程图如图3-2(1)所示,外部中断0流程图如图3-2(1)所示,其中2个外部中断的触发方式皆是边沿出发,通过硬件电路中P3.3(INT1)引脚处连接一个按键(S,也就是允许投票键)来控制中断1。当按键按下时便会产生一个负跳变,打开了中断1。执行中断程序让发光

24、二极管灭(允许投票)。通过按键S和LED灯来控制按键投票的有效性。外部中断0用来完成按键采集工作,并置intbit为1,转入执行主程序中关于对选票的统计,上下翻等操作。与74C922芯片构成的12个按键的键盘电路,一有按键按下,74C922的DA端由低电平转为高电平再经74LS04非门的取反作用给P3.2(INT0)产生负跳变,便打开中断0。按键S1S10(10个候选人0110相应被投票键)对应DCBA输出(00001001),上下翻查键S11,S12按键值对应输出是(1010)和(1011)。ABCD输出端连接到AT89C51的P2口的P2.0P2.3。执行如图3-2(2)所示的操作,便使得

25、从按键S1S12采集给Key,分别对应Key键值为1到12。3.3定时程序设计定时器T1的主要功能就是用于四联数码管的片选显示,每隔10个定时中断时间(2.39ms)换一位数据管显示相应的数字。定时中断流程图如图3-3所示。通过主程序中的TMOD=0x20语句选择定时器工作方式为方式二(自动再装入的8位定时器的工作方式);通过TL1=0x00;TH1=0x11;两个语句对T1赋初值。T1的定时时间为t,t=(28-TH0初值)*振荡周期*1 3-3根据公式3-3可知t=(256-17)*(1/12M)*12=239us,那么10个定时时间就是2.39ms,本设计中硬件电路中,共阴型的四联数码管

26、的4个片选端(14)与AT89C51的P0.0P0.3引脚相连。同时共阴型的数码管的片选端是低电平有效,cs用于片选,cs等于03相当于连接到数码管的片选端(41)。本设计采用的是动态扫描,而动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。若频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜。本次设计选择每隔10个定时中断时间(2.39ms)换一位数码管显示,利用人眼的视觉暂流效应和发光二极管熄灭时的余辉效应,就可以看到四联数码管输出四个数字。调试时,可根据实际情况再对定时时间做适当的调节。定时器1的中断入口到了10个定时时间了吗?cs=0?P0.3置0cs=1?P0.2置0cs=2?P0.1置0cs=3?P0.0置0数码管显

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2