《单片机课程设计报告投票统计器.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告投票统计器.doc(14页珍藏版)》请在三一办公上搜索。
1、单片机课程设计报告 投票统计器 专业:电气工程及其自动化班级: 学号: 姓名: 日期: 2011-7-2一、 设计目的综合运用单片机的主要性能,完成一个实用电路的设计和制作,利用MSC-51单片机为控制核心,设计拥有投票统计功能的从机,用于表决活动,并将统计结果实时上传主机。通过简易投票系统实现数据的统计与远程传送。二、 实验器材计算机一台,Proteus仿真软件wave6000编程软件三、设计要求1有五个人参与投票,每个人有同意、不同意、弃权三个按键,单片机分别统计三种键的人数,并用动态显示方式显示投票结果。2保证每人仅能投一次票,再投则无效。3六个数码管可以显示同意、不同意、弃权的数量。4
2、主从机分别设有复位键,按下键时两个单片机重新启动。5主机向从机发送的05H时,从机则回发给主机05H,而主机通过八个发光二极管显示接收到05H(以二进制形式显示)。当主机发的不是AAH时,从机能独立运行,统计同意、不同意、放弃的数量,并用数码管显示投票结果;当主机向从机发送AAH时,从机向主机发送当前投票结果,此后,主从机同步显示投票结果。(设从机地址为05H)。四、 硬件原理图AT89C51接口图单片机为AT89C51,其中U1为主机,U2为从机,通过XTAL1和XTAL2引入时钟信号。主机通过P0口输出段码, P1口控制七段数码管的位选信号,P2口用于显示接收的05H。从机的P0口的0、1
3、、2、3、4用于键盘的行线,5、6、7用于键盘的列线, CPU通过扫描行列线得知哪个键被按下;P1口控制七段数码管的位选信号,P2口用于输出段码。主从机分别通过复位键控制;P0口用于输出时需加上拉电阻。P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) 系统流程图开始主机:初始化发送05H等待从机发送的05H接收05H,发
4、AAH接收05H,发非AAH接收从机数据并显示开始从机:初始化接收05H发送05H判断接收的是否是AAH独立运行,显示统计的投票结果统计投票结果,发送给主机并显示五、 软件源程序1.主机:ORG 0000H AJMP MAIN ORG 0030HMAIN:MOV TMOD,#20H MOV TL1,#0FAH MOV TH1,#0FAH MOV SCON,#50H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV PCON,#00H CLR TI CLR RI SETB TR1 MOV SBUF,#05H SS1: JNB TI,SS1 CLR TISS2:
5、 JNB RI,SS2 CLR RI MOV A,SBUF MOV P2,A MOV A,#0AAH ;MOV A,#12H MOV SBUF LOP2:JNB RI,LOP2 CLR RI MOV A,SBUF MOV 40H,ALOP3: JNB RI,LOP3 CLR RI MOV A,SBUF MOV 41H,ALOP4: JNB RI,LOP4 CLR RI MOV A,SBUF MOV 42H,A ACALL HBCD ACALL FONT ACALL DISP AJMP LOP2HBCD:MOV A,40H MOV B,#10 DIV AB MOV 31H,B MOV 30H,A
6、 MOV A,41H MOV B,#10 DIV AB MOV 33H,B MOV 32H,A MOV A,42H MOV B,#10 DIV AB MOV 35H,B MOV 34H,A RETFONT:MOV R2,#6 MOV R0,#30H FT:MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV R0,A INC R0 DJNZ R2,FT RETTAB: DB 3FH,06H,5BH,4FH DB 66H,6DH,7DH,07H DB 7FH,6FHDISP:MOV R1,#6 MOV A,#0FEH MOV R0,#30HLOOP2:MOV P1,A
7、 MOV P0,R0 MOV R6,#0ffH S0:DJNZ R6,S0 INC R0 RL A DJNZ R1,LOOP2 RET2.从机 ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV P2,#0 MOV TMOD,#20H MOV TL1,#0FAH MOV TH1,#0FAH MOV 20H,#00H MOV 21H,#00H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV PCON,#00H CLR TI CLR RI MOV SCON,#50H SETB TR1DLOP0:JNB RI,DLOP0 CLR RI
8、MOV A,SBUF CJNE A,#05H,DLOP0 MOV SBUF,A DLOP1:JNB TI,DLOP1 CLR TIDLOP2:JNB RI,DLOP2 CLR RIDLP2: LCALL KEY LCALL HBCD LCALL FONT LCALL DISP MOV A,SBUF CJNE A,#0AAH,DLP2LOOP: LCALL KEY LCALL FA LCALL HBCD LCALL FONT LCALL DISP AJMP LOOPFA: MOV A,40H MOV SBUF,ADLOP3:JNB TI,DLOP3 CLR TI MOV A,41H MOV SB
9、UF,ADLOP4:JNB TI,DLOP4 CLR TI MOV A,42H MOV SBUF,ADLOP5:JNB TI,DLOP5 CLR TI RETHBCD:MOV A,40H MOV B,#10 DIV AB MOV 31H,B MOV 30H,A MOV A,41H MOV B,#10 DIV AB MOV 33H,B MOV 32H,A MOV A,42H MOV B,#10 DIV AB MOV 35H,B MOV 34H,A RETKEY: MOV P0,#1FH CLR P0.5 SETB P0.6 SETB P0.7 JNB P0.0,LOOP0L1: JNB P0.1
10、,LOOP1L2: JNB P0.2,LOOP2L3: JNB P0.3,LOOP3L4: JNB P0.4,LOOP4 AJMP NEXT0LOOP0: JB 00H,L1 JB 05H,L1 JB 10H,L1 INC 40H SETB 00H AJMP L1LOOP1: JB 01H,L2 JB 06H,L2 JB 11H,L2 INC 40H SETB 01H AJMP L2LOOP2: JB 02H,L3 JB 07H,L3 JB 12H,L3 INC 40H SETB 02H AJMP L3LOOP3: JB 03H,L4 JB 08H,L4 JB 13H,L4 INC 40H S
11、ETB 03H AJMP L4LOOP4: JB 04H,NEXT0 JB 09H,NEXT0 JB 14H,NEXT0 INC 40H SETB 04HNEXT0: MOV P0,#1FH CLR P0.6 SETB P0.5 SETB P0.7 JNB P0.0,LOP0LL1: JNB P0.1,LOP1LL2: JNB P0.2,LOP2LL3: JNB P0.3,LOP3LL4: JNB P0.4,LOP4 AJMP NEXT1LOP0: JB 00H,LL1 JB 05H,LL1 JB 10H,LL1 SETB 05H INC 41H AJMP LL1LOP1: JB 01H,LL
12、2 JB 06H,LL2 JB 11H,LL2 SETB 06H INC 41H AJMP LL2LOP2: JB 02H,LL3 JB 07H,LL3 JB 12H,LL3 SETB 07H INC 41H AJMP LL3LOP3: JB 03H,LL4 JB 08H,LL4 JB 13H,LL4 SETB 08H INC 41H AJMP LL4LOP4: JB 04H,NEXT1 JB 09H,NEXT1 JB 14H,NEXT1 SETB 09H INC 41HNEXT1: MOV P0,#1FH CLR P0.7 SETB P0.5 SETB P0.6 JNB P0.0,LP0LL
13、L1: JNB P0.1,LP1LLL2: JNB P0.2,LP2LLL3: JNB P0.3,LP3LLL4: JNB P0.4,LP4 AJMP NEXT2LP0: JB 00H,LLL1 JB 05H,LLL1 JB 10H,LLL1 SETB 10H INC 42H AJMP LLL1LP1: JB 01H,LLL2 JB 06H,LLL2 JB 11H,LLL2 INC 42H SETB 11H AJMP LLL2LP2: JB 02H,LLL3 JB 07H,LLL3 JB 12H,LLL3 INC 42H SETB 12H AJMP LLL3LP3: JB 03H,LLL4 J
14、B 08H,LLL4 MOVC A,A+DPTR MOV R0,A INC R0 DJNZ R2,FT RETTAB: DB 3FH,06H,5BH,4 JB 13H,LLL4 INC 42H SETB 13H AJMP LLL4LP4: JB 04H,NEXT2 JB 09H,NEXT2 JB 14H,NEXT2 INC 42H SETB 14HNEXT2: RETFONT:MOV R2,#6 MOV R0,#30H FT:MOV A,R0 MOV DPTR,#TABFH DB 66H,6DH,7DH,07H DB 7FH,6FHDISP:MOV R1,#6 MOV A,#0FEH MOV
15、R0,#30HDLOOP2:MOV P1,A MOV P2,R0 MOV R6,#0ffHS0: DJNZ R6,S0 INC R0 RL A DJNZ R1,DLOOP2 RET六、 实习心得通过本次单片机课程设计的学习,我学习并熟悉了怎样用单片机实现简易的投票统计器的制作。此外,在这近一周的学习里,使我加深了对单片机的汇编指令的了解和应用,并且对小学期有了更深入的体会。从对proteus初步了解到熟练运用,从对键盘程序的茫然到熟练编程,既有心酸也有喜悦,不过终归完成了实习目的。在完成一个工程时,细节决定成功,在我连调试时发现好多意想不到的错误,都是因为在程序设计时考虑不周到所造成的。例如:
16、在我们由于在显示时所设计的延时参数不等,因此数码管显示总是闪烁不定,通过合理的设计端点和认真阅读分析程序才找出原因。在程序编写时一定要考虑在整体中自己程序的功能,并且要考虑整体的实现方式与自己编写的相吻合。分组完成一个项目,每个人都是其中的一员都是整体的一部分,因此时刻要考虑的不仅是自己完成的功能,还要考虑以什么样的形式放到整体中。在该次课程设计中,重点和难点是主从机总体编程以实现双机通信。不过当遇到不懂的问题时,也会与别人一起讨论对策,经过商讨往往能找到解决办法。 唯一的不足是人数太少,只有五人15个键,没有达到十人30个键的目标,我会继续努力,争取逐步提高自己在单片机应用方面的能力,进一步完善投票器的功能。八、参考文献 1. 高 峰.2007单片微型计算机原理与接口技术.科学出版社2. 包亚萍.2003数字逻辑设计与数字电路实验技术中国水利出版社 3. 何立民.1990 MCS-51系列单片机应用系统设计北京航空航天大学出版社4.集成电路速查手册5.上网查阅资料