基于单片机的班级投票器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的班级投票器
【摘要】班级投票器是针对班级而设计的现场投票计数器系统,该系统可用于班级人数小于99人,职位候选人不超过10人的投票选举。投票器是由键盘接口专用芯片74C922来完成按键编码,再通过单片机采集信息,进行票数的累计,最后有四联数码管来显示选举结果。投票期间用一个按键来控制投票有效性,并通过发光二极管来完成指示工作。选举投票期间可暂停投票,查看投票结果,后可继续投票,直至达到预设的最大班级人数关闭投票系统。
引言 (3)
1 系统总体设计 (4)
1.1 设计要求 (4)
1.2 系统组成方框图 (4)
1.3 方案设计 (4)
2 系统硬件设计 (4)
2.1 相关芯片介绍 (4)
2.1.1 AT89C51芯片介绍 (4)
2.1.2 74C922芯片介绍 (5)
2.1.3 74LS04芯片介绍 (6)
2.2 各单元电路设计与分析 (7)
2.2.2 由74C922够成的键盘电路 (7)
2.2.2 复位电路 (8)
2.2.3 时钟电路 (8)
2.2.4 显示模块 (9)
2.2.5 控制投票有效部分 (10)
2.3 总原理图和元器件清单 (11)
2.3.1 总原理图 (11)
2.3.2 元件清单 (11)
3 系统软件设计 (12)
3.1 主程序设计 (12)
3.2 中断程序设计 (13)
3.3 定时程序设计 (14)
4 调试 (16)
5 总结 (16)
6 致语 (17)
参考文献 (17)
附录一 PCB图 (19)
附录二源程序 (19)
引言
在大学生活中,时常发生选举投票事件。目前班级职位选举采用纸条的方式进行投票。具体过程如下:首先,在黑板上列出要选举的职位及职位候选人的名字;接着班级成员在纸条上写上候选人的名字,折叠好放在指定的位置(如讲台桌上);再来全部投票完毕后,进行唱票,判断票的有效性(写上多于一个候选人的名字,或不写都视为废票),同时并统计票数。最后,票数统计完成后先判断本次选举是否有效(若发生选票多于选民数,视为无效)。确定本次选举有效后,宣布最高得票者为该职位的的当选者。这样的选举的缺点是比较费时,效率不高,同时也由于可能发生的选举无效问题,造成时间的延长,同时降低班级成员的积极性等。其优点就是选举十分的直观,可以在唱票时期直接观察到每个候选人的得票情况,并较直接判断出当选人。
针对纸条选举费时,效率不高的问题,采用设计投票器来改善这一情况。本设计是基于单片机设计的适用于班级选举的投票器,由键盘专用芯片74C922完成投票,再经由单片机采集信息,统计票数。最后由四联数码管显示投票结果。并且利用发光二极管和一个按键来控制投票的有效性。选举投票期间可暂停投票,查看当前投票结果,后可继续投票,直至达到预设的最大班级人数就会自动关闭投票系统。
本次设计的班级投票器可以有效地控制投票及选举的有效性,就节省了去判断选票及选举的有效性及选举无效延长的时间。同时投票器本身有统计票数的功能,就又节省了统计票数的时间。整体上提高了班级选举的效率,同时也使得选举更加地,公平。
1、系统总体设计
1.1 设计要求
假定班级成员45人,职位候选人10人(不超过10人)。选民(班级成员)分别编号为01,02,……44,45;候选人分别编号为01,02,……,09,10(由10个按键构成)。
(1) 一上电不允许投票,按下允许投票键,利用10个按键进行投票,有效投票后显示选民编号和所选候选人的编号。将投票结果储存起来并且再按其他按键无效。
(2) 按下允许投票键进行下一个选民的投票。
(3) 投票期间,可暂停投票来查看票数统计结果,后按下允许投票键又可继续投票。
(4) 全部成员投票完成后,最后显示候选人的编号及其得票数。
(5) 按下复位键,进行新一轮的职位选举。
1.2 系统组成方框图
图1-2 系统模块组成方框图
1.3 方案设计
设计时班级成员不超过99,职位候选人10人。由键盘接口专用芯片74C922及12个按键(10个按键用于投票工作,2个按键用于查看投票结果)构成的电路来完成键盘扫描,编码,再通过AT89C51
芯片来采集信息,进行票数的统计。由四联数码管完成显示工作,投票期间显示选民编号和所选候选人的编号,查看结果时显示候选人的编号及其得票数。设置一按键来控制有效投票,并让发光二极管配合指示。选举投票期间可暂停投票,查看投票结果,后可继续投票,直至达到预设的最大班级人数关闭投票系统。
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向量级中断接口,一个全双工串行通信口,片振荡器及时钟电路。同时,AT89C51可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM 中的容,但振荡器停止工作并禁止其它所有部件工作直到出现下一个硬件复位。
图2-1-1 AT89C51引脚图
2.1.2 74C922芯片简介
74C922芯片有16键IC 和20键IC ,本设计采用的是16键的IC 。图2-1-2(1)所示为4×4(16键)扫描式编码键盘原理图。这种键盘的按键排成矩阵形式,以减少按键联线。如图中有16个键,排列成4行4列,仅需8根引线。时钟发生器的输出送给4位计数器进行计数,计数器的低2位经译码后作为行扫描,高2位经译码后作为列扫描。若没有检出有键闭合,则计数器周而复始反复计数,即反复进行扫描,一旦检出有键闭合,就发出一个脉冲使时钟振荡器停振,计数器随即停止计数。单片机通过读取计数器的计数值来获取闭合键所在的行列位置,然后从真值表得到按键读数。如果有两个键同时按下,
则扫描到第一个闭合键时就停止扫描,把该键当作有效按键进行处理。[2]
3 2 1