单片机四路抢答器课程设计(共23页).doc
精选优质文档-倾情为你奉上课程设计(论文)题 目 名 称 简易四路抢答器设计 课 程 名 称 单片机原理及应用 学 生 姓 名 瞿永 学 号 系 、专 业 电气工程系 测控类 指 导 教 师 杨 波 2010年 7 月 1 日邵阳学院课程设计(论文)评阅表学生姓名 瞿永 学 号 系别 电气工程系 专业班级 08电本二班 题目名称 简易四路抢答器 课程名称 单片机原理及应用 一、学生自我总结回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近四星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在杨波师的辛勤指导下,终于游逆而解。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 学生签名: 瞿永 2010年 7月 2 日二、指导教师评定评分项目平时成绩论文答辩综合成绩权 重304030单项成绩目 录单片机四路抢答器设计摘 要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。本设计是以四路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT49C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。一,设计任务与要求1、抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 S3表示。2、设置一个系统清除和抢答控制开关S,该开关由主持人控制。3、 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号并保持到主持人将系统清除为止。二,方案设计与论证 方案:该系统采用51系列单片机AT49C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下: <1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。 <3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。其原理框图如下:选手开关触发锁存电路主持人开关抢答鉴别电路显示电路时间脉冲源三,硬件电路设计1、 抢答器的电路框图 如图11、1所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作"开始、停止"状态开关。抢答器框图图11.2抢答电路的接口电路如图11、1所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。扬声器给出声响提示。抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答必须由主持人再次操作“开始、停止”状态开关。2、单元电路设计(1)抢答器电路 参考电路如图11.2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。(2)时序控制电路设计时序控制电路是抢答器设计的关键,它要完成以下功能:a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路进人正常抢答工作状态。 b.当参赛选手按动抢答键时,扬声器发声,抢答电路停止工作。(3)复位电路的设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:2.3.3外部震荡电路外部震荡电路单片机必须在AT49C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。2.3.4报警电路设计报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性图11.4报警电路图。4951驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答必须由主持人再次*作"清除"和"开始"状态开关。图面是数字抢答器的报警电路图。其中555构成多谐振荡器,振荡频率fo143(RI2R2)C,其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。四,软件设计1、系统主程序设计为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下P1.7按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。(1)主程序流程图?2、主程序清单ORG 0000H LJMP STARTUP1 ORG 000BH LJMP dingshi ORG 001BH LJMP fengmingqi ORG 0400Hmain: LCALL init SETB TR0 MOV TH0,#0x3C MOV TL0,#P3 MOV 0x0E,#0x00 MOV 0x0F,#0x01 MOV 0x10,#0x00 MOV 0x11,#0x01 MOV R3,#0x01 MOV R2,#0x00 a12: JB P0.0,a1 MOV 0x0E,#0x00 MOV 0x0F,#0x01 MOV 0x10,#0x00 MOV 0x11,#0x01 MOV R2,#0x00 MOV R3,#0x01 CLR 0x20.0 CLR A MOV 0x09,A SETB TR0 MOV TH0,#0x3C MOV TL0,#P3 CLR TR1 MOV 0x0A,A MOV 0x0C,A MOV 0x0D,A MOV DPTR,#0x0B4C MOVC A,A+DPTR MOV P3,A MOV DPTR,#shuma CLR A MOVC A,A+DPTR MOV 0xA0,A a1: MOV A,0x0F ORL A,0x0E JNZ a2 LJMP a3 a2: MOV A,R3 ORL A,R2 JNZ a4 LJMP a3 a4: MOV A,0x11 ORL A,0x10 JNZ a5 LJMP a3 a5: MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,B MOV A,R7 RLC A SUBB A,ACC MOV R6,A MOV A,#0x45 ADD A,R7 MOV DPL,A MOV A,#0x0B ADDC A,R6 MOV DPH,A CLR A MOVC A,A+DPTR MOV 0xA0,A ;a4: MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,B CLR C MOV A,R7 XRL A,#P0 SUBB A,#SP JC a7 MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,A RLC A SUBB A,ACC MOV R6,A MOV A,R7 ADD A,#0x04 MOV R7,A CLR A ADDC A,R6 MOV R6,A MOV A,R7 XRL A,#0x0A ORL A,R6 JZ a4 MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,A RLC A SUBB A,ACC MOV R6,A MOV A,#0x4D ADD A,R7 MOV DPL,A MOV A,#0x0B ADDC A,R6 MOV DPH,A CLR A MOVC A,A+DPTR MOV P3,Aa4: MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,A RLC A SUBB A,ACC MOV R6,A MOV A,R7 ADD A,#0x04 MOV R7,A CLR A ADDC A,R6 MOV R6,A MOV A,R7 XRL A,#0x0A ORL A,R6 JNZ a9 MOV DPTR,#shuma SJMP a10 a7: MOV A,0x09 MOV B,#0x0A LCALL a6 MOV R7,A RLC A SUBB A,ACC MOV R6,A MOV A,#0x4C ADD A,R7 MOV DPL,A MOV A,#0x0B ADDC A,R6 MOV DPH,A CLR A a10: MOVC A,A+DPTR MOV P3,A a9: JNB 0x20.0,a3 CLR A MOV R2,A MOV R3,A CLR 0x20.0 MOV DPTR,#0x0B4C MOVC A,A+DPTR MOV P3,A MOV DPTR,#shuma CLR A MOVC A,A+DPTR MOV 0xA0,A CLR TR0 a3: MOV A,0x11 ORL A,0x10 JNZ a11 LJMP a12 a11: MOV A,0x0F ORL A,0x0E JNZ a13 LJMP a12 a13: MOV A,P1 ANL A,#0x0F MOV R1,A CLR A MOV R4,A MOV R5,A a17: CLR C MOV A,R5 SUBB A,#0x04 MOV A,R4 XRL A,#P0 SUBB A,#P0 JC a14 LJMP a12 a14: MOV A,#0x4F ADD A,R5 MOV DPL,A MOV A,#0x0B ADDC A,R4 MOV DPH,A CLR A MOVC A,A+DPTR XRL A,R1 JNZ a15 LCALL delay MOV A,#0x4F ADD A,R5 MOV DPL,A MOV A,#0x0B ADDC A,R4 MOV DPH,A CLR A MOVC A,A+DPTR XRL A,R1 JNZ a15 MOV A,R3 ORL A,R2 JNZ a16 CLR C MOV A,#0x09 SUBB A,R5 MOV R7,A CLR A SUBB A,R4 MOV R6,A MOV A,#0x45 ADD A,R7 MOV DPL,A MOV A,#0x0B ADDC A,R6 MOV DPH,A CLR A MOVC A,A+DPTR MOV 0xA0,A MOV P3,#0xFF CLR A MOV 0x10,A MOV 0x11,A ORL P1,#B SJMP a15 a16: SETB TR1 MOV TH1,#0xFF MOV TL1,#0xFF CLR TR0 CLR A MOV 0x0E,A MOV 0x0F,A CLR C MOV A,#0x09 SUBB A,R5 MOV R7,A CLR A SUBB A,R4 MOV R6,A MOV A,#0x45 ADD A,R7 MOV DPL,A MOV A,#0x0B ADDC A,R6 MOV DPH,A CLR A MOVC A,A+DPTR MOV 0xA0,A CLR C MOV A,#0x09 SUBB A,R5 MOV 0x0A,A MOV P3,#0xFF LJMP a12 a15: INC R5 CJNE R5,#0x00,a14 INC R4 a14: LJMP a17 a6: CLR F0 JNB 0xF0.7,a19 CPL F0 XRL B,#0xFF INC B a19: JNB 0xE0.7,a20 CPL F0 CPL A INC A DIV AB XRL B,#0xFF INC B SJMP a21 a20: DIV AB a21: JNB F0,a22 CPL A INC A a22: RET a40: CLR F0 MOV A,R4 JNB 0xE0.7,a23 CPL F0 CLR A CLR C SUBB A,R5 MOV R5,A CLR A SUBB A,R4 MOV R4,A a23: MOV A,R6 JNB 0xE0.7,a24 CPL F0 CLR A CLR C SUBB A,R7 MOV R7,A CLR A SUBB A,R6 MOV R6,A LCALL a25 CLR C CLR A SUBB A,R5 MOV R5,A CLR A SUBB A,R4 MOV R4,A SJMP a26 a24: LCALL a25 a26: JNB F0,a27 CLR C CLR A SUBB A,R7 MOV R7,A CLR A SUBB A,R6 MOV R6,A a27: RET a25: CJNE R4,#0x00,a24 CJNE R6,#0x00,a29 MOV A,R7 MOV B,R5 DIV AB MOV R7,A MOV R5,B RET a24: CLR A XCH A,R4 MOV R0,A MOV B,#0x04 a31: MOV A,R7 ADD A,R7 MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R4 RLC A MOV R4,A MOV A,R6 SUBB A,R5 MOV A,R4 SUBB A,R0 JC a30 MOV R4,A MOV A,R6 SUBB A,R5 MOV R6,A INC R7 a30: DJNZ B,a31 CLR A XCH A,R6 MOV R5,A RET a29: MOV A,R5 MOV R0,A MOV B,A MOV A,R6 DIV AB JB OV,a32 MOV R6,A MOV R5,B MOV B,#0x04 a35: MOV A,R7 ADD A,R7 MOV R7,A MOV A,R5 RLC A MOV R5,A JC a33 SUBB A,R0 JNC a34 DJNZ B,a35 RET a33: CLR C SUBB A,R0 a34: MOV R5,A INC R7 DJNZ B,a35 a32: RET fengmingqi:PUSH ACCPUSH BPUSH DPHPUSH DPLPUSH PSWMOV PSW,#0x00PUSH 0x00PUSH 0x04PUSH 0x05PUSH 0x06PUSH 0x07MOV TH1,#0x3CMOV TL1,#P3INC 0x0DMOV A,0x0DJNZ a36INC 0x0Ca36:CPL AORL A,0x0CJNZ a37MOV 0x0C,AMOV 0x0D,#0x0Ba37:SETB CMOV A,0x0DSUBB A,#0x0AMOV A,0x0CXRL A,#P0SUBB A,#P0JNC a34CPL 0xB0.7SJMP a39a34:SETB 0xB0.7a39:MOV R6,0x0CMOV R7,0x0DMOV R4,#0x00MOV R5,#0x0ALCALL a40MOV A,R5ORL A,R4JNZ a41MOV A,0x04JNZ a42MOV 0x04,#0x01MOV 0xA0,#0xFFSJMP a41a42:MOV 0x04,#0x00MOV R7,0x0AMOV A,R7RLC ASUBB A,ACCMOV R6,AMOV A,#0x45ADD A,R7MOV DPL,AMOV A,#0x0BADDC A,R6MOV DPH,ACLR AMOVC A,A+DPTRMOV 0xA0,Aa41:POP 0x07POP 0x06POP 0x05POP 0x04POP 0x00POP PSWPOP DPLPOP DPHPOP BPOP ACCRETI dingshi:PUSH ACCPUSH PSWMOV TH0,#0x3CMOV TL0,#P3INC 0x0BMOV A,0x0BCJNE A,#0x14,a43INC 0x09MOV 0x0B,#0x00a43:MOV A,0x09CJNE A,#0x1E,a44MOV 0x09,#0x00SETB 0x20.0CLR TR0a44:POP PSWPOP ACCRETI init:MOV TMOD,#0x11SETB ET0SETB ET1CLR TR0CLR TR1SETB EAANL P1,#0x0FRET delay:CLR AMOV R7,AMOV R6,Aa46:INC R7CJNE R7,#0x00,a45INC R6a45:MOV A,R7XRL A,#0x0Ca47:ORL A,R6JNZ a46RET shuma:PUSH P1SJMP a47ANL C,0x90.2SUBB A,R1ANL C,/0xA0.4MOV R1,AKeyBoard:INC R6INC R5INC R3INC R1 STARTUP1:MOV R0,#0x7FCLR A IDATALOOP:MOV R0,ADJNZ R0,IDATALOOPMOV SP,#0x20LJMP main END五,器件选型方案表1 器件选型方案的详细清单器件名称规格型号数量微处理器AT49C511极性电容10uF1电阻3WTT10K9电容20PF3晶振12MHZ1按钮15共阴4位7段数码管SMG SMK1扬声器1六,调试:(1) 开机按电源开关,显示屏左边的"抢答"指示灯亮,数码管显示。(2) 测试各组抢答按键试按一下各组的抢答按钮,应立即显示该组的组别数字,同时机内喇叭发出"叮咚"的提示音,按"取消"键,返回"0"闪烁状态。(3) 违规抢答当主持人读题过程中,而未宣布抢答开始时按下抢答按钮。主显示屏将显示该违规组号,及发出提示音。及该组的红灯亮起。七,结论与心得这次课程设计老师给我们安排了一个星期的时间,可以说是比较充裕的。虽然如此,我还是很用心的做设计,利用了周六周日两天的时间在宿舍思考本次的课程设计,拿到题目,感觉太繁杂了,不知怎么下手,虽然这些知识以前都有接触过,但也只是分部分来接触,而这次的设计是要对前面几次实验的一个综合,真的很难。也翻阅了一些资料,并自己事先编写好了程序,到了周一去到机房时候,把自己写的程序烧进去芯片里面,发现不行,那些数字闪动得非常厉害,自己检查了好久好久,但还是发现不了问题,之后问了同学,才知是我把段码搞错了,我用的是共阳位选,但数据表的段码我却用了共阴的段码,所以不能在数码管上正常显示。通过运用单片机设计四路抢答器程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。特别是Proteus仿真软件的使用,不知是由于电脑的问题还是怎么,这个软件的安装就花了我很长的时间,好不容易安装好了,又对软件的使用一点都不熟悉,要从头开始学起,对着老师发给我们的芯片原理进行仿真画图,刚刚开始时候真的很难下手,因为是英文版的软件,很多东西都看不太明白,都是通过自己一个个来慢慢琢磨,才把仿真图画了出来,然后把写好的程序导入芯片,进行仿真,当看到程序正常运行的那一刻,心中真是有几分的喜悦。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的较简单的课程制作(四路抢答器),可是平心而论,也耗费了我不少的心血。 对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆。八,参考文献151单片机原理与实践/高卫东,辛友顺,韩彦征编著.北京航空航天大学出版社,2004.12刘红玲、邵晓根,微机原理与接口技术,中国电力出版社,2006年第一版3冯博琴,微型计算机原理及接口技术,清华大学出版社4艾德才,微型计算机原理与接口技术,高等教育出版社5沈美明,IBM-PC汇编语言程序设计,清华大学出版社6 任致程,经典集成电路400例机械工业出版社,20027 薛栋梁,单片机原理及应用,中国水利水电出版社,20014 谢筑森,张辉等,单片机开发与典型应用设计,中国科学技术大学出版社,专心-专注-专业