每当我们去投票选举时,我们都会看到电子投票机。在本项目中,我们将使用ATmega32A微控制器设计和开发一种简单的投票机。尽管我们可以使用控制器获得32人以上的投票机,但为了使一切变得简单,我们将制作一个可容纳4人的投票系统。我们将有4个按钮供4人使用,每当按下一个按钮时,投票给对应的人,每个人的票数显示在LCD上。
所需组件
硬件:
ATMEGA32
电源(5v)
AVR-ISP程序
JHD_162ALCD(16x2液晶屏)
100nF电容器(五个),100uF电容器(跨电源连接)
按钮(五片),
10KΩ电阻(五个)。
软件:
爱特梅尔工作室6.1
progisp或flash魔术。
电路图和工作说明
如上面的电子投票机电路所示, ATMEGA32微控制器的PORTA连接到16x2 LCD的数据端口。如果要使用PORTC作为普通通信端口,则应记住通过更改熔丝字节来禁用ATMEGA PORTC中的JTAG通信。在16x2 LCD中,如果有背光,则全部有16个引脚,如果没有背光,则有14个引脚。一个人可以给背光灯供电或离开。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或gnd&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细) 3个控制引脚(RS&RW&E)。
在电路中,您可以观察到我只接了两个控制引脚,因为这样可以更好地理解。对比度位和READ / WRITE不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。
LCD的连接如下所示:
PIN1或VSS-接地
PIN2或VDD或VCC-+ 5v电源
PIN3或VEE-地面(为初学者提供最大对比度)
PIN4或RS(寄存器选择)-uC的PD6
PIN5或RW(读/写)-接地(将LCD置于读模式下使用户易于通信)
PIN6或E(启用)-uC的PD5
uC的PIN7或D0-PA0
PIN8或D1-uC的PA1
PIN9或D2-uC的PA2
PIN10或D3-uC的PA3
PIN11或D4-uC的PA4
PIN12或D5-uC的PA5
uC的PIN13或D6-PA6
uC的PIN14或D7- PA7
在电路中,您可以看到我们使用了8位通信(D0-D7),但这不是必须的。我们可以使用4位通信(D4-D7),但是使用4位通信程序变得有点复杂,因此我只使用了8位通信。
因此,仅从上表的观察,我们就可以将LCD的10个引脚连接到控制器,其中8个引脚是数据引脚,另外2个用于控制引脚。这里有五个按钮,四个用于增加候选人的选票,第五个用于将候选人的选票重置为零。
此处存在的电容器用于消除按钮的弹跳效果。如果将它们卸下,则每次按该按钮时,控制器的计数可能会超过一个。当按下按钮将引脚下拉至地面时,用于引脚连接的电阻器用于限制电流。
每当按下按钮时,控制器的相应引脚就会下拉到地面,因此控制器会识别出某些按钮已经按下,并采取相应的措施,取决于所按下的按钮,它可能是增加候选票数或重置票数。
当按下代表相应人物的按钮时,控制器将其选中,并在其内存中增加相应的人物编号,在递增之后,它将在16x2 LCD显示屏上显示相应的人物得分。
下面逐步介绍了C代码,此基于微控制器的电子投票机的工作原理如下: