※※※※※※※※※
※※
※※
※※
※※※※※※※※※
单片机课程设计报告书
课题名称投票统计器
姓名
学号
院、系、部
专业
指导教师
201日
投票统计器
一、设计目的
通过对通票统计器的设计,实现每人有同意、不同意、弃权三种投票功能,并显示投票的动态结果,并做出实物。
二、设计要求
1. 每个人有同意、不同意、弃权三个按键,单片机分别统计三种键的人数,并用动态显示方式显示投票结果。
2.每人仅能投一次票,再投则无效。
3.可显示同意、不同意、弃权的数量。
4.设有复位键。
5. 要求做出实物。
(本机地址为05H,当接到上位机发的05H时,则回发05H当接到上位机发的AAH时,则将投票结果发出)
三、电路及连线设计
硬件电路图
四、使用说明
本实验设计可以实现3个人投票,每人有同意,不同意,弃权三个选项,分别对应开关1、2、3、4、5、6,甲按下1、2、3号开关中的任意一个键进行投票,乙同样动作按下4、5、6中的一个键,丙也同样动作按下7、8、9中的一个键。3人都按键完毕后实现了投票,三个数码管分别显示统计的同意、不同意、弃权的总票数,每人只能投票一次,多投无效。
五、流程图设计
六、程序设计如下:
ORG 0000H ;初始化
AJMP START
ORG 0030H
START: MOV 30H,#00H
MOV R0,#30H
START0:LCALL KEY ;开始键盘扫描 JMP START0
KEY:MOV P3,#70H
MOV A,P3
CPL A
ANL A,#70H
MOV 50H,A
JZ LED ;KEY
LCALL DY500us
MOV P3,#70H
MOV A,P3
CPL A
ANL A,#70H
CJNE A,50H,LED ;KEY
LCALL XYL ;找出行号列号 LCALL JS ;计算具体键号 LCALL LED
OVER1:RET
LED:MOV R0,#30H
MOV R2,#01111111B ;位码选择
LP0:MOV P1,#0FFH
MOV A,R2
MOV P1,A
SETB P2.1
MOV P1,A
CLR P2.1
MOV A,@R0
SETB P2.0
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查表
MOV P1,A ;送出P1显示 CLR P2.0
INC R0
LCALL DY170us
MOV A,R2
SETB C
RR A
JB ACC.4,LP0
RET
XYL:MOV R2,#0FDH
MOV R3,#01H
LL0:MOV P3,R2
MOV A,P3
L0:JB ACC.4,L1
MOV A,#00H
RET
L1:JB ACC.5,L2
MOV A,#01H
RET
L2:JB ACC.6,NEXT
MOV A,#02H
RET
NEXT:MOV A,R2
JNB ACC.3,START0
SETB C
RLC A
MOV R2,A
INC R3
JMP LL0
JS:RL A
RL A
ADD A,R3
REN1:MOV R5,41H ;第一个人是否投票 CJNE R5,#00H,REN2
TY1:CJNE A,#01H,FD1
INC 30H
MOV 41H,#01H
JMP REN2
FD1:CJNE A,#02H,QQ1
INC 31H
MOV 41H,#01H
JMP REN2
QQ1:CJNE A,#03H,REN2
INC 32H
MOV 41H,#01H
REN2:MOV R5,42H ;第二个人是否投票 CJNE R5,#00H,REN3
TY2:CJNE A,#05H,FD2
INC 30H
MOV 42H,#01H
FD2:CJNE A,#06H,QQ2
INC 31H
MOV 42H,#01H
JMP REN3
QQ2:CJNE A,#07H,REN3
INC 32H
MOV 42H,#01H
REN3:MOV R5,43H ;第三个人是否投票 CJNE R5,#00H,OVER
TY3:CJNE A,#09H,FD3
INC 30H
MOV 43H,#01H
JMP OVER
FD3:CJNE A,#0AH,QQ3
INC 31H
MOV 43H,#01H
JMP OVER
QQ3:CJNE A,#0BH,OVER
INC 32H
MOV 43H,#01H
OVER:RET
DY170us:MOV R1,#5
MOV R5,#17
DL:DJNZ R1,DL
DJNZ R5,DL
RET
DY500us:MOV R6,#50
MOV R7,#50
DLL:DJNZ R6,DLL
DJNZ R7,DLL
RET
TAB:DB 3FH,06H,5BH,4FH,66H ;表
SJMP $
END
七、设计总结:
这是这个学期的最后一次实验,是一个综合实验。开始还以为特别难,后来慢慢也就做下来了,虽然做的不是特别好。通过一个学期的学习发现《单片机》的确是一门很有用的课程,对今后的学习工作有很大的帮助,因为单片机目前在社会中有在和极其广泛的用途,各个地方都离不开它的。但是我觉得就我们在课堂上学到的这点知识还是极其有限的,更多的东西还靠我们自己去课下学习。老师只起到一个引导我们学习的作用,关键还是在于我们自己,这就是所谓的“师傅领进门,修行在个人”吧。冰冻三尺非一日之寒,滴水穿石非一时之功,谨以此自勉!
通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际。
再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。
八、参考文献:
[1] 高峰.单片微型计算机原理与接口技术.科学出版社,2007
[2] 刘守义.单片机技术基础[M].西安电子科技大学出版社,2007
[3]李广弟.单片机基础[M].北京航空航天出版社,2001