8路抢答器实训设计论文.docx
《8路抢答器实训设计论文.docx》由会员分享,可在线阅读,更多相关《8路抢答器实训设计论文.docx(16页珍藏版)》请在冰豆网上搜索。
![8路抢答器实训设计论文.docx](https://file1.bdocx.com/fileroot1/2023-1/8/d56af399-9efc-4fe6-a86f-b1ab3e7dd318/d56af399-9efc-4fe6-a86f-b1ab3e7dd3181.gif)
8路抢答器实训设计论文
2010——2011学年第二学期
单片机8路抢答器
班级:
姓名:
指导老师:
日期:
2010年11月15日——2010年11月21日
摘要:
本单片机8路智能抢答器系统由按键识别模块和LED显示及蜂鸣器响应模块组成。
按键识别模块是用14个按键组成的独立式键盘实现的,其中,8个抢答键,1个开始键,1个结束键,3个时间调整键,1个复位键。
显示部分用3个七段数码管LED灯显示相应的控制信息。
当有相应按键按按下或抢答抢答超时,LED灯有相应的控制信息,蜂鸣器也有发声。
关键词:
单片机8路抢答器第一信号鉴别器智能系统
目录
一、绪论…………………………………………………………()
二、抢答器设计功能分析………………………………………()
1、设计任务及要求…………………………………………()
2、理论分析………………………………………………()
三、硬件模块设计………………………………………………()
1、方案比较…………………………………………………()
2、按键部分…………………………………………………()
3、显示部分…………………………………………………()
4、复位电路部分……………………………………………()
5、振荡电路部分……………………………………………()
四、软件模块设计………………………………………………()
1、程序流程图………………………………………………()
2、源程序代码………………………………………………()
五、总体设计验证………………………………………………()
六、购买电路元器件及安装……………………………………()
七、结论…………………………………………………………()
八、参考文献……………………………………………………()
一、绪论
我们对抢答器并不陌生,它是用于很多竞赛场合中,真正实现先抢先答,让最先抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和足够的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
本设计的系统具有电路构成简单、实用性强、判断精确、操作简单、扩展功能强等优点。
它的功能要求是在主持人按下开始键后,开始计时,数码管会显示抢答剩余时间,直到8个参赛选手中的一个按下抢答按键,LED就会显示谁的编号,蜂鸣器也会发音,提示主持人有选手抢答,其他抢答无效。
当参赛者耗时太多时,蜂鸣器会在最后5s发音提示所有参赛选手。
如果参赛选手在主持人还未按下开始键就按下抢答键,这叫抢答犯规,系统会报警并显示抢答犯规选手编号。
如果在设定的抢答时间内无选手抢答,系统会回到开始状态,等待主持人再次按下开始键进行重新抢答或进行下一题的抢答。
根据设计的要求,本系统不但采用独立式按键,通过单片机不停的扫描按键来控制LED灯和蜂鸣器,用定时器T0来定超时的时间,当超时的时候让蜂鸣器发音外,而且是可调抢答时间的智能系统。
随着我国经济和文化事业的发展,在很多公开竞争场合要求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此需要有性能优越,功能强大的抢答器。
一般由很多电子元器件和很复杂的基本电路组成的抢答器,线路复杂,可靠性不高,功能也比较简单,特别是当抢答者很多时,实现起来就更为困难。
因此我们设计了以单片机为核心的新型智能的抢答器,在保留原始抢答器的基本功能的同时又增加了数码管及蜂鸣器显示电路实现了其它功能。
抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。
此次设计用到了核心控制元件AT89C51单片机、数码管、蜂鸣器、电阻、电容、5V电源。
采用汇编语言编程,使其实现其基本的功。
二、抢答器功能分析
1、设计任务与要求
(1)给主持人设置两个开关按钮,一个按钮用来开始抢答,另一个用来结束抢答,控制系统清0,回到等待主持人再次按下开始键按钮状态。
(2)抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码管显示选手的编号,同时扬声器给出音响提示。
此外,要封锁输入电路,禁止其他选手抢答。
(3)抢答器具有定时抢答的功能,且一次抢答的时间可以由主持人设定(最大99秒)。
当节目主持人启动“开始”键后,要求扬声器发出短暂的声响,同时定时器立即减计时,并用显示器显示,并且在最后抢答5S的时间内,扬声器不断发出声响,提示抢答选手。
参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人按下停止键按钮将系统清零为止。
如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统会自动回到清0状态并,选手超时后抢答,系统会认为是抢答违规,系统会一直报警,LED显示FF和违规选手编号,直到主持人按下停止按钮键将系统清0为止。
(4)选手在主持人还未按下开始抢答按钮前按下抢答按钮,系统会一直发出声响,并且LED显示FF和抢答违规选手编号,直到主持人按下停止按钮将系统清0为止。
2、理论分析
8路智能抢答器使用单片机来设计制作完成,其功能的实现主要通过软件编程来完成。
其硬件电路主要包括了单片机应用电路、键盘接口电路、显示接口电路、发声电路。
MCS-51单片机有四个8位双向输入/输出接口,而且当外部没有信号输入时能自动的跳到高电平,所以通过外部独立按键所接端口的高低电平变化可以判断出哪个按键按下了,单片机识别I/O口的电平后,控制相应的端口使LED数码管显示控制信息及扬声器发声,实现其功能。
理论模块图如下:
三、硬件模块设计
1、方案比较
(1)单片机的选择:
(2)输入按键的选择:
(3)LED显示器的选择:
(4)发声元件的选择:
2、按键部分
抢答器的输入按钮使用常开开关,8个按钮与单片机的P1口的8位连接。
电路连接图如图2所示:
3、复位电路部分
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图3所示:
本设计也采用了软件复位。
4、显示部分
单片机的P0口的8位与数码管连接,并且要接上拉电阻与电源相连,单片机的P2口的低3位控制数码管的选择位,并且接非门元件。
连接电路图如图4所示:
5、振荡电路、时间调整及发声部分
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
其电路如图5所示:
时间调整电路中的按钮也是采用常开开关,加1调整按钮与单片机的P3.2口相连,减1调整按钮与单片机的P3.3口相连,返回控制按钮与单片机的P3.4口相连。
单片机的P3.6口是发音输出端口,与扬声器相连。
其电路如图6所示:
四、软件模块设计
1、程序流程图
(1)整个程序主要由定时器T0、定时器T1、外部中断0和主程序构成,定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置1,每次中断都对P3.6取反,扬声器发声,改变定时器初值,可改变扬声器频率。
其流程图如下图7所示:
(2)定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。
其流程图如下图8所示:
(3)外部中断0用于调整倒计时时间,可调时间范围为0到99秒,其程序流程图如图9所示:
(4)主程序协调3个中断一起工作,实现单片机的控制功能,其程序流程图如下图10所示:
2、源程序代码
ORG0000H
AJMPMAIN;无条件转移到主程序
ORG0003H;外部中断0入口地址
AJMPINT0SUB;无条件转移到抢答时间R1调整处理程序
ORG000BH;T0益出中断入口地址
AJMPT0INT;无条件转移到T0益处中断响应程序
ORG001BH;T1益出中断入口地址
AJMPT1INT;无条件转移到T1中断计时程序
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0040H
MAIN:
MOVR1,#0FH;初设抢答时间为15s
MOVR2,#0AH
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA;CPU开中断
SETBET0;允许T0中断
SETBET1;允许T1中断
SETBEX0;允许外部中断0中断
SETBEX1;允许外部中断1中断
CLROK;对开始抢答标志位清0
CLRRING;对响铃标志位清0
SETBTR1;允许T1计时
SETBTR0;允许T0计时,以开始显示FFF
START:
MOVR5,#0BH;查询程序
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;调用显示程序并返回,未抢答时显示FFF
JBP3.0,NEXT;位=1转移到NEXT程序
ACALLDELAY;调用延时处理程序
JBP3.0,NEXT;如果开始键按下就向下执行,否者跳到非法抢答查询
ACALLBARK;调用发声程序使按键按下发声
MOVA,R1
MOVR6,A;送R6←A,因为R1中保存了抢答时间
SETBOK;对抢答标志位置1
MOVR3,#0AH
AJMPCOUNT;无条件转移到倒计时处理程序
NEXT:
JNBP1.0,FALSE1;非法抢答处理程序,判断抢答键是否按下
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
AJMPSTART;无条件转移到查询程序
FALSE1:
ACALLBARK;调用发声程序按键发声
MOVR3,#01H
AJMPERROR;无条件转移到犯规抢答处理程序
FALSE2:
ACALLBARK
MOVR3,#02H
AJMPERROR
FALSE3:
ACALLBARK
MOVR3,#03H
AJMPERROR
FALSE4:
ACALLBARK
MOVR3,#04H
AJMPERROR
FALSE5:
ACALLBARK
MOVR3,#05H
AJMPERROR
FALSE6:
ACALLBARK
MOVR3,#06H
AJMPERROR
FALSE7:
ACALLBARK
MOVR3,#07H
AJMPERROR
FALSE8:
ACALLBARK
MOVR3,#08H
AJMPERROR
COUNT:
MOVR0,#00H;倒计时处理程序,重置定时器中断次数
MOVTH1,#3CH
MOVTL1,#0B0H
RECOUNT:
MOVA,R6;R6保存了倒计时的时间
MOVB,#0AH
DIVAB;除法指令
MOV30H,A;十位存于(30H)
MOV31H,B;个位存于(31H)
MOVR5,30H;取十位
MOVR4,31H;取个位
MOVA,R6
CLRC
SUBBA,#07H
JNCLARGER;C=1转移,C=按顺序执行
MOVA,R0
CJNEA,#0AH,FULL;比较不相等转移
CLRRING;对响铃标志位清0
AJMPCHECK;无条件转移到正常抢答处理程序
FULL:
CJNEA,#14H,CHECK
SETBRING
MOVA,R6
JZQUIT;A-0转移到按下停止键返回到开始
MOVR0,#00H
DECR6;计时1秒R6减1
AJMPCHECK;无条件转移到正常抢答处理程序
LARGER:
MOVA,R0
CJNEA,#14H,CHECK;比较不相等转移
DECR6;计时一秒R6自动减1
MOVR0,#00H
CHECK:
JNBP3.1,QUIT;如按下停止键退出
ACALLDISPLAY;无条件转移到显示处理程序
JNBP1.0,TRUE1;位=0转移到正常抢答处理程序
JNBP1.1,TRUE2
JNBP1.2,TRUE3
JNBP1.3,TRUE4
JNBP1.4,TRUE5
JNBP1.5,TRUE6
JNBP1.6,TRUE7
JNBP1.7,TRUE8
AJMPRECOUNT
QUIT:
CLROK;对抢答标志位清0
CLRRING;对响铃标志位清0
ACALLBARK;调用发声程序并返回
AJMPSTART;转移到查询程序
TRUE1:
ACALLBARK;调用发声程序
CLROK;对开始抢答标志位清0
MOVR3,#01H
AJMPLOOP3
TRUE2:
ACALLBARK
SETBOK
MOVR3,#02H
AJMPLOOP3
TRUE3:
ACALLBARK
SETBOK
MOVR3,#03H
AJMPLOOP3
TRUE4:
ACALLBARK
SETBOK
MOVR3,#04H
AJMPLOOP3
TRUE5:
ACALLBARK
SETBOK
MOVR3,#05H
AJMPLOOP3
TRUE6:
ACALLBARK
SETBOK
MOVR3,#06H
AJMPLOOP3
TRUE7:
ACALLBARK
SETBOK
MOVR3,#07H
AJMPLOOP3
TRUE8:
ACALLBARK
SETBOK
MOVR3,#08H
AJMPLOOP3
LOOP2:
AJMPDISPLAY;抢答后停止计时,等待返回
SETBRING;对响铃标志位置1
JNBP3.1,QUIT;等待停止键按下
AJMPLOOP2
ERROR:
SETBRING;犯规抢答程序
MOVR5,#0BH
MOVR4,#0BH;显示FF和犯规号数
LOOP3:
ACALLDISPLAY
JNBP3.1,QUIT1;等待"停止"键按下
AJMPLOOP3
QUIT1:
CLRRING
CLROK
AJMPSTART;转移到查询程序
DISPLAY:
MOVDPTR,#DAT1;显示处理程序
MOVA,R5
MOVCA,@A+DPTR
MOVP2,#01H
MOVP0,A
ACALLDELAY
MOVDPTR,#DAT2
MOVA,R4
MOVCA,@A+DPTR
MOVP2,#02H
MOVP0,A
ACALLDELAY
MOVA,R3
MOVCA,@A+DPTR
MOVP2,#04H
MOVP0,A
ACALLDELAY
RET
DAT1:
DB00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H
DAT2:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H
DELAY1:
MOV35H,#08H
LOOP0:
ACALLDISPLAY
DJNZ35H,LOOP0
RET;从子程序返回
DELAY:
MOV32H,#12H
LOOP:
MOV33H,#0AFH
LOOP1:
DJNZ33H,LOOP1
DJNZ32H,LOOP
RET;从子程序返回
BARK:
SETBRING
ACALLDELAY1
ACALLDELAY1
CLRRING;按键发声
RET
INT0SUB:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY
JNBP3.2,INC0;P3.2为+1s键,如按下跳到INCO
JNBP3.3,DEC0;P3.3为-1s键,如按下跳到DECO
JNBP3.4,BACK0;P3.4为确定键;如按下跳到BACKO
AJMPINT0SUB
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1;如果加到99了,R1就置0,重新加起
MOVR1,#00H
ACALLDELAY1
AJMPINT0SUB
ADD0:
INCR1
ACALLDELAY1
AJMPINT0SUB
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99
DECR1
ACALLDELAY1
AJMPINT0SUB
SETR1:
MOVR1,#63H
ACALLDELAY1
AJMPINT0SUB
BACK0:
RETI
T0INT:
MOVTH0,#0ECH;T0益出中断响应程序
MOVTL0,#0FFH
JNBRING,OUT
CPLP3.6;P3.6口不短取反使喇叭发出一定频率的声音
OUT:
RETI
T1INT:
MOVTH1,#3CH;T1益出中断响应程序
MOVTL1,#0B0H
INCR0
RETI
END
五、总体设计验证
六、购买电路元器件及安装
七、结论
八、参考文献