姚海云+马野
摘要:本设计利用51单片机,按键开关模块,数码管显示模块和LED模块来实现一个简单的五人表决器的功能。按键开关模块中的键2~键6表示五个人,由5个人来投票,当同意的票数大于或者等于3人时,数码管显示同意的人数,说明表决通过。当表决的人数小于3时,数码管显示同意的人数。
关键词:表决器;单片机;流水灯;数码管;矩阵键盘;时钟
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)14-0236-03
Design of a Five Person Voting Machine Based on Single Chip Microcomputer
YAO Hai-yun, MA Ye
(School of Information Engineering, Yulin University, Yulin 719000, China)
Abstract: This design uses 51 single chip microcomputer, button switch module, digital tube display module and LED module to realize the function of a simple five person voting machine. Key switch module in the key 2 ~ 6 of five individuals, 5 people to vote, when the consent of the number of votes greater than or equal to 3 people, the number of digital display, the number of votes, the vote through. When the number of votes is less than 3, the number of digital control display.
Key words: voting device; single chip microcomputer; running water lamp; digital tube; matrix keyboard; clock
当今时代是一个新技术层出不穷的时代,传统的分立元件或数字逻辑电路构成的控制系统正在被单片机智能控制系统所取代。表决器就是单片机在实践中的应运[1]它极大地方便了我们对表决结果的统计。
1 系统硬件总体结构
本次设计的五人表决器选用AT89C52单片机为主芯片,对LED灯和数码管的控制都由AT89C52芯片实现其总体实现框图如图1所示。
硬件总体框图中包含了4个部分,流水灯模块,数码管显示模块,矩阵键盘模块,时钟模块。
2 模块电路分析
基于单片机的五人表决器能正常工作,是在各个电路模块组合下协调完成的,其中包括了单片机流水灯模块,数码管显示模块,矩阵键盘模块,时钟模块。
2.1流水灯模块
流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,通过编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭[2]。52单片机的P1口连接着发光二极管,它具有单项导电性,通过5mA左右电流即可发光,电流越大,亮度越强,若电流一般控制在3-20mA之间。在这里给发光极管串联一个电阻的目的是为了起到限流的作用。电路图如图2所示。
2.2 数码管显示模块
单片机的应用系统设计中,用单片机驱动LED数码管有很多方法:按显示方式分,有静态显示和动态(扫描)显示;按编译方式可分,有硬件编译和软件编译之分[3]。AT89C52芯片P0口与锁存器74LS273的D0-D7口连接。锁存器74LS273的输出端Q0-Q7与共阳极的7段数码管相连接。共阳极数码管的内部8个发光二极管的所有阳极全部连接在一起,电路连接时,公共端接高电平,要点亮的那个发光二极管给阴极送低电平。此时,需要5mA以上的电流,且电流不可过大,否则会烧毁发光二极管。单片机的I/O口送不出如此大的电流,因此数码管与单片机连接时可以用上拉电阻形成驱动电路。电路图如图3所示。
2.3 矩阵键盘模块
键盘是电子器件中常见的输入装置[4]。单片机系统中,键盘由一组常开的按键组成。当按键闭合时就会向单片机系统输入一个电平信息。每个按键都被赋予了一个键码。单片机据此代码执行任务。在单片机系统按键数量较多时为了减少I/O口的使用通常使用矩阵键盘[5]。矩阵键盘由16个按键排成4行4列,第一行将每个按键的一端连接在一起构成行线,每一列将每个按键的另一端连接在一起构成列线,这样一共有4行4列共8根线,将这8根线连接到单片机的8个I/O口上,通过程序扫描键盘就可检测这16个键。电路图如图4 所示。
2.4 时钟模块
时钟电路的作用是为单片机提供一个时钟信号,所有程序都按照特定的时间顺序工作,它控制着计算机工作的节奏。微型计算机的CPU实质上就是一个复杂的同步时序电路[6]。时钟电路中的晶体振荡器分为有源晶振和无源晶振两种类型。根据连接方式的不同,时钟电路分为内部时钟方式和外部时钟方式,前者是单片机内部的振荡电路产生时钟信号,后者则是外部振荡源为单片机提供时钟信号。本次设计采用内部振荡方式为单片机提供时钟信号。电路图如图5所示。
3 软件设计
3.1 主函数设计
主函数模块会用到之前各个模块的函数。在本次设计中,打开开关流水灯开始工作。开始表决时让流水灯停止如果表决同意的人数大于等于3,表示表决通过。否则表示表决结果为不同意,函数结束。在这个过程中,看复位键是否按下。若按下则开始从新开始表决。这一过程的处理流程图如图6所示。
3.2按键程序设计
通过程序扫描键盘就可检测16个键。检测时,先送一列为低电平,其余几列全为高电平,然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平,则可以确定当前被按下的键是哪一个键。这一过程的处理流程图如图7所示。
3.3 显示程序设计
表决时大家关注的是表决结果,因此数码管的显示是非常重要的,P0口读入数据控制数码管的静态显示,通过段选和位选来确定是第几个数码管的哪几段亮,从而在数码管上显示数字,此时显示的数字即为表决结果。
数码管显示程序的关键代码如下:
#include
sbit dula=P2^5; //申明U1锁存器的锁存端
sbit wela=P2^6; //申明U2锁存器的锁存端
void main()
{
P0=0; //关闭所有数码管段选
dula=1;
dula=0;
P0=0x10; //位选中所有数码管
wela=1;
wela=0;
while(1)
}
4 实验结果
当表决的人中有5个人同意时,LED灯处于闪烁的状态下,表示表决通过。如图8所示。
5 总结
由于时间和知识技术方面的不足,本次设计还有许多问题需要在实际应用中解决。五人表决器可以再改进一些:可以设计一个倒数计时的模块。当按下复位键后。设计时倒数10s。在倒数的期间,表决者可以投票,倒数结束后,表决的结果无效。还可以再设计两个数码管显示表决的结果,一个显示同意的人数,一个显示反对的人数。当然,随着技术的不断革新,表决器必然会更加智能化,功能也更加多样化,相信在将来,人工智能会走进我们生活中的点点滴滴,为人类的进步和发展做出更大的贡献。
参考文献:
[1] 贡雪梅. 项目教学法在单片机原理课程设计中的应用[J]. 实验技术与管理,2009,26( 15407):115-116+144.
[2] 郭明磊. 用单片机实现流水灯的控制设计[J]. 黑龙江科技信息,2008(4):72.
[3] 郭景. 用单片机驱动LED数码管显示[J]. 阴山学刊:自然科学版,2005,19(1):41-42+56.
[4] 赵亮. 单片机从入门到精通系列讲座——矩阵键盘应用[J]. 电子制作,2008(7):63-65.
[5] 谭成豪,许建明. 试述51系列单片机矩阵键盘编程[J]. 科技传播,2011(6):197.
[6] 刘凤格. MCS-51单片机的时钟电路[J]. 菏泽师范专科学校学报,2003(2):87-89.