当前位置:文档之家› 基于51单片机的8路抢答器【最新】

基于51单片机的8路抢答器【最新】

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。

但抢答器的使用频率较低,且有的要么制作复杂,要么可幕性低。

作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设讣了本抢答器。

本设计毘以八路抢答为基本理念。

考虑到依需设定限时回答的功能,利用AT89C51单片机及外M接口实现的抢答系统利用单片机的定时器/讣数器定时和记数的原理,将软、侦件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。

用开关做键盘输出,扬声器发生提示。

同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99S设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统讣时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。

关键词:51单片机,抢答器,时间设定1抢答器设讣功能分析1.1数字抢答器的概述1.2设计任务与要求 2方案设计 3硬件电路设计 3.1总体设讣 3.2外部振荡电路 3.3复位电路的设计 3.4显示电路的设讣 3.5按钮输入电路的设讣 3.6 发声 4系统软件设汁4.1程序系统结构图 4・2程序流程图 4.3程序代码:4. 3.1査询程序: 4. 3. 2非法抢答处理程序:目录4. 3. 3倒il 时程序(包括有效抢答程序): 11 4. 3. 4正常抢答处理程序: 13 4. 3. 5犯规抢答程序: 14 4. 3. 6显示程序:15 4. 3. 7延时(显示和去抖动用到): 16 4. 3. 8 TO 溢出中断(响铃程序): 17 4. 3. 9 T1溢出中断(计时程序):17 总结 18 参考文献1910 101抢答器设计功能分析r 1数字抢答器的概述对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。

抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。

选手们都站在同一个起跑线上,体现了公平公正的原则。

1.2设计任务与要求基本要求:1.给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。

2.抢答器具有数据锁存和显示的功能。

抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。

此外,要封锁输入电路,禁止其他选手抢答。

发挥部分:1.抢答器具有定时抢答的功能,且一次抢答的时间可以山主持人设定(如30秒)。

当节U主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。

2. 参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。

3. 如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示00。

4. 选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。

第1页共21页:2方案设计该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。

山于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周囤的辅助电路也比较少,便于控制和实现。

整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。

MCS-51 单片机特点如下:〈1>可幕性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可鼎性高,易扩充。

〈2>单片机有一般电脑所必须的器件,如三态双向总线,审并行的输入及输出引脚,可扩充为各种规模的微电脑系统。

<3>控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

原理框图如下:图2-1原理框图3硬件电路设计 3・1总体设计根据抢答器的基本功能,可以设计出如下的单片机外H 电路::I E ■[:■O,0— n•TS . DILco-iue ^T&9> ・图3-1总体设计如图3-h P3・()为开始抢答,P3.2为停止,P1.0-P1.7为八路抢答输入,数码 管段选POD,位选P2口低3位,蜂鸣器(用绿灯代替)输出为P3. 6口。

P3.2为时 间加1调整,P3.3为时间减1调整。

3・2外部振荡电路+ C? I . . 4 TTT in I - 1 XI …,,I . -x&pzL jonvBTSt r-L CM .小巳』In • UTE ::'-图3-2外部振荡电路一般选用石英晶体振荡器。

此电路在加电大约延迟lOms 后振荡器起振,在XTAL2引脚产生幅度为3Y 左右的正弦波时钟信号,其振荡频率主要山石英晶振的频率确定。

电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振 荡器的频率进行微调。

C1,C2的典型值为30PF 。

U1XI-n I —-1 XI -LhizLcfivawx r - C3 TTn 1«U・,.「匸•十.・iwr rUlTAJU ♦OMXM IO^A*3 $0 l/A>4 in^Aic H1. 1K八»7»An ,S3Meaz a ~PTO PT 1 pts PT3 pt* rt» fM6 PT? ,TS2.e rasfn Tim口ic tel.I THftDca匚U2;AU2:CZOU2:B«a西安建筑科技大学课程设讣(论文)图3-5抢答按键3・3复位电路的设计单片机的第9脚RST 为硬件复位端,只要将该端持续4个机器周期的高电平即 可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图所示:• • C1 …....= TE :T图3-3复位电路在方案中使用到了硬件复位和软件复位两种功能,山上面的硕件复位可使寄 存器及存储器的值都恢复到初始值,而前面的功能提到了倒计•时间需要有记忆功 能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位 功能。

软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让 它跳转到程序执行的起始地址。

3・4显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CG 它是共阴极的,山高电平点亮。

ABCDEFG DP 4Sd4图3-4阴极七段数码管按钮输入电路的设计抢答器的输入按钮使用常开开关,・•-Os-. ——O ・ O — ・-J —I-» —O ・ O — —Q ・ Q — …—O ,O — —・ O-—O ・ O — …JZZL.这些常开开关组成了抢答按键,硬件电路简单,在程序设讣上也不复杂,只 要在程序中消除在按键过程中产生的"毛刺"现象就可以了。

这里采用最常用的 方法即延时法,其的原理为:因为"毛刺”脉冲一般持续时间短,约为儿ms,而 按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一 段时间(这里取lOms )后再判断此电平是否保持原状态,如果是则为有效按键,否 则无效。

3・6发声这里能利用程序来控制单片机P3. 6口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“冶r “低"电平的持续时间,就能改变输出频率,从而改变音调,使扬声器发出不同的声音。

4系统软件设计4・1程序系统结构图硬件电路确定后,软件的编程要与硬件相匹配,软硬件才能结合完成所要实现的功能。

山功能分析得到以下的软件结构图:系统初始化模块按键模块图4-1软件系统结构图4・2程序流程图整个程序主要山定时器TO、定时器T1、外部中断0和主程序构成。

定时器TO用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3. 7取反,扬声器发声,改变定时器初值,可改变扬声器频率。

定时器程流程图如下:图4-2响铃程丿芋流程图定时器T1用于倒计时,每次中断为50",当计数标志为20时即为一秒,显示数字减一。

其流程图如下:图4-3倒计时中断流程图外部中断0用于调整倒计时时间,流程图如下:图4-4调整抢答时间流程图西安建筑科技大学课程设讣(论文)主程序协调三个中断一起工作,实现抢答功能,其流程图如下:图4-5主程序流程图西安建筑科技大学课程设讣(论文)4・3程序代码:P3.0为开始抢答,P3.1为停止,P1.0-P1.7为八路抢答输入,数码管段选P0口,位选P2的低三位口, 蜂鸣器输出为P3. 6 口。

ORG 0000H AJMP MAIN ORG 0003H AJMP INTOSUB ORG OOOBH AJMP TOINT ORG OOIBH AJMP HINT ORG 0040H MAIN: MOV R1,#OFH;初设抢答时间为15sEXl;允许四个中断,TO/Tl/INTO/INTl CLR OK CLR RING SETB TRI OK EQU 20H 抢答开始标志位 RING EQU 22H 响铃标志位 MOV R2, #OAH;初设答题时间为10s MOV 设置未定时器/模式1 MOV THO, #OFOH MOV TLO, #OFFH; 越高发声频率越高,越尖 MOV THl, #3CH MOV TL1,#OBOH; 50nis 为一次溢出中断 SETS EA SETS ETO SETB ETl SETB EXO SETBSETB TRO:一开始就运行定时器,以开始显示FFF.如果想重新计•数,<置TH1/TL1就可以了4.3.1查询程序:START: MOV R5,#0BHMOV R4, #OBHMOV R3, #OBHACALL DISPLAY;未开始抢答时候显示FFFJB P3. 0, NEXTACALL DELAYJB P3. O,NEXT;去抖动,如果"开始键〃按下就向下执行,否者跳到非法抢答査询ACALL BARK;按键发声MOV A, R1MOV R6,A;送R1-〉R6,因为R1中保存了抢答时间SETB OK;抢答标志位,用于COUNT只程序中判断是否査询抢答MOV R3,#0AH;抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序r査询有效抢答的程序〃在COUNT里面NEXT: JNB Pl.O, FALSElJNB P1. 1, FALSE2JNB P1.2,FALSE3JNB Pl. 3, FALSE4JNB Pl. 4, FALSE5JNB Pl. 5, FALSE6JNB Pl. 6, FALSE?JNB Pl. 7, FALSE8AJMP START4. 3・2非法抢答处理程序:MOV R3, #01HFALSE 1: ACALL BARK;按键发声AJMP ERROR MOV R3, #01HJNB Pl. 5, TRUE6CLR CSUBB 扎 #07HMOV 扎 ROCJNE A, SOAH, FULL; Is 中0. 5s 向下运行CLR RINGAJMP CHECKSETB RINGMOV A, R6计时完毕 MOV RO, #00H—秒标志减1AJMP CHECKMOV RO, #00HACALL DISPLAYJNB Pl. 0, TRUElJNB Pl. 1, TRUE2JNB Pl. 2, TRUESJNB Pl. 3, TRUE4JNB Pl. 4, TRUESMOV R5, 30H 取十位 MOV R4, 31H取个位 MOV A, R6JNC LARGER ;大于5s 跳到LARGER,小于等于5s 会提醒FULL:CJNE A, #14H, CHECK;Is 时,响并显示号数并清RO,重新计时 JZ QUITDEC R6LARGER: MOV 扎 ROCJNE A, #14H, CHECK如果Is 向下运行,否者跳到査"停/显示〃 DEC R6; 计时一秒R6自动减1CHECK:JNB P3. 1, QUIT;如按下停止键退出JNB Pl. 6, TRUE?西安建筑科技大学课程设讣(论文)MOV R6, A西安建筑科技大学课程设讣(论文) MOV R6, AJNB P1. 7, TRUE8AJMP RECOUNTCLR RINGACALL BARKAJMP START4 3. 4正常抢答处理程序:TRUEl: ACALL BARK;按键发声AJMP L00P2TRUE2:ACALL BARK;AJMP L00P2TRUES:ACALL BARK;AJMP L00P2TRUE4:ACALL BARK;QUIT: CLR OK如果按下了"停止键“a 新回到开始MOV A, R2MOV R3, #04HCLR OKMOV 扎R2 MOV R6,A;抢答时间R2送R6MOV R3, #01HCLR OK;MOV A, R2MOV R6, AMOV R3, #02HCLR OKMOV A, R2MOV R6, AMOV R3, #03HCLR OKTRUE5: ACALL BARK;MOV 扎R2MOV R6, AMOV R3, #05HCLR OKAJMP L00P2TRUE6: ACALL BARK;MOV A, R2MOV R6, AMOV R3, #06HCLR OKAJMP L00P2TRUE?: ACALL BARK;MOV A, R2MOV R6, AMOV R3, #O7HCLR OKAJMP L00P2TRUES: ACALL BARK;MOV A, R2MOV R6, AMOV R3, #08HCLR OKL00P2; AJMP DISPLAY ;抢答后停止计时,等待返回SETB RINGJNB P3. 1 QUITAJMP L00P24 3. 5犯规抢答程序:ERROR: SETB RING ;犯规响铃MOV R4,#0BH;显示FF和犯规号数LOOPS: ACALL DISPLAYJNB P3. 1 QUITl; 等待“停止”键按下AJMP LOOPSQUITl: CLR RINGCLR OKAJMP START4 3. 6显示程序:査表显示程序,利用PO 口做段选码口输di/P2低三位DISPLAY:MOV DPTR,#DAT1;做位选码输出MOV A, R5Move A, @A+DPTRMOV P2, #01HMOV PO, AACALL DELAYMOV DPTR, SDAT2MOV A, R4Move A, @A+DPTRMOV P2, #02HMOV PO, AACALL DELAYMOV A, R3Move A, @A+DPTRMOV P2, #04HMOV PO, AACALL DELAYRETDAT1:DB OOH, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, OOH, 71H /灭n rn m m “5","甘、"Y、"苦、"y、〃灭 n P西安建筑科技大学课程设讣(论文)CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99 j\Rl 就置0,重新加第1页共21页:3FH, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, OOH, 71HDAT2:DB DELAY1: MOV 35H, #08HLOOPO: ACALL DISPLAYDJNZ 35H, LOOPORET4 3・7延时(显示和去抖动用到):DELAY:MOV 32H, #12H LOOP:MOV 33H, #OAFH LOOPl:DJNZ 33H, LOOPl DJNZ 32H, LOOPRET发声程序: BARK: SETS RINGACALL DELAY1ACALL DELAY1CLR RING;按键发声 RETINTO (抢答时间R1调整程序):INTOSUB:MOV A, R1MOV B, #OAHDIV ABMOV R5, AMOV R4,BMOV R3, #OAHACALL DISPLAY ; 先在两个时间LED 上显示R1JNB P3. 2, INCO; P3. 2为+1S 键,如按下跳到INCOJNB P3. 3, DECO; P3. 3为-Is 键,如按下跳到DECOJNB P3. 4, BACKO; P3. 4为确定键,如按下跳到BACKO AJMP INTOSUBINCO: MOV A, R1西安建筑科技大学课程设讣(论文)第1页共21页:发出一定频率的声音OUT: RETI 4 3.9 T1溢出中断(计时程序):T1INT: MOV TH1, #3CHMOV TLl, #OBOHINC RORETIENDADDO: DECO: SETRl: BACKO: MOV R1, #00HACALL DELAY1AJMP INTOSUBINC R1ACALL DELAY1AJMP INTOSUBMOV A, R1JZ SETRl;如果R1 为0, R1 就置99,DEC R1ACALL DELAY1AJMP INTOSUBMOV Rl, #63HACALL DELAY1AJMP INTOSUBRETI4. 3.8 TO 溢岀中断(响铃程序):TOINT:MOV THO, #OECHMOV TLO,#OFFHJNB RING, OUTCPL P3.6RING 标志位为1时候P3・6口不短取反使喇叭西安建筑科技大学课程设讣(论文)CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99 j\Rl就置0,重新加总结通过此次的课程设计,让我更进一步的巩固了单片机的各种知识。

相关主题