维普资讯 http://www.cqvip.com ! Q:2 Science and TechnOIOgy Consulting Herald T技术 基于单片机的投票计数器的设计 张福军刘羽楠刘坤 (黑龙江八一农垦大学信息技术学院 黑龙江大庆 1 6331 9) 摘要:本文详细的介绍了一种单片机现场投票计数器系统,该系统主要用于21人投票的现场记票工作,主要工作靠对可编程并行I/0接 口芯片8255A的编程来实现的,并通过AT89C51芯片处理,把数据送给MAX7219来实现动态显示。 关键词:投票 计数器 AT89C51 中图分类号:TP3 文献标识码:A 文章编号:1673—0534(2007)10(a)一0031—02 本文主要研究的是一种基于单片机的现场 成一组为第一个人的按键,分别为同意、不同 投票计数器系统,其主要功能是完成现场选民 意、弃权三个按键;K3、K4、K5为第二个人的 投票的统计和分析结果,并显示在显示屏上。 按键,分别为同意、不同意、弃权三个按键;依 每个选民有一个带有三个按键的键盘,三个按 次类推,直到K60、K61、K62为第21个人的 键分别代表“同意”、“不同意”和“弃 按键,分别为同意、不同意、弃权三个按键;最 权”,当选民按下任意一个按键时,该系统对此 后一个键K63为主持人的复位按键。而主持人 做出反映,并传输到LED显示器上显示出来。 的复位按键则是通过连接在复位电路上的复位 } l 为了保证该系统的可靠性,还要求每个选民手 按键来实现的,当主持人按下该复位键后,系统 ● 里的键盘有键按下后,再按其他两个键无效,以 清零,键盘和显示部分以及cPU(AT98c51)全 避通弼摩暴承谴拄{毫Il 保证无重复扫描和计票数量准确。 部复位,以便下次投票。 + 1.2显示电路 l透出弼爨懿话1 根据实际需要,要显示“同意”、“不同 意”、“弃权”三种结果,所以需要6位LED 0 {il匿苇卿嚣数镪l嚣艇蛊乖缓冲} 显示,每两位显示一种结果。该设计采用 0 AT89幅j 逸通币癣摩爱承垃抟幽 l ’ 踊蕊 硼 图1系统硬件框图 l l 1系统的硬件设计 ● 本系统的硬件框图如图1所示。 壕谴穿桎显承艘鼓制 1.1键盘电路 键盘电路如图2所示,键盘电路为8 X 8: l《冰并秘嘏话1 64个键输入,其中63个为选民投票按键,一个 图3显示电路 为主持人的复位按键,用于对显示器清零操作, 以便下次投票之用。该系统的键盘用82 5 5A 来驱动,行、列由8255A的PA lZl和PB lZl组 成,并设置上拉电阻,阻值为10千欧,接到正5 伏电源上。当有键按下时PB lZl的返回值为0, 图5显示子程序 以便系统识别是否有键按下,并识别按键的位 置,该数据通过数据lZl传送到AT89C51中,由 MAx7219作为6位LED的驱动芯片,因为 单片机对键值进行处理,并进行统计,以便显 MAX7219的连接电路比较简单,而且占用单片 机的端口也较少,用起来比较方便,电路如图3 不。 键盘分配如图2所示,K0、K1、K2组 所示。AT89C51的P1.0、P1.1、P1.4分别与 MAX7219的DIN、CLK、L0AD端相连。电 阻R1可改变LED的亮度,每段的驱动峰值电流 约为R1中电流的100倍。R1的取值不能小于 1 Ok D。实际使用时,可先用一只可调电阻调 节亮度,达要求后用一只相同阻值的固定电阻 代替即可。在这里应注意,MAX7219的段电流 正常工作范围为1O~40mA,当段电流超过4O m A时,必须外加电流电路。 2系统的软件设计 软件部分的设计比较困难,也是整个设计 的重点和难点。基于系统的要求,软件能够对 按键进行处理,并且当每组有一个键按下时,该 组的三个按键自动封锁(再按无效),这一部分通 8255A 过键盘子程序来实现。而且要求单片机对统 图2键盘电路 图4键盘子程序 计的结果(“同意”、“不同意”、“弃权” 科技咨询导报Science and Technology Consulting Herald 31 维普资讯 http://www.cqvip.com ! Q: Science and Technology Consulting Herald T技术 的个数)通过对MAX72l9的编程来实现。所 以,整个软件设计部分分为:主程序、初始化子 程序、键盘显示主程序、显示子程序等几部分。 2.1系统主流程 程序设计中,单片机选用寄存器以及存储 器空间的位置、赋初值如下:R5寄存器用于扫 描键盘读数值;存储单元20H-22H用于存放每 组是否有投票的标志位(没有投票的标志为 “0”,有投票时标志位被置为“l”);3 0H~ 3 2 H存储单元为统计结果存放的位置(初值清 零);33H~35H设置为显示缓冲区(要进行初始 化设置)。 2.2键盘子程序流程图 盘子程序是整个软件部分的重点和难点, 系统采用的是行扫描法对键盘进行扫描。首 先某一行送出…0’,然后判断列值,首先整体 判断一下,如果返回结果中没有…0, 0说明 这一行没有按键按下;如果有…0’,接着判断 返回结果中“0”的位置(列值返回一个 “0”)。然后,进行键值的处理,行值+8+列 值=键值(键号)。键值除以3,整数部分为第几 个人选票,判断该人投票标志位是否为l,如果 为l则抛弃该结果,不做统计,如果不为l则封 锁该标志位(该标志位置1);余数部分为投票的 结果,如果余数为0,投票结果为“同意”,余 数为l,投票结果为“不同意”,余数为2,投票 结果为“弃权”,判断完投票结果后,对应的 统计结果存储单元加l。键盘扫描后,判断所 有标志位是否都为l,如果有的标志为不为l,在 该选民的投票结果以“弃权”处理,完成键盘 子程序。键盘子程序流程图如图4所示。 功能,该电路可用在体育比赛中作计分和计时 2.3显示子程序流程图 器用,也可以用于各种娱乐场所、观众对参加 显示程序首先从显示缓冲区把要显示的数 比赛者的支持人数的统计和计分器等。 据取出来,接着选通要显示数据的位控制,然后 送出要显示的数据。主要是对MAX72l9进行 编程,显示子程序将30H~32H存储单元的内 容通过MAX72l9显示到LED上。MAX72l9 由DIN端接收l6位数据包,并在每个CLK上 升沿移入到内部l 6位寄存器中。然后通过内 部处理,选择SEG口和DIG口,即选择那位LED 显示,以及显示的内容。不仅如此,MAX72l9 还可以通过内部的设置来确定显示的亮度等。 显示子程序流程图如图5所示。 图6系统扩展 参考文献 【l】佟云峰.单片机于LED显示器接口设计.昆 明冶金高等专科学校学报,2001,17(4):45— 本系统用一片单片机设计电路,只能实现 46. 21人的投票,但实际中可能碰到人数多于21人 2】赵亮.显示驱动芯片MAX7219在单片机中 的情况,因此可以将以上的系统作为一个基本 【的应用【J].电子制作,2005(11):36-38. 单元,进行模块式的扩展,采用主从式的多机通 3】柴锁柱,串行LED驱动器MAX7219及其应 信网的结构,如图6所示,主机主要负责统计每 【用.集成电路应用.20012):3卜3 3. 个从机的投票人数并承担显示功能,而每个从 4]张毅刚,彭喜源,谭晓昀,曲春波编著.MCS一 机的输入投票键可以扩展为l6 X 8=l28个键 【5 l单片机应用技术【M】.哈尔滨工业大学出 (8255A的PA、PB、PC口都用上),每个人 版社,2003. 使用3个键,那么每个从机可以实现42人的投 5】何立民,MCS一5l系列单片机应用系统设计 票。根据串行通信的原理,主从式多机通信允 【系统配置与接口技术【M].北京航空航天大 许有255台从机,那么按照这种方式扩展,投票 学出版社,l998. 人数的最大扩展到l万人,已经足以满足实际的 3结语 各种情况的要求,但实际上是不可能达到这样 的人数,这样就要求显示采用动态扫描的方 式。电路也可以进行改进,增加抢答和计分等 (上接30页) 4.3格式化后的数捃I疚复 如果是因为误格式化而导致文件被删除, 需要选择“格式化恢复”,其他操作与选择 “删除恢复”类似。对于分区表被破坏的情 况,EasyRecovery不会恢复硬盘分区表信息, 而是按照簇来进行硬盘扫描,然后把恢复的文 件按文件类型放到不同的文件夹中,这就为我 们提供了一种新的数据恢复方法。当硬盘分 区表严重损坏,使用其他恢复软件不能恢复的 情况下,我们就可以使用这种方法。但需要注 意的是,对于一些大文件而言,由于它可能被存 储在多个不连续的簇中,如果不通过分区表进 行数据恢复,则很可能恢复的文件是不完整 的。所以,我们应该尽可能的先恢复硬盘分区 表,再进行数据恢复。 4.4硬盘分区表故障的数捃I疚复 PQMagic,Disk Genius等软件就是很好的 分区表恢复软件。由于病毒破坏、突然断电 或者对硬盘进行重新分区,都可能导致硬盘分 区表被破坏,使系统瘫痪。这种因为硬盘分区 表损坏而导致的数据丢失,可以使用DiskGenius 通过未被破坏的分区引导记录信息重新建立分 区表。其基本思路是查找以55AA为结束的扇 区,再根据扇区的结构和后面是否有FAT表等 情况判定是否为分区表,最后计算填回主分区 表。Disk Genius是一个DOS程序,虽然在 Windows下也能运行,但修改数据必须到DOS 操作系统下进行。 在分区菜单栏中选择“重建分区表”, Disk Genius就开始搜索并重建分区。搜索过 程可以采用“自动”或“交互”两种方式 进行。自动方式可以保留发现的每一个分区, 适用于大多数情况。而交互方式对发现的每 个分区都给出提示,由用户选择是否保留。 当自动方式重建的分区表不正确时,可以采用 交互方式重新搜索。当然,如果我们熟悉分 区各参数的意义,也可以手工修改分区参数。 修复硬盘分区表后,我们就可以用上述方法使 用EasyRecovery进行数据恢复。 4.5硬盘逻辑锁锁定故障的修复 由于用户的误操作或病毒感染,硬盘可能 会产生逻辑锁故障。这种故障是因为硬盘分 区表参数被修改成一个死循环,计算机在引导 过程中,由于IO.SYS文件中有一个关键的程序 SYSINT I,它在系统启动中非要去读硬盘的每 个分区表,并且一定要把每一分区表读完。 如果碰上分区表是循环的,就死锁了。其现象 是,只要故障硬盘安装在电脑中,就无法从硬盘 软盘启动系统,即使把故障硬盘安装成从属IDE 设备,同样会导致无法引导机器。这时可以利 用DiskMan解锁,DiskMan软件是不依赖于主 板BIOS的硬盘识别软件,BIOS中将硬盘设为 “NONE”,Disk Genius也可识别并编辑硬 盘。利用上述分区表的修复方法,手工修复分 区表的分区参数。 4、6 FAT表被破坏的修复 系统提供了两个FAT表。其中第二个 一5结语 如何避免数据的丢失。 任何一种数据恢复解决方案都不能保证所 有数据能l 00%的恢复。而要真正做到数据的 万无一失,最重要的工作还在于防患于未然。 日常应做到的工作包括:安装杀毒软件以及防 火墙并及时升级,以防止病毒侵入;及时维护好 计算机以防死机;避免误操作等人为因素造成文 件丢失;养成经常保存“半成品”的好习惯。 要经常整理硬盘,使数据区的数据尽可能的连 续存储,这样也能大大提高数据恢复的成功 率。一个没有硬盘碎片的硬盘恢复起来会容 易很多。 由于NTFS格式增加了一个索引文件信息 的主文件表,而且在存储数据时,系统将在存储 工作完成后,将存储的结果与源数据进行比较 以确认操作的正确性,因此,使用NTFS格式的 硬盘数据更安全,这样即使发生数据丢失问题, 恢复数据的程度也会比较高。 一参考文献 【l】刘三满.计算机数据恢复技术分析【J】.山西 电子技术,2007,1. 【2】戴士剑,陈永红.数据恢复技术IN】.电子工 业出版社,2003,8. 【3】沈大林.计算机组装与维护案例教程[M】.高 FAT表为备份。不同的文件系统第二个FAT 等教育出版社,2005. 表的起始扇区是不同的。一般情况下第一 FAT表损坏,可用备份FAT进行覆盖修复。可 利用DiskMan或Nu等工具软件进行修复。 32 科技咨询导报Science and Technology Consulting Herald