您当前的位置:首页 >  书信文档 >  意向书 > 内容

基于AT89C51单片机多人抢答器设计(无仿真)

无忧文档网    时间: 2021-01-05 12:25:01     阅读:

单位代码 学  号 分 类 号 密 级 课程设计 基于AT89C51单片机的多人抢答器设计 学 院 名 称:
工 学 院 专 业 名 称:
机械设计制造及其自动化 学 生 姓 名:
学 生 学 号:
指 导 老 师:
2014 年 X 月 X 日 摘 要 多路数字抢答器在各种智力竞赛中经常用到。在各校举行的各种竞赛中我们也经常看到有抢答的环节,举办方多数采用让选手通过举答题板的方法判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。为解决这个问题,我准备借本次课程设计的机会制作一个八路数显抢答器。一方面加深我们对所学习的知识的了解,巩固模拟、数字电路知识,也提升我们解决日常生活中常见问题的能力,掌握一般设计方法与设计步骤。积累实际设计制作经验,为走向更复杂更实用的应用领域奠定基础。控制系统主要由单片机控制电路、存储器接口电路及显示电路组成。具体以AT89C51单片机为系统工作核心,负责控制各个部分协调工作。在其外围接上了复位电路、上拉电阻、数码管、按钮及扬声器,用到的元器件有晶振X1、电容C1、C2、C3、电阻RP1,P3.0、P3.1由主持人控制,分别为抢答停止和开始键。P1.0-1.7是8组输入口,P2.0-P2.3为数码管的段选口,位选口用的是P.0-P0.6口输出,外部中断0、1和P3.3和P3.4为抢答计时调整口,实现对各队的计时,并且加减调整,外部中断0、1实现对答题时间的调整,P3.4和P3.5分别实现了对时间的加一和减一,P3.6为蜂鸣口的控制口,安装了led灯。其中用到了WAVE软件,集成调试环境,集成编辑器、编译器、调试器,支持软件模拟等。同时也用到了PROTEUS软件,通过仿真可完全实现对所设计系统的功能的模拟。

关键词:多路数字抢答器;
AT89C51; WAVE; PROTEUS; 目 录 1 绪论……………………………………………………………………………..1 1.1 引言………………………………………………………………………..2 1.2 抢答器原理………………………………………………………………..2 2 硬件设计………………………………………………………………………..3 2.1 晶振复位及开始抢答电路..........................................................................3 2.2 选手抢答键………………………………………………………………..3 2.3 显示与显示驱动电路……………………………………………………..4 2.4 蜂鸣音频及LED灯输出电路……………………………………………..4 3 软件设计………………………………………………………………………..5 3.1 系统流程图………………………………………………………………..5 3.2 显示抢答违规流程图……………………………………………………..7 3.3 抢答成功流程图…………………………………………………………..7 4 系统仿真………………………………………………………………………..8 4.1 仿真步骤…………………………………………………………………..8 5 课程设计总结与体会…………………………………………………………10 参考文献…………………………………………………………………………..10 附录………………………………………………………………………………..12 附录A..…………………………………………………………………………12 附录B…………………………………………………………………………..23 1 绪论 1.1 引言 单片机作为计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。对于计算机专业的学生来说,即使暂时没有从事单片机的应用与开发,学习单片机也有很重要的意义。学习它,不仅为将来可能从事该方面的开发打下基础,另一方面,由于单片机作为微型计算机的一个种类,麻雀虽小,五脏俱全,可以把它当作微型计算机的一个简化模型来看待,学习单片机可以加深对微型计算机工作原理的理解,更加清楚计算机的脉络。同时,提供了一个实际应用手段。21世纪,是一个信息技术飞速发展的时代,智力竞赛是一种形式比较活泼的教育方式,是人们休闲娱乐生活的一部分。这些竞赛一方面充实了人们的娱乐生活,另一方面也提高了人们努力汲取相关领域的知识的兴趣。智力竞赛,也就是几个参赛选手之间在规定的时间,规定的地点相互竞争的比赛。

抢答是各种竞赛常用的一种形式。在抢答赛中,往往要有主持人宣布抢答的开始,还要确定是哪个选手抢到了答题权,具体答题的时间有时也要设定。这些如果仅凭主持人的主观判断,很容易出现误判的情况。因此,在竞赛中,抢答器就扮演了一个非常重要的角色。

抢答器由计数器、寄存器、集成定时器和译码显示等组合、时序电路组成。可分为抢答电路,定时电路,报警电路等几个单元部分。每个单元电路分别可以处理一些抢答竞赛中的基本问题。

本次课程设计设计的是一个多路定时抢答器,是一个多于两位选手参赛的一个抢答器,具有锁存和显示功能。同时有主持人控制系统的清零和抢答的开始。抢答开始后,若有任何一名选手按动抢答按钮,抢答器就会显示该选手编号直至系统被主持人清零,并有扬声器发出提示,同时其他人再抢答就无效了。这次设计的抢答器还有自动定时功能,主持人可以设定选手答题的时间。当主持人启动“开始”键后,定时器会自动减计时,这个会显示在显示器上。选手只有在抢答时间内抢答才有效,若在答题时间内没有选手答题,时间到时,报警电路就会发出警报亮灯并且禁止抢答。.。。。。. T5 1.2 抢答器的原理 抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。主持人按下开始抢答键才可以抢答。主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。

1.3 单片机控制原理 单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。

简单的说,用单片机系统来设计抢答器,实现两组的抢答时间即使是相差几微秒,也可分辨出哪组优先答题。

2 硬件设计 2.1 晶振复位及开始抢答电路 晶振的频率为12MHZ,提供89C51的时钟脉冲使89C51工作,复位电路是单片机初始化,使单片机重新开始执行程序。当复位开关按下RST由低电平变为高电平,则程序从头开始执行,在此次课程设计电路中当一个问题结束主持人后按下复位开关后进行下一题的准备。

图1复位及开始抢答电路 2.2选手抢答键 89C51的P1口做一个为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口个端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。

图2选手抢答电路 2.3显示与显示驱动电路 此电路包括显示和驱动,显示采用数码管,驱动用P2口, 违规者编号、抢答30秒倒计时、正常抢答者编号和回答问题时间60秒倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5V电压下接10k的电阻,保证正常压降。

图3显示与显示驱动电路 2.4蜂鸣器音频及LED灯输出电路 通过控制不同频率的矩形脉冲来控制蜂鸣器发声。此次课程设计中只需要一些简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到得提示声和亮灯提醒。

图4输出电路 3 软件设计 3.1系统流程图 开 始 初 始 化 读键盘是否有键按下 调用显示抢答违规并报警子程序 Y 中断条件是否满足 N 进入中断程序 Y N 开 始 开中断并响声提示 设定定时器初值并启动定时器 30秒抢答时间并显示 调用读键子程序为延时程序 是否有键按下 调用抢答者获得的回答问题子程序 N Y 60秒到中断返回 图1系统流程图 3.2显示抢答违规流程图 3.3抢答成功流程图 开 始 报警一直提示 显示违规者编号 开 始 响声提示 设置定时器初值并启动 显示抢答者后30秒倒计时 60秒答问题时间到并响声提示 RET 图2显示抢答违规流程图 图3抢答成功流程图 4 系统仿真 4.1仿真步骤 1)程序设计后,用汇编软件(伟福6000)编译,生成.HEX文件。

2)在proteus中加载.HEX文件。

3)点击开始仿真软件,进行仿真。仿真效果如下:
5课程设计的总结与体会 自接触单片机以来,一直觉得单片机非常难,这次的课程设计我开始是以老师布置题目为主要选择对象的,但是后面发现,像八路数字抢答器在我脑海中根本没得一点意象,上网搜了很多资料,也感觉不怎么很懂,于是问老师怎么弄,后面发现老师的意见和我的原本的程序和图只有几个地方不同,于是便将两者综合了一下,经调试和运行后,发现还行的通,于是便开始了忐忑的正文模版之路,以为快搞完了,后面发现其实程序和图还是要细细的弄懂才能写好报告,于是我又将程序和图细细的剖析了一遍,然后慢慢将流程图和proteus图画好和截取下来,经过最近这段时间的在电脑前面的驻守,觉得只要自己肯付出和努力,发现其实很多的东西不是那么难懂的,以后还是要好好提升自己的动手能力和独立思考的能力。

参考文献 [1] 张迎新. 《单片机初级教程》.北京航天航空大学出版社 2000年. [2] 康华光. 《电子技术基础(模拟部分)》.第四版 高等教育出版社 1999年. [3] 喻宗泉. 《单片机原理与应用技术》.西安电子科技大学出版社 2005年. [4] 万光毅. 《单片机实验与实践教程》. 北京航天航空大学出版社 2003年. [5] 张俊谟. 《单片机初级教程》.北京航天航空大学出版社 2000年. 附录 A(源文件) OK EQU 20H;抢答开始标志位 RING EQU 22H;铃声标志位 ORG 0000H AJMP MAIN ORG 00003H AJMP INT0SUB ORG 000BH AJMP TOINT ORG 0013H AJMP INT1SUB ORG 001BH AJMP T1INT ORG 0040H MAIN: MOV R1,#3O;初设抢答时间30S MOV R2,#60;初设答题时间60S MOV TMOD,#11H;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高发生频率越高、越尖 MOV TH1,#3CH MOV TL1,#0B0H;5Oms为一次溢出中断 SETB EA SETB ET0 SETB ET1 SETB EX0 SETB EX1;允许四个中断TO、T1、INT0、INT1 CLR OK CLR RING SETB TR1 SETB TR0;开始就运行定时器,以开始显示FFF,如果想要重新计数,重置TH1/TL1就可以了 ;=====查询程序====== START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未开始抢答时显示FFF JB P3.0,NEXT; ACALL DELAY JB P3.0,NEXT;去抖动,如果“开始键”按下就向下执行,否则跳到非法抢答查询 ACALL BARK;按键发声 MOV A,R1 MOV R6,A;送R1到R6,因为R1中保存了抢答时间 SETB OK;抢答标志位,用于COUNT子程序中判断是否查询抢答 MOV R7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号 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,FALSE7 JNB P1.7,FALSE8 AJMP START ;=======非法抢答处理程序======= FALSE1:MOV R3,#01H AJMP ERROR FALSE2:MOV R3,#02H AJMP ERROR FALSE3:MOV R3,#03H AJMP ERROR FALSE4:MOV R3,#04H AJMP ERROR FALSE5:MOV R3,#05H AJMP ERROR FALSE6:MOV R3,#06H AJMP ERROR FALSE7:MOV R3,#07H AJMP ERROR FALSE8:MOV R3,#08H AJMP ERROR ;======INTO(抢答时间R1调整程序)====== INT0SUB: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键,如果按下跳到INC0 JNB P3.5,DEC0 ;P3.5为减1s键,如果按下跳到DEC0 JNB P3.1,BACK0 ;P3.1为确定键,如果按下跳到BACK0 AJMP INT0SUB INC0:MOV A,R1 CJNE A,#63H,ADD0;如果不是99,R2加到99,R1就置0 重新加起 MOV R1,#00H ACALL DELAY1 AJMP INT0SUB ADD0:INC R1 ACALL DELAY1 AJMP INT0SUB DEC0:MOV A,R1 JZ SETR;如果R1为0,R1就置99 DEC R1 ACALL DELAY1 AJMP INT0SUB SETR:MOV R1,#63H ACALL DELAY1 AJMP INT0SUB BACK0:RETI ;=======INT1(回答时间R2调整程序)========== INT1SUB: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 INT1SUB INC1:MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY1 AJMP INT1SUB ADD1:INC R2 ACALL DELAY1 AJMP INT1SUB DEC1:MOV A,R2 JZ SETR DEC R2 ACALL DELAY1 AJMP INT1SUB BACK1:RETI ;======倒计时程序(抢答倒计时和回答倒计时都跳到该程序)===== REPEAT:MOV A,R2;使用锦囊是重新计时 MOV R6,A CLR RING COUNT:MOV R0,#00H;重新定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器 RECONT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB;除十分出个位/十位 MOV 30H,A;十位存于(30H) MOV 31H,B;个位存于(31H) MOV 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向下运行 CLR RING AJMP CHECK FULL:CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0重新计 SETB RING MOV A,R6 JZ QUIT;计时完毕 MOV R0,#00H DEC R6;一秒标志减1 AJMP CHECK LARGER:MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否则跳到查询“停/显示” DEC R6;计时一秒R6自动减1 MOV R0,#00H CHECK:JNB P3.1,QUIT;如按下停止键退出 JNB OK,CHECKK;只在回答倒计时才有效 AJMP NEXTT CHECKK:JNB P3.0,REPEAT;判断是否使用锦囊 NEXTT:ACALL DISPLAY JB OK,ACCOUNT;如果是抢答倒计时,如果是查询抢答,否则跳过查询继续倒计数(这里起到锁抢答作用) AJMP RECONT ACCOUNT:MOV A,36H JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ1 JNB ACC.7,TZ2 AJMP RECONT TZ1:JMP TRUE7 TZ2:JMP TRUE8 QUIT:CLR OK;如果按下了“停止键”执行的程序 CLR RING AJMP START ;========正常抢答处理程序======== TRUE1:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE2:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#02H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE3:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#03H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE4:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#04H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE5:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#05H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE6:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#06H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE7:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#07H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT TRUE8:ACALL BARK MOV A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#08H CLR OK;因为答题计时不再查询抢答,所以就锁了抢答 AJMP COUNT ;=======犯规抢答程序======= ERROR:MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯规号数暂存到(34H) HERE:MOV A,R0 CJNE A,#06H,FLASH;0.3s向下运行灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三灯全灭 AJMP CHECK1 FLASH:CJNE A,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R3,34H;取回号数 MOV R5,#0BH MOV R4,#0BH;显示FF和号数 AJMP CHECK1 CHECK1:JNB P3.1,QUIT1 LCALL DISPLAY AJMP HERE QUIT1:CLR RING CLR OK LJMP START ;=======显示程序======== DISPLAY:MOV DPTR,#DAT1;查询显示程序利用P0口做段选码口输出P2低3位做位选码输出 MOV A,R3 MOVC A,@A+DPTR MOV P2,#0FEH MOV P0,A ACALL DELAY2 MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A ACALL DELAY2 MOV A,R4 MOVC A,@A+DPTR MOV P2,#0FDH MOV P0,A ACALL DELAY2 RET DAT1: DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H ;灭、0、1、2、3、4、5、6、7、8、9、灭、F DAT2: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;第一个为0,其他与上相同,因为十位如果为0,显示灭 ;?=====加减时间延时(起到不会按下就加N个数)======== DELAY1:MOV 35H,#08H LOOP0:ACALL DISPLAY DJNZ 35H,LOOP0 RET ;======延时4236个机器周期(去抖动用到)====== DELAY:MOV 32H,#12H LOOP:MOV 33H,#0AFH LOOP1:DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET ;=======延时4236个机器周期(显示用到)======== DELAY2:MOV 32H,#43H LOOP3:MOV 33H,#1EH MOV A,R7;每隔60到70个机器周期读一次P1口全为1时为无效数据,继续读一个不为1时转到正常抢答处理 JNZ AAAA1;没读到有效数据时继续转到AAAA1 LOOP2:DJNZ 33H,LOOP2 DJNZ 32H,LOOP3 RET ;===========读抢答按键数据口程序========= AAAA1:MOV A,P1 CJNE A,#0FFH,AA1;当不全为1时的数据为有效数据 AA0:MOV 36H,A;将有效数据送到36H暂存 AJMP LOOP2 AA1:DEC R7 AJMP AA0 ;===========发声程序========== BARK:SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按键发声 RET ;============T0溢出中断====== TOINT:MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT CPL P3.6;RING标志位为1时P3.6口不短路取反使喇叭发出一定频率的声音 OUT:RETI ;============T1溢出中断(计时程序)=========== T1INT:MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END 附录 B (电路总设计图) 4.1 原理及电路总框图 图1抢答器总原理图

《基于AT89C51单片机多人抢答器设计(无仿真).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

相关热搜

《基于AT89C51单片机多人抢答器设计(无仿真).doc》

VIP请直接点击按钮下载本文的Word文档下载到电脑,请使用最新版的WORD和WPS软件打开,如发现文档不全可以联系客服申请处理。

文档下载
VIP免费下载文档

浏览记录