单片机抢答器课程设计设计.doc_第1页
单片机抢答器课程设计设计.doc_第2页
单片机抢答器课程设计设计.doc_第3页
单片机抢答器课程设计设计.doc_第4页
单片机抢答器课程设计设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录第1章 绪论 3第2章 系统总体方案设计 42.1 设计思路及原理42.2总体方案设计方框图 4第3章 系统硬件的设计 63.1 单片机的选择63.2蜂鸣器电路 63.3按键电路 73.4数码管及LED显示电路 8第4章 系统软件的设计104.1程序功能流程图104.2单片机内存单元分布114.3答题倒计时流程图及程序114.4子程序列表14第5章 软硬件综合调试155.1Proteus软件仿真 155.2 硬件电路调试 16 5.3软硬件联合调试16第6章 总结18参考文献 19附 录 20(1)附1源程序代码(2)附2抢答器硬件实物图第1章 绪 论 抢答器为许多学校,组织及企业等丰富了他们的业余文化生活。在知识竞赛中,特别是做抢答题时,在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要有一个系统来完成这个任务。如果在抢答中,只靠人的视觉是很难判断出哪组先答题。目前,市场上有很多种类的抢答器,有些采用继电器互锁,有些采用数字电路构成但是价格却很高。对于一般的需要经常进行抢答赛的学校或组织来说,这是一笔不小的开支。在学习过程中,我发现由数字电路构成的抢答器,有抗干扰能力弱,而且因为采用74ls148优先编码,抢答有优先级等缺点,这样就对选手不公平;由继电器互锁构成的抢答器同样也有这个缺陷。而利用单片机来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出来,同时,硬件开销小,主要采用软件编程实现抢答功能,因此成本很低,且设计比较人性化。本设计能够对前面所讲到的几种抢答器的不足之处进行弥补,而且功能强且灵活。 附录1即为我课程设计最终的产品外貌。第2章 总体方案设计2.1 设计的思路及原理 采用单片机STC89C52,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程,利用软件编程即可完成设计任务。分析:抢答结果可以区分选手按键时间先后达微秒级,准确度很高,硬件开销少;操作起来也很方便,而且可升级性很强。方便对答题时间进行设计。用汇编语言将整体程序分为几个子程序,然后相应进行调用即可;数码管采用动态扫描的形式进行设计。2.2总体方案设计方框图2.2.1整体电路分析图2.1 系统主要功能模块本系统采用单片机作为微控制器,分为四个模块(如上图1.0):抢答开关模块, 数码管及LED显示,,蜂鸣器电路。单片机I/O口资源的利用:P2口高四位作为四路选手按键输入,P1口高四位作为显示四路选手相应状态指示输出,P0口(已外接了上拉电阻)作为数码管显示输出,P2口低四位作为数码管选通输入,P3.7接蜂鸣器,P3.2,P3.6分别接启动键,清零键。采用12MHZ晶振。电源采用5V,主要技术指标:准确度达微秒级,以市电220V50HZ为输入电源,经变压后成5V电源输入。该电路经过设计分析,绘图,焊接、仿真调试等工作后抢答器成形。2.2.2功能设计(1)通电后,系统会发出“嘀,嘀”两声鸣叫,提示主持人可以工作了。在主持人没有按启动键之前,这时系统会不停地检测各选手是否有人按键(即作弊),如果有选手按键,则进入作弊状态:报警,且相应LED点亮指示作弊者,直到选手不按键,且主持人按下清零键后才能回到初始状态。否则继续报警,相应LED点亮。(2)若在主持人没按启动键前,没有检测到选手的按键,则当主持人按启动键(主持人按下此键时,数码管的小数点会点亮,释放此键后,小数点会熄灭,以指示选手开始抢答)后,选手才真正进入抢答。抢答后,数码管显示相应选手号,相应LED点亮,蜂鸣器“嘀”一声,并且开始进行答题倒计时,时间到后蜂鸣器再“嘀”一声提示答题时间到。(3)当主持人按清零键后,系统进入下一次抢答状态。第3章 系统硬件的设计3.1单片机的选择根据初步设计方案的分析,设计这样一个简单的应用系统,可选择带有EPROM的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。Intel公司的8051和8751芯片均可以选用。其他一些STC系列相兼容的芯片,如ATMEL公司生产的AT89C系列单片机。采用STC系列的单片机相比有两大优势:(1)片内程序存储器采用闪速存储器,使程序得写入更加方便。(2)提供了更小的芯片,使整个硬件电路的体积更小。他的较小体积、良好的性能价格比倍受青睐。 本设计我们采用了STC89C52单片机,他具有程序加密功能且物美价廉,经济实用。 图3.1引脚图3.2蜂鸣器电路 蜂鸣器发声原理:是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此要增加一个电流放大的电路。通过一个三极管来放大驱动蜂鸣器。如图3.2所示:当P3.7输出低电平时,三极管饱和导通,电源直接给蜂鸣器供电,使它发出鸣叫。图 3.2 蜂鸣器电路3.3按键电路如图3.3所示,虽然P1口内部有上拉电阻,但为确保所有按键在初始状态一定为高电平,减少干扰,我在P1口再接了上拉电阻,这样就提高芯片输入信号的噪声容限增强抗干扰能力,保证初始状态P1口为高电平,万无一失了。S1-S4分别为1号、2号、3号、4号抢答者。都为独立式键盘。 图3.3 按键电路3.4数码管及LED显示电路3.3.1数码管与LED结合显示数码管用来显示抢答选手序号以及进行倒计时显示,而LED也同样用来显示相应选手号,数码管比较显而易见,但是万一数码管出现问题,某一段码不能点亮,则会出现错误的结果,而且又不容易查出故障。因此采用LED和数码结合显示电路,虽然多占用了单片机一个P1口,但是结果可靠,出现问题也容易查出来。3.3.2 LED显示电路每个LED(如图3.4)通过电阻限流计算:限流电阻采用1K排阻。各个LED灯分别对应选手号。在单片机中采用低电平点亮的方式。图3.4 LED显示电路3.3.3数码管电路四个组合数码管为共阳极(如图3.5):经过电阻限流分析采用1K的电阻限流,用P2口的低四位来选通数码管的输出,P0口作数码管输出驱动口。硬件中用三极管来作驱动电路。显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动态显示方法。 图3.5 数码管显示电路第4章 系统软件的设计4.1程序功能流程图 图4.1程序功能流程图4.2单片机内存单元分布表(1)内存空间分配地址分配作用60H78H堆栈区79H7EHLED段码显示缓冲区,存储显示字符的BCD码.高四位有效00H软件标志,代表主持人有没有允许抢答01H软件标志,代表1号有没有犯规02H软件标志,代表2号有没有犯规03H软件标志,代表3号有没有犯规04H软件标志,代表4号有没有犯规1000H字形码定义区间08H0FH计数用的工作寄存器(1区R0R7)4.3答题倒计时流程图及程序显示器与单片机之间的连接,由于单片机本身的端口在实验室里已经被指定了特殊功能端口,用于与别的芯片连接。所以单片机的连接通过并行接口芯片8952,与单片机的P0口的8根数据总线连接。所以,显示子程序的一开始就是初始化8952,然后把初态值通过8952的P0口送到显示器上。倒计时的倒计初值送到寄存器R0,接着判断寄存器R0是否已经倒数到了0,到了就转到结束,返回到主程序。若还没有为0,则把对寄存器R0应的字行码送到LED显示器上。再判断到1S没,没有则继续把当前的寄存器R0的字行码送LED显示器,形成动态扫描显示。当1S到了,转中断服务程序,把寄存器R0内容自减一,然后返回到判断寄存器R0是否为0,如此循环,直到倒计值为0时调处理子程序,回到主程序。- 28 - - 图4.2显示程序流程图;#答题倒计时显示子程序#XIANSHI:SETB P3.7MOV TMOD,#01H ;查询法 方式1MOV R2,#40XS0:MOV TH0,#5CHMOV TL0,#0B0HXS:MOV 40H,#0F7H;动态扫描显示MOV DPTR,#TABMOV P2,40H ;选通计时个位MOV A,30HMOVC A,A+DPTR ;查表选出显示字MOV P0,ALCALL DELAY3MOV P0,#0FFH ;P0口清零MOV A,40HRR AMOV 40H,AMOV P2,40H ;选通计时十位MOV A,31HMOVC A,A+DPTRMOV P0,ALCALL DELAY3MOV P0,#0FFH MOV A,40H RR A MOV 40H,A MOV P2,40H;选通标志位 MOV P0,#0BFH LCALL DELAY3 MOV P0,#0FFH MOV A,40H RR A MOV 40H,A MOV P2,40H ;选通优先抢答者号 MOV A,32H MOVC A,A+DPTR MOV P0,A;显示抢答者号 LCALL DELAY3 MOV P0,#0FFH SETB TR0 JBC TF0,XS1XS1: DJNZ R5,XS0JIA: MOV R2,#40 MOV A,30H CJNE A,#0,JIA1 MOV 30H,#9 MOV A,31H CJNE A,#0,JIA10 MOV 31H,#0JIA10: DEC 31H AJMP XS0JIA1: DEC 30H MOV A,30H CJNE A,#0,XS0 MOV A,31H CJNE A,#0,XS0 ;计时时间到 LCALL SPEAK4.4子程序列表 程序中除答题倒计时显示子程序外还用到很多其它功能的子程序,在此就不一一介绍了,其列表如下主程序程序的主体只需调用子程序即可完成相应的显示初始化程序开机即为初始化显示0000作弊处理子程序当主持人没按开始键有人抢答则会转到作弊处理程序提示显示FF驱动蜂鸣器子程序在整个程序中多次调用,主要用于提示作用延时子程序当需要延时操作时即可调用,主要用于动态显示中,第五章 软硬件综合调试5.1 Proteus软件仿真图2.0 Proteus部分仿真图 图5.1 Proteus软件仿真图5.1.1软件仿真过程说明在软件调试过程中,(如图5.1所示)第一阶段,我根据程序流程图在草稿上写出主体程序,然后逐步细化,主要采用模块化程序设计方法,如初始子程序,延时子程序等等,这样简洁明了,很方便查找问题;第二阶段,我将所写的程序写到电脑中,利用WAFU软件调试:新建项目,保存,新建文件,编译,仿真。在多次的设试中,我之前都采用AJMP,ACALL之类的转移,跳转指令,但每次编译器总是给我报出错误:qiangda.ASM(84): error A51: TARGET OUT OF RANGE。后来查看,并分析指导书,才发现AJMP, ACALL跳转,调用指令的范围是2K,而LJMP,LCALL跳转,调用指令的范围是64K,改为LJMP,LCALL,以上错误便马上消除了。在程序调试的过程中,最难的算是逻辑错误了,不过在写程序之前,把设计任务务书和要求认真分析,理清思路,就可以把软件调试成功。5.2 硬件电路调试图为附录2(1)通电前的检查:首先用万用表电阻挡检测电路是否有短路(尤其是电源,电解电容正负极),虚焊,断路等情况.(2)通电调试:先通电观察,是否有异常现象,手不离开开关,一发现异常情况,立即切断电源;接着用万用表电压挡测各关键测试点,是否与理论上一致。若不一致,继续认真检查电路。5.3软硬件联合调试问题及解决办法软硬件联合调试,即整机调试。先将程序烧入单片机中,再插入主电路板中,通电观察,看是否与设计要求相符合:按照用户使用说明书操作,基本上能够按所写程序运行。我试着将抢答器给我的同学们实验,发现主持人还没释放启动键,而有两个及两个以上总是按着抢答按钮,当主持人释放启动键后,数码管只总是显示选手号为最低号。我当时马上意识到这是一个很大的漏洞RIGHT:JNB P2.4,A0 JNB P2.5,A1 AJMP RIGHT(A) 改进前RIGHT: MOV A,P2CJNE A,#0E0H ,D0 LJMP A0;1号选手D0: CJNE A,#0D0H LJMP A1 D2: CJNE A,#70H,D3 LJMP A3D3: CJNE A,#0F0H,T5 (B)改进后对比A,B分析:A中,当主持人未释放启动键,而有选手提前按下抢答键不放,这样当第一位选手也按下了,那么这次抢答的结果总是第一位选手,之后的选手无论他们怎么努力,也无济于事。根本原因是:采用查询的方法,单片机顺序执行JNB P2.4,A0, JNB P2.5,A1 JNB P2.7,A7。只要检测到P2.4为低电平,则之后的就不再检测,转而执行A0处的程序了。而且JNB指令与CJNE指令执行的周期数相同为2。经过仔细的分析,现采用B方法,则可解决抢答优先权的问题,而且我还增加了:在主持人按下键,还没释放键之前,这期间(此期间灯亮)我让程序总是查询是否有人非法按键。若有则报警;若无按键则直到主持人释放键后(此时灯灭),才进入正确抢答程序纵然是在主持人未释放启动键,就有人按键,单片机就直接发出报警,提示此次抢答失败,等待主持人按清零键进入下一次抢答。GOON: MOV A,P2 CJNE A,#0F0H,T5 ;检查是否有人作弊 JB DONE,GOON;只要主持人没按键,则总是检查是否有人作弊 CLR P0.7;主持人按键,小数点亮(标志)CLR P3.0 JNB DONE,QQ;主持人按下键期间,转查询程序,STAR: SETB P0.7 QQ: MOV A,P2 CJNE A,#0F0H,T5;此期间有人按键,则转出错JB DONE,STARDJNZ R1,QQMOV R1,#250 LJMP QQ第6章 总 结作为工科学生,动手实践很重要,理论联系实践是很重要的。经过两周的单片机课程设计,又一次加强了我们动手、思考和解决问题的能力,我们以前也做过这样的训练,对我们的能力有很大的提高,像电子实习。但这次是完全由自己设计程序,硬件板子焊接和程序的调试。遇到的困难可想而知,但最终还是比较满意的完成了任务,而且使我受益匪浅。尝到了收获的甜头真的很兴奋。在设计的过程中,我深刻的认识到单片机在日常生活中的强大用途,同时也被单片机的强大微处理能力所震撼,随着社会的发展,单片机将成为人类社会不可缺少的重要科技之一。我们应该更加努力地学习单片机,为社会发展作贡献。从接到课题到现在完成设计报表, 在此我要感谢在设计过程给予支持鼓励的老师以及同学,另外还要特别感谢我的指导老师王迎旭老师。王老师给予了我精心的指导和热情的帮助,多次向老师问问题,为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。尤其在我陷入困境时的热情地指导。在时间程序的显示中正确处理主程序与子程序之间的调用关系很重要。在程序的设计过程中曾多次出现一些小的错误,有些是由于自己的粗心导致的,所以在设计中思维最好的状态为最好。反复的进行设计调试,我先是在Proteus软件中进行仿真,查看结果。在这短暂的时间里,老师渊博的知识,敏锐的思路和实事求是的工作作风给我留下了深刻的印象,这将使得我终身受益,谨此向老师表示衷心的感谢和崇高的敬意! 参考文献1金龙国.单片机原理与应用M.北京:中国水利水电出版社,2005.256.2朱一纶.智能仪器基础M.北京:电子工业出版社,2007.141158.3胡宴如.模拟电子技术M.北京:高等教育出版社,2006.2372584张建平.单片机多路抢答器J.无线电(合订本),2008,03(第546期):331332.3王迎旭.单片机原理及及应用.机械工业出版社.20044房小翠.单片机实用系统设计技术. 国防工业出版社.20055张洪润.单片机原理及应用. 科学出版社. 20026王晓明.单片机教程. 东北大学出版社. 2003附1源程序代码 DONE EQU P3.3 ;启动键 CLEAR EQU P3.6 ;清零键 LOUD EQU P3.7 ;蜂鸣器叫 TIAOS EQU P3.4 ;启动60S倒计时ORG 0000H AJMP START ;#程序开始#ORG 0030HSTART: MOV R1,#250 LCALL CSH ;调用初始化程序;GOON: MOV A,P2 SETB LOUD CJNE A,#0F0H,T5 ;检查是否有人作弊JB DONE,GOON ;只要主持人没按键,则总是检查是否有人作弊CLR P0.7;主持人按键,小数点亮(标志) CLR P3.0 ;抢答提示灯亮 JNB DONE,QQ ;主持人按下键期间,转查询程序,STAR: SETB P0.7 SETB P3.0RIGHT: MOV A,P2 CJNE A,#0E0H ,D0 LJMP A0;1号选手D0: CJNE A,#0D0H ,D1 LJMP A1D1: CJNE A,#0B0H ,D2LJMP A2 ;判是哪位选手最先抢答D2: CJNE A,#070H ,D3LJMP A3D3: CJNE A,#0F0H,T5 ;不符合以上情况,说明有两个,及两个以上同时按键,转出错程序 LJMP RIGHTT5: LJMP ERRORQQ: MOV A,P2 CJNE A,#0F0H,T5;此期间有人按键,则转出错JB DONE,STARDJNZ R1,QQMOV R1,#250 LJMP QQA0: MOV 32H,#1MOV P1,#0EFH LJMP XIANSHIA1: MOV 32H,#2 MOV P1,#0DFH LJMP XIANSHIA2: MOV 32H,#3 MOV P1,#0BFH LJMP XIANSHIA3: MOV 32H,#4 MOV P1,#7FH LJMP XIANSHI ;#作弊处理程序#ERROR: MOV P1,P2 ;作弊处理程序ET: MOV A,P2 ;期间不断显示作弊者ledMOV P1,A LCALL SPEAK;且不断地报警 MOV P0,#0ffHLCALL DELAY2MOV P0,#0c0H MOV P2,#0F0HLCALL DELAY2 ;要回到初始态,则要两个前提: CJNE A,#0F0H,ERROR ;(1)选手不能按键, JB CLEAR,ET; (2)主持人得按清零键 JNB CLEAR,$LJMP T8 RET ;#初始化子程序#CSH:MOV P0,#0C0H;初始化子程序MOV P2,#0F0HMOV P1,#0FFHLCALL SPEAKLCALL SPEAK MOV 30H,#9 MOV 31H,#9 MOV 32H,#0 RETSPEAK: CLR LOUD;急促的声音 ACALL DELAY1 SETB LOUD ACALL DELAY1RET;#答题倒计时显示子程序#XIANSHI:SETB P3.7 MOV TMOD,#01H ;查询法 方式1 MOV R5,#40XS0: MOV TH0,#5CH MOV TL0,#0B0HXS: MOV 40H,#0F7H ;动态扫描显示 MOV DPTR,#TAB MOV P2,40H ;选通计时个位 MOV A,30H MOVC A,A+DPTR ;查表选出显示字 MOV P0,A LCALL DELAY3 MOV P0,#0FFH ;P0口清零 MOV A,40H RR A MOV 40H,A MOV P2,40H ;选通计时十位 MOV A,31H MOVC A,A+DPTR MOV P0,A LCALL DELAY3 MOV P0,#0FFH MOV A,40H RR A MOV 40H,A MOV P2,40H ;选通标志位 MOV P0,#0BFH LCALL DELAY3 MOV P0,#0FFH MOV A,40H RR A MOV 40H,A MOV P2,40H ;选通优先抢答者号 MOV A,32H MOVC A,A+DPTR MOV P0,A ;显示抢答者号 LCALL DELAY3 MOV P0,#0FFH SETB TR0 JBC TF0,XS1XS1: DJNZ R5,XS0JIA: MOV R5,#40 MOV A,30H CJNE A,#0,J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论