收藏 分销(赏)

2021年单片机8路智力竞赛抢答器设计.doc

上传人:二*** 文档编号:4742814 上传时间:2024-10-11 格式:DOC 页数:33 大小:5.87MB
下载 相关 举报
2021年单片机8路智力竞赛抢答器设计.doc_第1页
第1页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、目录1. 设计内容及规定21.1 设计任务21.2 设计规定21.3 设计方案22. 抢答器硬件设计32.1时钟频率电路设计32.2 复位电路42.3 显示电路设计42.4 选手抢答按键电路设计52.5 主持人按键电路设计63. 抢答器程序流程63.1正常抢答流程73.2抢答时间调节83.3 答题时间调节流程94. 抢答器制作调试问题114.1 在仿真中浮现问题114.2 在实际电路制作中浮现问题115. 仿真测试效果125.1 初始及复位显示125.2正常抢答显示125.3 犯规显示135.4 抢答时间调节146. 硬件电路功能显示156.1 电路初始化显示156.2 正常抢答显示156.3

2、 抢答犯规显示166.4 复位键显示167. 实训总结178. 参照文献17附录:188路抢答器源程序181. 设计内容及规定1.1 设计任务8路智力竞赛抢答器1.2 设计规定(1)运用单片机设计并制作智力竞赛抢答器。(2)设计一种6路或以上抢答器;(3)有主持人按键,只有主持人按键按下之后,才容许选手抢答,否则视为犯规,犯规时有相应批示灯亮;(4)设定抢答时间限制,超过时间若无人抢答则该题作废,并用发光二极管闪烁报警;(5) 抢答限制时间用数码管倒计时显示;(6)有复位按钮,浮现犯规或超时后可复位。1.3 设计方案1、当主持人按下开始键,开始抢答,初始倒计时30秒开始倒计时,选手抢答成功,进

3、入60秒答题倒计时;2、如果在主持人按下开始键前按下抢答按钮,抢答犯规,显示屏显示犯规选手号码,倒计时和选手号码显示闪烁;3、主持人可以通过,按抢答时间调节键或答题时间调节键进入调节状态,此时会显示初始抢答时间或回答时间,如想加一秒按一下时间+键,如果想减一秒按一下时间-键,时间LED上会显示变化后时间,调节范畴为0s99s,0s时再减1s会跳到99,99s时再加1s会变到0s。 4、P3.0为开始抢答,P3.1为复位,p1.0-p1.7为八路抢答输入 数码管段选P0口,位选P2口低3位。P3.2抢答时间调节整,P3.3回答时间调节,P3.4为时间加1调节,P3.5为时间减1调节。2. 抢答器

4、硬件设计本设计基于AT89S52单片机AT89S52引脚图 AT89C52芯片引脚图2.1时钟频率电路设计单片机必要在时钟驱动下才干工作.在单片机内部有一种时钟振荡电路,只需要外接一种振荡源就能产生一定期钟信号送到单片机内部各个单元,决定单片机工作速度。1) 图2-2 外部振荡源电路普通选用石英晶体振荡器。此电路在加电大概延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右正弦波时钟信号,其振荡频率重要由石英晶振频率拟定。电路中两个电容 C1,C2作用有两个:一是协助振荡器起振;二是对振荡器频率进行微调。C1,C2典型值为30PF。2) 单片机在工作时,由内部振荡器产生或由外直接输入送

5、至内部控制逻辑单元时钟信号周期称为时钟周期。其大小是时钟信号频率倒数,惯用fosc表达。如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12s。2.2 复位电路单片机第9脚RST为硬件复位端,只要将该端持续4个机器周期高电平即可实现复位,复位后单片机各状态都恢复到初始化状态,其电路图如图4所示:值得注意是,在设计当中使用到了硬件复位和软件复位两种功能,由上面硬件复位后各状态可知寄存器及存储器值都恢复到了初始值,而前面功能简介中提到了倒计时时间记忆功能,该功能实现前提条件就是不能对单片机进行硬件复位,因此设定了软复位功能。软复位事实上就是当程序执行完毕之后,将程序指针通过一条跳转

6、指令让它跳转到程序执行起始地址。2.3 显示电路设计电路采用是CAJ5461BH 4位数码管显示,4数码管实物及接线如图所示:2.4 选手抢答按键电路设计选手抢答按键选用是以P1口为输入,电路图如图所示:2.5 主持人按键电路设计支持人按键电路选用P3口为输入,支持人按键“开始”键接P3.0,“复位”键接P3.1,“修改抢答时间”接P3.2,“修改答题时间”接P3.3,“时间+”接P3.4,“时间-”接P3.5,电路图如图所示:3. 抢答器程序流程本设计采用P3.2、P3.3分别接抢答时间调节和答题时间调节按钮,即通过外部中断0、外部中断1分别控制抢答、答题时间调节。因而,设计软件某些可分为工

7、作模块、外部中断0模块、外部中断1模块。对流程图分析,也分三某些来简介。3.1正常抢答流程初始化某些:涉及对定期计数器工作方式、初始化数值设立,还涉及对抢答时间与答题时间预设,此外,还应对外部中断0、外部中断1进行开放。开始初始化开始键没按下开始键按下犯规抢答器倒计时按下复位键倒计时时间为0有人抢答?回答倒计时回答倒计时为03.2抢答时间调节抢答时间调节流程图见下图INT0中断Y显示当前抢答时间P3.4按下?P3.5按下?抢答时间加1sNYN成果为100成果置0N成果为0s?成果置100抢答时间减1sYYN按P3.2中断返回NYP3.2相应键按下,便进入INT0中断过程。通过不断对P3.4(加

8、1s)和P3.5(减1s)进行不断查询,来对抢答时间进行调节:发现P3.4按下,就对原抢答时间加1s,发现P3.5下,就对原抢答时间减1s并调用显示程序。依照设计规定,当加至99s时,若再加1s,则时间变为0;当减至0s后,若再减一秒,时间变为99s。因而,流程中应当对当前时间于99s或0s比较,再作出相应解决。此外,在中断过程中还需要不时对停止按钮进行查询,一旦发现其按下,及时中断返回。由于本中断过程在返回前始终是循环执行,因而,只需要在每次循环末查询一次即可,如流程图所示3.3 答题时间调节流程与抢答时间调节类似,一旦因P3.3相应按钮按下,便进入INT1中断过程。通过不断对P3.4(加1

9、s)和P3.5(减1s)进行不断查询,来对抢答时间进行调节:发现P3.4按下,就对原抢答时间加1s,发现P3.5下,就对原抢答时间减1s并调用显示程序。当加至99s时,若再加1s,则时间变为0;当减至0s后,若再减一秒,时间变为99s。因而,流程中应当对当前时间于99s或0s比较,再作出相应解决。INT1中断Y显示当前答题时间P3.4按下?P3.5按下?答题时间加1sNYN成果为100s?成果置0N成果为0s?成果置100答题时间减1sYYN停止键按下?中断返回NY4. 抢答器制作调试问题4.1 在仿真中浮现问题(1)电路接好后将16进制文献写入单片机内,在数码管显示中,显示是乱码。解决办法:

10、1、检查程序中字型码与否是共阳极显示字型码,将共阴极字型码改为共阳极字型码;2、检查电路图,查看4位数码管显示是不是共阳极显示,将共阴极更改为共阳极显示(2)数码管显示数字浮现抖动解决办法:在显示程序中更改显示延时时间,加长显示延时时间(3)在调节抢答时间或调节答题时间是按一次按键显示屏上数字会跳动多次解决办法:在按键去抖动程序中加长去抖动延时时间4.2 在实际电路制作中浮现问题(1)电路焊接完毕将16进制程序烧写进单片机后,电路板不能正常工作,数码管没显示。解决办法:检查电路,确认单片机最小系统与否对的及4位数码管与单片机接线与否对的,用万用表检查各管脚间与否短路,排除短路现象。(2)最小系

11、统对的及各线路中没有短路接线,数码管全亮,但对的显示没用显示。解决办法:在显示程序中加入将个显示屏清零程序5. 仿真测试效果5.1 初始及复位显示单片机初始显示及复位显示5.2正常抢答显示(1)主持人按下开始键,数码管显示倒计时抢答倒计时(2)选手抢答成功,数码管显示选手号码及答题倒计时4号选手抢答选手号码及答题倒计时显示5.3 犯规显示支持人没按下开始键,选手抢答犯规。数码管显示选手号码并闪烁4号选手抢答犯规显示犯规显示5.4 抢答时间调节支持人按下“复位键”P3.1,按下“修改抢答时间”P3.2,选取调节抢答时间,按“时间+”P3.4和“时间-”P3.5,进行抢答时间调节;主持人要修改答题

12、时间,按下“复位键”P3.1,按下“修改答题时间”P3.3,选取调节抢答时间,按“时间+”P3.4和“时间-”P3.5,进行答题时间时间调节,显示如图所示:抢答时间加7秒显示答题时间修改显示6. 硬件电路功能显示6.1 电路初始化显示电路初始时数码管显示PPP6.2 正常抢答显示1、当主持人按下开始按键后,数码管显示30秒倒计时2、选手抢答成功,数码管显示选手号码,并显示答题时间倒计时6.3 抢答犯规显示主持人开始按键没按下,选手按下抢答键后犯规,数码管显示犯规选手号码,倒计时显示处显示PP6.4 复位键显示当支持人按下复位键,数码管显示初始值,显示PPP7. 实训总结在为期两个周单片机实训中

13、,通过完毕所选实训题目,咱们将课本中所学到知识应用到制作中,加深了咱们对课本知识理解,在实训中遇到许多问题,通过查阅资料和教师解说咱们对单片机应用又更进一层,在制作实际电路过程中,不但锻炼了咱们动手能力,通过对AT89S52单片机应用使咱们加深了对单片机结识,将课本上知识以实际生活中应用相结合,在制作抢答器过程中咱们遇到了许多问题,在试过许多解决方案后,没有解决问题,也想过放弃,但还是坚持了下来。在你解决一种问题,成果出来后,就会非常兴奋。在实训中学到东西对咱们后来生活学习也有很大协助在咱们生活中无乱多大困难挡住咱们迈进路,咱们都不能放弃,世上没有解决不了困难,之遥咱们坚持下来,成功就在手中。

14、8. 参照文献1 胡建主编. 单片机原理及接口技术实践教程. 北京:机械工业出版社. 2 何立民. MCS-51系列单片机应用系统设计. 北京:北京航空航天大学出版社. 19903 潘永雄. 新编单片机原理与应用. 西安:西安电子科技大学出版社. 4 张迎新. 单片微型计算机原理、应用及接口技术(第2版). 国防工业出版社. 5 苏平. 单片机原理与接口技术. 电子工业出版社. 附录:8路抢答器源程序OKEQU20H;抢答开始标志位?ORG0000HAJMPMAINORG0003HAJMPINT_0ORG000BHAJMPT0INTORG0013HAJMPINT_1ORG001BHAJMPT1

15、INTORG0040HMAIN:MOVR1,#30;初设抢答时间为30sMOVR2,#50MOVTMOD,#11H;设立未定期器/模式1MOVTH1,#3CHMOVTL1,#0B0HSETBEASETBET0SETBET1SETBEX0SETBEX1;容许四个中断,T0/T1/INT0/INT1CLROKSETBTR1SETBTR0;START:MOVR5,#0BHMOVR4,#0BHMOVR3,#0BHACALLDISPLAY;未开始抢答时候显示000JBP3.0,NEXT;ACALLDELAYJBP3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询MOVA,R1MOV

16、R6,A;送R1-R6,由于R1中保存了抢答时间SETBOK;抢答标志位,用于COUNT只程序中判断与否查询抢答MOVR7,#01H ;读抢答键数据信号标志,这里表达只读一次有用信号MOVR3,#0AH;抢答只显示计时,灭号数AJMPCOUNT;进入倒计时程序,查询有效抢答程序在COUNT里面NEXT:JNBP1.0,K1JNBP1.1,K2JNBP1.2,K3JNBP1.3,K4JNBP1.4,K5JNBP1.5,K6JNBP1.6,K7JNBP1.7,K8AJMPSTART;=非法抢答解决程序=K1:MOVR3,#01HAJMPFANGUIK2:MOVR3,#02HAJMPFANGUIK3

17、:MOVR3,#03HAJMPFANGUIK4:MOVR3,#04HAJMPFANGUIK5:MOV R3,#05HAJMPFANGUIK6:MOVR3,#06HAJMPFANGUIK7:MOVR3,#07HAJMPFANGUIK8: MOVR3,#08HAJMPFANGUI/*=INT0(抢答时间R1调节程序)=*/INT_0:MOVA,R1MOVB,#0AHDIVABMOVR5,AMOVR4,BMOVR3,#0AHACALLDISPLAY;先在两个时间LED上显示R1JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCOJNBP3.5,DEC0;P3.5为-1s键,如按下跳到DE

18、COJNBP3.1,BACK0;P3.1为拟定键,如按下跳到BACKOAJMPINT_0INC0:MOVA,R1CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。MOVR1,#00HACALLDELAY1AJMPINT_0ADD0:INCR1ACALLDELAY1AJMPINT_0DEC0:MOVA,R1JZSETR1;如果R1为0,R1就置99,DECR1ACALLDELAY1AJMPINT_0SETR1:MOVR1,#63HACALLDELAY1AJMPINT_0BACK0:RETI /*=INT1(回答时间R2调节程序)=*/INT_1:MOVA

19、,R2MOVB,#0AHDIVABMOVR5,AMOVR4,BMOVR3,#0AHACALLDISPLAYJNBP3.4,INC1JNBP3.5,DEC1JNBP3.1,BACK1AJMPINT_1INC1:MOVA,R2CJNEA,#63H,ADD1MOVR2,#00HACALLDELAY1AJMPINT_1ADD1:INCR2ACALLDELAY1AJMPINT_1DEC1:MOVA,R2JZSETR2DECR2ACALLDELAY1AJMPINT_1SETR2:MOVR2,#63HACALLDELAY1AJMPINT_1BACK1:RETI /*=倒计时程序(抢答倒计时和回答倒计时都跳到

20、改程序)=*/REPEAT:MOVA,R2 ;使用设定始浔重新计时MOVR6,A COUNT:MOVR0,#00H;重置定期器中断次数MOVTH1,#3CHMOVTL1,#0B0H;重置定期器RECOUNT:MOVA,R6;R6保存了倒计时时间,之前先将抢答时间或回答时间给R6MOVB,#0AHDIVAB;除十分出个位/十位MOV30H,A;十位存于(30H)MOV31H,B;个位存于(31H)MOVR5,30H;取十位MOVR4,31H;取个位MOVA,R6SUBBA,#07HJNCLARGER;不不大于5s跳到LARGER,不大于等于5s会提示MOVA,R0CJNEA,#0AH,FULL;

21、1s中0.5s向下运营 AJMPCHECKFULL:CJNEA,#14H,CHECK;下面是1s状况,响并显示号数并清R0,重新计MOVA,R6JZQUIT;计时完毕MOVR0,#00HDECR6;一秒标志减1AJMPCHECKLARGER:MOVA,R0CJNEA,#14H,CHECK;如果1s向下运营,否者跳到查停/显示DECR6;计时一秒R6自动减1MOVR0,#00HCHECK:JNBP3.1,QUIT;如按下停止键退出JNBOK,CHECKK ;只在回答倒计时才有效AJMPNEXTTCHECKK:JNBP3.0,REPEAT ;判断与否使用锦囊NEXTT:ACALLDISPLAYJB

22、OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)AJMPRECOUNTACCOUT:MOVA,36HJNBACC.0,TRUE1JNBACC.1,TRUE2JNBACC.2,TRUE3JNBACC.3,TRUE4JNBACC.4,TRUE5JNBACC.5,TRUE6JNBACC.6,TZ1JNBACC.7,TZ2AJMPRECOUNTTZ1:JMPTRUE7TZ2:JMPTRUE8 QUIT:CLROK;如果按下了停止键执行程序AJMPSTART/*=正常抢答解决程序=*/TRUE1:MOVA,R2MOVR6,A;抢答时间R2送R6MOVR3,

23、#01HCLROK;由于答题计时不再查询抢答,因此就锁了抢答AJMPCOUNTTRUE2:MOVA,R2MOVR6,AMOVR3,#02HCLROKAJMPCOUNTTRUE3:MOVA,R2MOVR6,AMOVR3,#03HCLROKAJMPCOUNTTRUE4:MOVA,R2MOVR6,AMOVR3,#04HCLR OKAJMPCOUNTTRUE5:MOVA,R2MOVR6,AMOVR3,#05HCLROKAJMPCOUNTTRUE6:MOVA,R2MOVR6,AMOVR3,#06HCLROKAJMPCOUNTTRUE7:MOVA,R2MOVR6,AMOVR3,#07HCLROKAJMPC

24、OUNTTRUE8:MOVA,R2MOVR6,AMOVR3,#08HCLROKAJMPCOUNT/*=犯规抢答程序=*/FANGUI:MOVR0,#00HMOVTH1,#3CHMOVTL1,#0B0HMOV34H,R3;犯规号数暂存与(34H)HERE:MOVA,R0CJNEA,#06H,FLASH;0.3s向下运营-灭并停响MOVR3,#0AHMOVR4,#0AHMOVR5,#0AH;三灯全灭AJMPCHECK1FLASH:CJNEA,#0CH,CHECK1;下面是0.8s状况,响并显示号数并清R0,重新计MOVR0,#00HMOVR3,34H;取回号数MOVR5,#0BHMOVR4,#0B

25、H;显示FF和号数AJMPCHECK1CHECK1:JNBP3.1,QUIT1ACALLDISPLAYAJMPHEREQUIT1:CLROKAJMPSTART;/*=显示程序=*/DISPLAY:MOVDPTR,#DAT1MOVA,R3MOVCA,A+DPTRMOVP2,#0feHMOVP0,AMOVP2,#0FFHACALLDELAY2MOVDPTR,#DAT2MOVA,R5MOVCA,A+DPTRMOVP2,#0fdHMOVP0,AMOVP2,#0FFHACALLDELAY2MOVA,R4MOVCA,A+DPTRMOVP2,#0fbHMOVP0,AMOVP2,#0FFHACALLDELAY

26、2RETDAT1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0FFH/*=加减时间延时(起到不会按下就加N个数)=*/DELAY1:MOV35H,#08HLOOP0:ACALLDISPLAYDJNZ35H,LOOP0RET/*=延时去抖动用到)=*/DELAY:MOV32H,#12HLOOP:MOV33H,#0AFHLOOP1:DJNZ33H,LOOP1DJNZ32H,LO

27、OPRET;/*=延时显示用到)=*/DELAY2:MOV32H,#43HLOOP3:MOV33H,#1EHMOVA,R7 ;JNZKEY ;没读到有效数据时继续转到KEYLOOP2:DJNZ33H,LOOP2DJNZ32H,LOOP3RET/*=读抢答按键数据口程序=*/KEY:MOVA,P1CJNEA,#0FFH,KEY2 ;当不全为1时数据为有效数据KEY1:MOV36H,A ;将有效数据送到36H暂存AJMPLOOP2KEY2:DECR7 AJMPKEY1RET;T0INT:MOVTH0,#0ECHMOVTL0,#0FFHOUT:RETI/*=T1溢出中断(计时程序)=*/T1INT:MOVTH1,#3CHMOVTL1,#0B0HINCR0RETIEND

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服