单片机课程设计八路抢答器.doc

上传人:文库蛋蛋多 文档编号:4147548 上传时间:2023-04-07 格式:DOC 页数:20 大小:343.50KB
返回 下载 相关 举报
单片机课程设计八路抢答器.doc_第1页
第1页 / 共20页
单片机课程设计八路抢答器.doc_第2页
第2页 / 共20页
单片机课程设计八路抢答器.doc_第3页
第3页 / 共20页
单片机课程设计八路抢答器.doc_第4页
第4页 / 共20页
单片机课程设计八路抢答器.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《单片机课程设计八路抢答器.doc》由会员分享,可在线阅读,更多相关《单片机课程设计八路抢答器.doc(20页珍藏版)》请在三一办公上搜索。

1、1引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。由于单片机具有体积小、功能全、性价比高、性能成熟稳定等诸多优点,目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域导弹的导航装置。 2总体设计2.1 设计依据抢答器由计数器、寄存器、集成定时器和译码显示等组合、时序电路组成。可分为抢答电路,定时电路,报警电路等几个单元部分。每个单元电路分别可以处理一些抢答竞赛中的基本问题。本次课程设计设计的是一个

2、八路定时抢答器,具有锁存和显示功能。同时有主持人控制系统的清零和抢答的开始。抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,同时其他人再抢答就无效了。2.2抢答器的工作原理抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用3个共阴极LED数码管来显示,用P0口作为数码管的八个段选,用P2口中的P2.0、P2.1、P2.2、作为3个数码管其中3个位选,P1口接8个按键,提供选手抢答,P3.2-P3.3接两个按键,提供开始、结束。抢答功能:通过八路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮

3、均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及在其前显示字母E。抢答限时:主持人按下抢答键后,设置30秒为抢答时间。若30秒内无人抢答,倒计时为0时三个数码管都显示字母E,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。非法抢答:在主持人按下抢答键开始前,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的路数及在其前显示字母F,说明其是非法抢答。记录此人的序号,在下一轮抢答时,该为选手不能抢答。2.3主要器件的选用2.3.1 AT89C51简介采用单片机来设计制作电子时钟,由于其功能的实现主要通过软件编程来完成,那

4、么就降低了硬件电路的复杂性,而且其成本也有所降低。所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128字节的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。本文介绍一种由单片机构成的简单的电子时钟。此电子时钟是由单片机AT89C51、LED显示器、按键和外围控制电路组成,可通过按键进行时间的调整,LED显示器进行时、分 、秒的显示。此电子时钟采用Atmel公司推出的AT89C51构成的单片机系

5、统,具有可靠性好、结构简单、成本低的优点。其引脚分布如图2.2所示图2.1 AT89C51管脚配置图2.3.2 LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。2.3.3 时钟振荡电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C

6、1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下

7、:图2.2 单片机内部、外部振荡电路3软件设计3.1 系统流程图NY开中断设定定时器初值并启动定时器抢答开始是否有按键按下是否有按键按下30秒到时中断返回调用回答的子程序NY调用非法处理子程序图 3.1 系统程序流程图3.2硬件复位流程图开 始初始化读键盘是否有键按下显示违规选手序号加字母F并禁止下轮抢答中断条件是否满足进入中断程序NNYY图3.2 硬件复位流程图3.3抢答成功流程图开始设定定时器初值并启动开始抢答显示成功抢答选手的序号加字母ERET图3.3抢答成功流程图4硬件设计4.1原理图的确定5程序清单定时器T1时间初值设50ms时间初值为Z,Z的计算方法为(216- Z)12=1250

8、103,结果Z=15536D=3CB0HOK EQU 20H ;抢答开始标志位RING EQU 22H ;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30 ;初设抢答时间为30sMOV R2,#60 ;初设答题时间为60sMOV TMOD,#11H ;设置定时器T0/T1模式1MOV TH0,#0F0HMOV TL0,#0FFH ;越高发声频率越高,越尖MOV TH1,#3CHMOV TL

9、1,#0B0H ;50ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1 ;允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0 ;一开始就运行定时器,以开始显示EEE;=查询程序=START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BHACALL DISPLAY ;未开始抢答时候显示EEEJB P3.0,NEXTACALL DELAYJB P3.0,NEXTACALL BARK ;按键发声MOV A,R1MOV R6,A ;送R1-R6,因为R1中保存了抢答时间SET

10、B OK ;抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R3,#0AH ;抢答只显示计时,灭号数AJMP COUNT ;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2AJMP STARTTZ1: JMP FALSE7TZ2: JMP FALSE8;=非法抢答处理程序=FALSE1: ACALL BARK; ; 按键发声MOV

11、R3,#01H AJMP ERRORFALSE2: ACALL BARKMOV R3,#02H AJMP ERRORFALSE3: ACALL BARKMOV R3,#03H AJMP ERRORFALSE4: ACALL BARKMOV R3,#04H AJMP ERRORFALSE5: ACALL BARKMOV R3,#05H AJMP ERRORFALSE6: ACALL BARKMOV R3,#06H AJMP ERRORFALSE7: ACALL BARKMOV R3,#07H AJMP ERRORFALSE8: ACALL BARKMOV R3,#08HAJMP ERROR;=I

12、NT0(抢答时间R1调整程序)=INT0SUB:MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,BMOV R3,#0AHACALL DISPLAY ;先在两个时间LED上显示R1JNB P3.4,INC0 ;P3.4为+1s键,如按下跳到INCOJNB P3.5,DEC0 ; P3.5为-1s键,如按下跳到DECOJNB P3.1,BACK0 ; P3.1为停止键,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HAC

13、ALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1 ;如果R1为0, R1就置99DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63H ACALL DELAY1 AJMP INT0SUBBACK0: RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2 MOV B,#0AH DIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC

14、1JNB P3.1,BACK1AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1AJMP INT1SUBADD1: INC R2 ACALL DELAY1 AJMP INT1SUBDEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT1SUBSETR2: MOV R2,#63H ACALL DELAY1 AJMP INT1SUBBACK1: RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=COUNT: MOV R0,#00H ;重置定时器中断次

15、数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器RECOUNT:MOV A,R6;R6 ;保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;个位存于(31H) MOV R5,30H ;取十位,存入R5 MOV R4,31H ;取个位,存入R4 MOV A,R6 SUBB A,#07H JNC LARGER ;回到倒计时小于5秒是,响铃提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s中0.5s向下运行 CLR RING AJMP CH

16、ECKFULL: CJNE A,#14H,CHECK ;下面是1s的情况,响并显示号数并清R0,重新计 SETB RING MOV A,R6 JZ QUIT ;计时完毕 MOV R0,#00H DEC R6 ;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK ;如果1s向下运行,否者跳到查停/显示 DEC R6 ;计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT ;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢

17、答作用) AJMP RECOUNTACCOUT:JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNTTZ3: JMP TRUE7TZ4: JMP TRUE8 QUIT: CLR OK ;如果按下了停止键执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACALL BARK ;按键发声 MOV A,R2 MOV R6,A ;抢答时间R2送R6 MOV R3,#

18、01H CLR OK ;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5:ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP CO

19、UNTTRUE6: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK; MOV A,R2 MOV R6,A MOV R3,#08H CLR OKAJMP COUNT;=犯规抢答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A

20、,#0AH,FLASH ;0.5s向下运行-灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ; 三灯全灭 AJMP CHECK1FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情况,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R4,34H ; 取回号数 MOV R3,#0dH MOV R5,#0cH ;显示F和号数 AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OKAJMP STA

21、RT;=显示程序=DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6

22、fh,00H,79H,3FH,71H ;灭,1,2,3,4,5,6,7,8,9,灭,E,0,FDAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,79H,3FH,71H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=延时(显示和去抖动用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H

23、,LOOP RET;=发声程序=BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按键发声 RET;=TO溢出中断(响铃程序)=T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6 ;标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断(计时程序)=T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETIEND总 结两周时间的单片机原理课程设计结束了,虽然有点累,但是收获颇丰。在这两周的时间,不仅加深了我对课本

24、知识的掌握,把以前学过的知识从理论应用到了实践,这大大培养了我独立思考的能力和动手能力,也锻炼了我遇到困难不要受到挫折的心理,我感到个人能力又得到了提高。单片机的课程设计是要求我们通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,目的是要我们加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法。本次设计的要求是设计一个八路抢答器,要实现软件编和试验箱的硬件连接。最终实现抢答器的功能。在我刚看到题目时,头脑里一点思路都没有,此时认识到了自己知识的不足,正如书到用时方恨少。这让我感觉无从下手,后来通过老师和同学的帮助才

25、找到了头绪。通过设计,不仅培养我们的运用灵活的思维去思考问题,而且要从理论联系到实际,并且要求我有较强的动手能力和耐心。虽然我也曾为种种想要退却,但是最后还是坚持下来了。所以不要轻易放弃,只要我们肯努力,肯投入,一定就有回报的。在这次课程设计过程中,我遇到了几个自己不能解决的问题,通过老师和同学的帮助最终把问题解决。当我通过自己的努力和老师同学们的帮助后,在试验箱上成功的实现了抢答器的各种功能后,这种成功后的喜悦,让我真正体会到学习单片机的乐趣。更让我学会在以后的学习中,应该不断的摸索,不断实践,更好的理解所学的知识,弥补实践的不足,由理论联系到实际,深入了解科学的奥秘,真正的把知识应用到实践

26、当中,以达到学以致用的目的。致 谢两周的课程设计即将结束,我很高兴,我能通过自己的努力并在老师和同学的帮助下完成了本次设计,这里我要对他们说声“谢谢”。本次课程设计的成功完成,凝结的是老师和全体组员的辛勤汗水,非常感谢那些帮助我的同学和老师,在此要对他们致以最真诚的感谢。首先要感谢田景贺老师的指导,他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在设计过程遇到很多困难,每一次找到老师,老师都会认真解答疑惑,耐心讲解,这才使我们能顺利完整的完成课程设计要求的内容,在此对老师表示崇高的敬意和衷心的感谢。其次要感谢那些帮助过我的同学,在这次课程设计期间各位同学互相讲解,大

27、家在一起集思广益,查阅相关资料,才能在很短时间内完成课程设计的要求,尽管我们课设还存在一定的问题,因为我们的知识还是有限的,但能有现在的成果也是非常不容易的,付出了许多的努力。在此还要感谢那些帮助过我的同学。同时,也非常感谢沈阳工程学院图书馆的支持,为我们提供了丰富的图书资料,使我们扩展了知识面,帮助我们将课程设计顺利的完成。参考文献1 李泉溪. 单片机原理与应用实例仿真.北京航天航空大学出版社 2009年2 喻宗泉. 单片机原理与应用技术.西安电子科技大学出版社 2005年3 万光毅. 单片机实验与实践教程. 北京航天航空大学出版社 2003年4 张俊谟. 单片机初级教程.北京航天航空大学出版社 2000年5 张迎新. 单片机初级教程.北京航天航空大学出版社 2000年.6 康华光. 电子技术基础(模拟部分).第四版 高等教育出版社 1999年.7 喻宗泉. 单片机原理与应用技术.西安电子科技大学出版社 2005年.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号