单片机课程设计报告投票统计器Word文档下载推荐.docx
《单片机课程设计报告投票统计器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告投票统计器Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
AT89C51接口图
单片机为AT89C51,其中U1为主机,U2为从机,通过XTAL1和XTAL2引入时钟信号。
主机通过P0口输出段码,P1口控制七段数码管的位选信号,P2口用于显示接收的05H。
从机的P0口的0、1、2、3、4用于键盘的行线,5、6、7用于键盘的列线,CPU通过扫描行列线得知哪个键被按下;
P1口控制七段数码管的位选信号,P2口用于输出段码。
主从机分别通过复位键控制;
P0口用于输出时需加上拉电阻。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
系统流程图
主机:
从机:
五、软件源程序
1.主机:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVTMOD,#20H
MOVTL1,#0FAH
MOVTH1,#0FAH
MOVSCON,#50H
MOV40H,#00H
MOV41H,#00H
MOV42H,#00H
MOVPCON,#00H
CLRTI
CLRRI
SETBTR1
MOVSBUF,#05H
SS1:
JNBTI,SS1
CLRTI
SS2:
JNBRI,SS2
MOVA,SBUF
MOVP2,A
MOVA,#0AAH
;
MOVA,#12H
MOVSBUF
LOP2:
JNBRI,LOP2
MOVA,SBUF
MOV40H,A
LOP3:
JNBRI,LOP3
MOV41H,A
LOP4:
JNBRI,LOP4
MOV42H,A
ACALLHBCD
ACALLFONT
ACALLDISP
AJMPLOP2
HBCD:
MOVA,40H
MOVB,#10
DIVAB
MOV31H,B
MOV30H,A
MOVA,41H
MOV33H,B
MOV32H,A
MOVA,42H
MOV35H,B
MOV34H,A
RET
FONT:
MOVR2,#6
MOVR0,#30H
FT:
MOVA,@R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV@R0,A
INCR0
DJNZR2,FT
TAB:
DB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,6FH
DISP:
MOVR1,#6
MOVA,#0FEH
LOOP2:
MOVP1,A
MOVP0,@R0
MOVR6,#0ffH
S0:
DJNZR6,S0
RLA
DJNZR1,LOOP2
2.从机
ORG0000H
MOVP2,#0
MOVTMOD,#20H
MOV20H,#00H
MOV21H,#00H
MOV40H,#00H
DLOP0:
JNBRI,DLOP0
CJNEA,#05H,DLOP0
MOVSBUF,A
DLOP1:
JNBTI,DLOP1
DLOP2:
JNBRI,DLOP2
DLP2:
LCALLKEY
LCALLHBCD
LCALLFONT
LCALLDISP
CJNEA,#0AAH,DLP2
LOOP:
LCALLFA
AJMPLOOP
FA:
MOVA,40H
MOVSBUF,A
DLOP3:
JNBTI,DLOP3
DLOP4:
JNBTI,DLOP4
DLOP5:
JNBTI,DLOP5
MOVA,40H
KEY:
MOVP0,#1FH
CLRP0.5
SETBP0.6
SETBP0.7
JNBP0.0,LOOP0
L1:
JNBP0.1,LOOP1
L2:
JNBP0.2,LOOP2
L3:
JNBP0.3,LOOP3
L4:
JNBP0.4,LOOP4
AJMPNEXT0
LOOP0:
JB00H,L1
JB05H,L1
JB10H,L1
INC40H
SETB00H
AJMPL1
LOOP1:
JB01H,L2
JB06H,L2
JB11H,L2
SETB01H
AJMPL2
JB02H,L3
JB07H,L3
JB12H,L3
SETB02H
AJMPL3
LOOP3:
JB03H,L4
JB08H,L4
JB13H,L4
SETB03H
AJMPL4
LOOP4:
JB04H,NEXT0
JB09H,NEXT0
JB14H,NEXT0
SETB04H
NEXT0:
CLRP0.6
SETBP0.5
JNBP0.0,LOP0
LL1:
JNBP0.1,LOP1
LL2:
JNBP0.2,LOP2
LL3:
JNBP0.3,LOP3
LL4:
JNBP0.4,LOP4
AJMPNEXT1
LOP0:
JB00H,LL1
JB05H,LL1
JB10H,LL1
SETB05H
INC41H
AJMPLL1
LOP1:
JB01H,LL2
JB06H,LL2
JB11H,LL2
SETB06H
AJMPLL2
JB02H,LL3
JB07H,LL3
JB12H,LL3
SETB07H
AJMPLL3
JB03H,LL4
JB08H,LL4
JB13H,LL4
SETB08H
AJMPLL4
JB04H,NEXT1
JB09H,NEXT1
JB14H,NEXT1
SETB09H
NEXT1:
CLRP0.7
JNBP0.0,LP0
LLL1:
JNBP0.1,LP1
LLL2:
JNBP0.2,LP2
LLL3:
JNBP0.3,LP3
LLL4:
JNBP0.4,LP4
AJMPNEXT2
LP0:
JB00H,LLL1
JB05H,LLL1
JB10H,LLL1
SETB10H
INC42H
AJMPLLL1
LP1:
JB01H,LLL2
JB06H,LLL2
JB11H,LLL2
SETB11H
AJMPLLL2
LP2:
JB02H,LLL3
JB07H,LLL3
JB12H,LLL3
SETB12H
AJMPLLL3
LP3:
JB03H,LLL4
JB08H,LLL4
MOVCA,@A+DPTR
DB3FH,06H,5BH,4JB13H,LLL4
SETB13H
AJMPLLL4
LP4:
JB04H,NEXT2
JB09H,NEXT2
JB14H,NEXT2
SETB14H
NEXT2:
FH
DLOOP2:
MOVP2,@R0
S0:
DJNZR6,S0
DJNZR1,DLOOP2
六、实习心得
通过本次单片机课程设计的学习,我学习并熟悉了怎样用单片机实现简易的投票统计器的制作。
此外,在这近一周的学习里,使我加深了对单片机的汇编指令的了解和应用,并且对小学期有了更深入的体会。
从对proteus初步了解到熟练运用,从对键盘程序的茫然到熟练编程,既有心酸也有喜悦,不过终归完成了实习目的。
在完成一个工程时,细节决定成功,在我连调试时发现好多意想不到的错误,都是因为在程序设计时考虑不周到所造成的。
例如:
在我们由于在显示时所设计的延时参数不等,因此数码管显示总是闪烁不定,通过合理的设计端点和认真阅读分析程序才找出原因。
在程序编写时一定要考虑在整体中自己程序的功能,并且要考虑整体的实现方式与自己编写的相吻合。
分组完成一个项目,每个人都是其中的一员都是整体的一部分,因此时刻要考虑的不仅是自己完成的功能,还要考虑以什么样的形式放到整体中。
在该次课程设计中,重点和难点是主从机总体编程以实现双机通信。
不过当遇到不懂的问题时,也会与别人一起讨论对策,经过商讨往往能找到解决办法。
唯一的不足是人数太少,只有五人15个键,没有达到十人30个键的目标,我会继续努力,争取逐步提高自己在单片机应用方面的能力,进一步完善投票器的功能。
八、参考文献
1.高峰.2007《单片微型计算机原理与接口技术》.科学出版社
2.包亚萍.2003《数字逻辑设计与数字电路实验技术》中国水利出版社
3.何立民.1990《MCS-51系列单片机应用系统设计》北京航空航天大学出版社
4.《集成电路速查手册》
5.上网查阅资料