ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:1.82MB ,
资源ID:8990404      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8990404.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机路智力竞赛抢答器设计.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机路智力竞赛抢答器设计.docx

1、单片机路智力竞赛抢答器设计1. 设计内容及要求1.1 设计任务8路智力竞赛抢答器1.2 设计要求(1)利用单片机设计并制作智力竞赛抢答器。(2)设计一个6路或以上的抢答器;(3)有主持人按键,只有主持人按键按下之后,才允许选手抢答,否则视为犯规,犯规时有对应指示灯亮;(4)设定抢答时间限制,超过时间若无人抢答则该题作废,并用发光二极管闪烁报警;(5)抢答限制时间用数码管倒计时显示;(6)有复位按钮,出现犯规或超时后可复位。1.3 设计方案1、当主持人按下开始键,开始抢答,初始倒计时30秒开始倒计时,选手抢答成功,进入60秒答题倒计时;2、如果在主持人按下开始键前按下抢答按钮,抢答犯规,显示器显

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. 抢答器硬件设计本设计基于AT89S52单片机AT89S52的引脚图 AT89C5

3、2芯片引脚图2.1时钟频率电路的设计单片机必须在时钟的驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。1)图2-2 外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。2)单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小

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

5、始地址。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分别控制抢答、答题时间的调整。因此,设计的软件部分可分为工作模块、外

6、部中断0模块、外部中断1模块。对流程图的分析,也分三部分来介绍。3.1正常抢答流程初始化部分:包括对定时计数器的工作方式、初始化数值的设置,还包括对抢答时间与答题时间的预设,另外,还应对外部中断0、外部中断1进行开放。3.2抢答时间调整抢答时间调整的流程图见下图P3.2对应键的按下,便进入INT0中断过程。通过不断对P3.4(加1s)和P3.5(减1s)进行不断的查询,来对抢答时间进行调整:发现P3.4按下,就对原抢答时间加1s, 发现P3.5下,就对原抢答时间减1s并调用显示程序。根据设计要求,当加至99s时,若再加1s,则时间变为0;当减至0s后,若再减一秒,时间变为99s。因此,流程中应

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

8、时间于99s或0s比较,再作出相应处理。4. 抢答器制作调试问题4.1 在仿真中出现的问题(1)电路接好后将16进制文件写入单片机内,在数码管显示中,显示的是乱码。解决方法:1、检查程序中的字型码是否是共阳极显示的字型码,将共阴极字型码改为共阳极字型码;2、检查电路图,查看4位数码管显示是不是共阳极显示,将共阴极更改为共阳极显示(2)数码管显示的数字出现抖动解决方法:在显示程序中更改显示延时时间,加长显示的延时时间(3)在调节抢答时间或调节答题时间是按一次按键显示器上的数字会跳动多次解决方法:在按键去抖动程序中加长去抖动的延时时间4.2 在实际电路制作中出现的问题(1)电路焊接完成将16进制程

9、序烧写进单片机后,电路板不能正常工作,数码管没显示。解决方法:检查电路,确认单片机最小系统是否正确及4位数码管与单片机接线是否正确,用万用表检查各管脚间是否短路,排除短路的现象。(2)最小系统正确及各线路中没有短路接线,数码管全亮,但正确的显示没用显示。解决方法:在显示程序中加入将个显示器清零的程序5. 仿真测试效果5.1 初始及复位显示单片机初始显示及复位显示5.2正常抢答显示(1)主持人按下开始键,数码管显示倒计时抢答倒计时(2)选手抢答成功,数码管显示选手号码及答题倒计时4号选手抢答选手号码及答题倒计时显示5.3 犯规显示支持人没按下开始键,选手抢答犯规。数码管显示选手号码并闪烁4号选手

10、抢答犯规显示犯规显示5.4 抢答时间调节支持人按下“复位键”P3.1,按下“修改抢答时间”P3.2,选择调节抢答时间,按“时间+”P3.4和“时间-”P3.5,进行抢答时间的调节;主持人要修改答题时间,按下“复位键”P3.1,按下“修改答题时间”P3.3,选择调节抢答时间,按“时间+”P3.4和“时间-”P3.5,进行答题时间时间的调节,显示如图所示:抢答时间加7秒显示答题时间修改显示6. 硬件电路功能显示6.1 电路初始化显示电路初始时数码管显示PPP6.2 正常抢答显示1、当主持人按下开始按键后,数码管显示30秒倒计时2、选手抢答成功,数码管显示选手号码,并显示答题时间倒计时6.3 抢答犯

11、规显示主持人开始按键没按下,选手按下抢答键后犯规,数码管显示犯规选手号码,倒计时显示处显示PP6.4 复位键显示当支持人按下复位键,数码管显示初始值,显示PPP7. 实训总结在为期两个周的单片机实训中,通过完成所选的实训题目,我们将课本中的所学到知识应用到制作中,加深了我们对课本知识的理解,在实训中遇到的许多问题,通过查阅资料和老师的讲解我们对单片机的应用又更进一层,在制作实际电路的过程中,不仅锻炼了我们的的动手能力,通过对AT89S52单片机的应用使我们加深了对单片机的认识,将课本上的知识以实际生活中的应用相结合,在制作抢答器的过程中我们遇到了许多的问题,在试过许多解决方案后,没有解决问题,

12、也想过放弃,但还是坚持了下来。在你解决一个问题,结果出来后,就会非常的兴奋。在实训中学到的东西对我们以后的生活学习也有很大的帮助在我们的生活中无乱多大的困难挡住我们前进的路,我们都不能放弃,世上没有解决不了的困难,之遥我们坚持下来,成功就在手中。8. 参考文献1 胡建主编. 单片机原理及接口技术实践教程. 北京:机械工业出版社. 20042 何立民. MCS-51系列单片机应用系统设计. 北京:北京航空航天大学出版社. 19903 潘永雄. 新编单片机原理与应用. 西安:西安电子科技大学出版社. 20034 张迎新. 单片微型计算机原理、应用及接口技术(第2版). 国防工业出版社. 20045

13、 苏平. 单片机原理与接口技术. 电子工业出版社. 2003附录:8路抢答器源程序 OK EQU 20H;抢答开始标志位? ORG 0000H AJMP MAIN ORG 0003H AJMP INT_0 ORG 000BH AJMP T0INT ORG 0013H AJMP INT_1 ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#30;初设抢答时间为30s MOV R2,#50 MOV TMOD,#11H;设置未定时器/模式1 MOV TH1,#3CH MOV TL1,#0B0H SETB EA SETB ET0 SETB ET1 SETB EX0

14、 SETB EX1;允许四个中断,T0/T1/INT0/INT1 CLR OK SETB TR1 SETB TR0;START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未开始抢答时候显示000 JB P3.0,NEXT; ACALL DELAY JB P3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 MOV A,R1 MOV R6,A;送R1-R6,因为R1中保存了抢答时间 SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有

15、用信号 MOV R3,#0AH;抢答只显示计时,灭号数 AJMP COUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,K1 JNB P1.1,K2 JNB P1.2,K3 JNB P1.3,K4 JNB P1.4,K5 JNB P1.5,K6 JNB P1.6,K7 JNB P1.7,K8 AJMP START;=非法抢答处理程序=K1: MOV R3,#01H AJMP FANGUIK2: MOV R3,#02H AJMP FANGUIK3: MOV R3,#03H AJMP FANGUIK4: MOV R3,#04H AJMP FANGUIK5: M

16、OV R3,#05H AJMP FANGUIK6: MOV R3,#06H AJMP FANGUIK7: MOV R3,#07H AJMP FANGUIK8: MOV R3,#08H AJMP FANGUI/*=INT0(抢答时间R1调整程序)=*/INT_0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY;先在两个时间LED上显示R1 JNB P3.4,INC0;P3.4为+1s键,如按下跳到INCO JNB P3.5,DEC0;P3.5为-1s键,如按下跳到DECO JNB P3.1,BACK0

17、;P3.1为确定键,如按下跳到BACKO AJMP INT_0INC0: MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP INT_0ADD0: INC R1 ACALL DELAY1 AJMP INT_0DEC0: MOV A,R1 JZ SETR1;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP INT_0SETR1: MOV R1,#63H ACALL DELAY1 AJMP INT_0BACK0: RETI /*=INT1(回答时

18、间R2调整程序)=*/INT_1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT_1INC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT_1ADD1: INC R2 ACALL DELAY1 AJMP INT_1DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP INT_1S

19、ETR2: MOV R2,#63H ACALL DELAY1 AJMP INT_1BACK1: RETI /*=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=*/REPEAT: MOV A,R2 ;使用设定始浔重新计时 MOV R6,A COUNT: MOV R0,#00H;重置定时器中断次数 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

20、R5,30H;取十位 MOV R4,31H;取个位 MOV A,R6 SUBB A,#07H JNC LARGER;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下运行 AJMP CHECKFULL: CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计 MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查停/显示 DEC R6;计时一秒

21、R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止键退出 JNB OK,CHECKK ;只在回答倒计时才有效 AJMP NEXTTCHECKK: JNB P3.0,REPEAT ;判断是否使用锦囊NEXTT: ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT: MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5

22、JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECOUNTTZ1: JMP TRUE7TZ2: JMP TRUE8 QUIT: CLR OK;如果按下了停止键执行的程序 AJMP START/*=正常抢答处理程序=*/TRUE1: MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK;因为答题的计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2: MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3: MOV A,R2 MOV R6,A

23、 MOV R3,#03H CLR OK AJMP COUNTTRUE4: MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT

24、/* =犯规抢答程序=*/FANGUI: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH;0.3s向下运行-灭并停响 MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计 MOV R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示FF和号数 AJMP C

25、HECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR OK AJMP START;/*=显示程序=*/DISPLAY:MOV DPTR,#DAT1 MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A MOV P2,#0FFH ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A MOV P2,#0FFH ACALL DELAY2 MOV A,R4 MOVC A,A+DPTR MOV P2,#0fb

26、H MOV P0,A MOV P2,#0FFH ACALL DELAY2 RETDAT1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C0H,0FFH/*=加减时间延时(起到不会按下就加N个数)=*/DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET/*=延时去抖动用到)=*/DELAY: MOV 32H,#1

27、2HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET; /*=延时显示用到)=*/DELAY2: MOV 32H,#43HLOOP3: MOV 33H,#1EH MOV A,R7 ; JNZ KEY ;没读到有效数据时继续转到KEYLOOP2: DJNZ 33H,LOOP2 DJNZ 32H,LOOP3 RET /*=读抢答按键数据口程序=*/KEY : MOV A,P1 CJNE A,#0FFH,KEY2 ;当不全为1时的数据为有效数据KEY1: MOV 36H,A ;将有效数据送到36H暂存 AJMP LOOP2KEY2: DEC R7 AJMP KEY1 RET;T0INT: MOV TH0,#0ECH MOV TL0,#0FFHOUT: RETI/*=T1溢出中断(计时程序)=*/T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2