四路抢答器单片机.docx
《四路抢答器单片机.docx》由会员分享,可在线阅读,更多相关《四路抢答器单片机.docx(22页珍藏版)》请在冰豆网上搜索。
![四路抢答器单片机.docx](https://file1.bdocx.com/fileroot1/2022-10/29/23a15b04-a814-4973-9ad9-d0428437db49/23a15b04-a814-4973-9ad9-d0428437db491.gif)
四路抢答器单片机
目录
前言2
2系统设计3
2.1系统总体设计3
2.2器件选型详细清单3
2.3系统功能要求4
2.4系统原理图4
2.4.1时钟频率电路的设计5
2.4.2复位电路的设计5
2.4.3显示电路的设计6
2.4.4控制开关设计7
3系统程序设计8
3.1程序流程图8
3.2程序清单9
4Proteus仿真系列组图16
4.1上电、禁止或复位17
4.2抢答或答题时间设定17
4.3违规抢答并显示座号17
4.4抢答成功并显示倒计时18
结束语19
参考文献20
前言
抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,广泛应用于各种知识竞赛、文娱活动等场合。
随着现代娱乐节目及其它游戏环节的需要,也为了完善节目的紧张气氛和观众的互动,出现了多路抢答器。
抢答器的出现给人们带来极大的方便,它能准确无误的从若干名参赛中确定出最先抢答者,并且有显示,声效等功能。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输入,扬声器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。
主持人有开始和禁止、复位键。
主持人可以修改抢答时间和回答问题的时间,原始状态下抢答时间为15s,回答问题时间为45s。
通过加键和减键修改上述时间,改完后结束键确定。
新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒时每秒扬声器均有提示。
如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发声。
主持人可按复位键结束,开始新一轮抢答。
2系统设计
2.1系统总体设计
本系统是借用单片机采用模块化设计的4路抢答器,包括4路抢答按纽、计时显示、开始、禁止和复位控制按钮、时限设定、各种相关显示调控功能。
系统的主要功能模块方框图如下图所示。
系统功能模块图
2.2器件选型详细清单
器件名称
规格型号
数量
单片机
AT89C51
1
芯片
74LS04
1
74HC20
1
电阻
600×8200×5
13
电容
30PF10u
3
晶振
12MHZ
1
按钮
11
数码管
74EG-MP×4-CC
1
扬声器
SPEAKER
1
LED灯
LED-BIRG
4
2.3系统功能要求
1、具有清零装置和抢答控制,可由主持人操纵,避免有人在主持人说“开始”前提前抢答违反规则。
2、具有定时功能,在15秒内无人抢答表示所有参赛选手获参赛队对本题弃权。
3、15秒时仍无人抢答其报警电路工作表示抢答时间耗尽并禁止抢答。
4、如果想调节抢答时间或答题时间,按"抢答时间设定"键或"答题时间设定"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加一"键,如果想减一秒按一下"减一"键,数码管上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。
5、主持人按"开始"键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设45s回答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。
倒数时间到小于5s会每秒响一下提示音。
6、如倒计时期间,主持人想停止倒计时可以随时按"复位"键,系统会自动进入准备状态,等待主持人按"开始"进入下次抢答计时。
7、如果主持人未按"开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"复位"键为止。
2.4系统原理图
U1为单片机AT89C51,U2为芯片74HC20,U3为芯片74LS04。
开始按键与禁止按键分别接到单片机的10、11脚,由于单片机的10、11脚既有串行接口RXD、TXD功能,又有P3.0、P3.1的IO端口功能,此处按键用到单片机10、11脚的IO端口功能。
抢答时间调整按键和回答时间调整按键分别接到单片机的13、14管脚,加一按键和减一按键分别接到单片机的15、16管脚。
4位七段数码管段选P0口。
4位七段数码管的位选接P2口低3位,蜂鸣器输出为P3.7。
原理图见附录。
2.4.1时钟频率电路的设计
单片机必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
本设计采用12MHZ晶振。
电路图如下:
外部振荡源电路
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
2.4.2复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下图
复位电路
图中由按键以及电解电容C3、电阻R8构成按键及上电复位电路。
由于单片机是高电平复位,所以当按键复位按下时候,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。
当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H开始执行。
2.4.3显示电路的设计
4位七段数码管显示电路如下图所示。
图中数码管采用的是4位七段共阴数码管,位选码COM1、COM3、COM4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。
在图中还有7个600欧的电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。
显示电路
2.4.4控制开关设计
开始、禁止按键去抖电路和扬声器
在图中,开始及禁止按键接到单片机的10、11脚,这里用到了单片机10、11脚复合功能中的IO端口功能,单片机通过读取10、11脚的P3.0、P3.1的IO端口值来判断当前是否处于抢答开始状态或抢答禁止状态。
按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。
现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20ms。
如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。
如果读键过程安排在定时中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。
4个按键的输入电平靠74HC20输入与非门和74LS04反向器组成的电路改变输入电平。
图中单片机的14脚输出具有复合功能,此处用到了单片机17脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。
3系统程序设计
3.1程序流程图
3.2程序清单
EQU20H;抢答开始标志位
EQU22H;响铃标志位
EQU36H;抢答按键口数据存放地址
ORG0000H
AJMPMAIN
ORG0003H
AJMPINTT0
ORG000BH
AJMPT0INT
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#15;初设抢答时间为15s
MOVR2,#45;初设答题时间为45s
MOV38H,#60;求助时时间从60s倒计时
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F0H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;50ms为一次溢出中断
SETBEA
SETBET0
SETBET1;允许二个中断,T0/T1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示FFF.
START:
MOVDATA0,#0FFH;初始化
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JNBP3.3,SELSUB0
JNBP3.4,TZ3;倒计时调整
JBP3.0,NEXT
ACALLDELAY
JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到违规抢答查询
SETBEX0;开放INT0
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,在求助时用作判断是抢答倒计时还是回答倒计时
MOVR3,#0AH;抢答只显示计时,灭号数
AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,TZ1
JNBP1.3,TZ2
AJMPSTART
TZ1:
AJMPFALSE3
TZ2:
AJMPFALSE4
TZ3:
AJMPSELSUB1
AJMPSTART
FALSE1:
MOVR3,#01H
AJMPERROR
FALSE2:
MOVR3,#02H
AJMPERROR
FALSE3:
MOVR3,#03H
AJMPERROR
FALSE4:
MOVR3,#04H
AJMPERROR
SELSUB0:
MOVA,R1
MOVB,#0AH
DIVAB
MOVR5,A
MOVR4,B
MOVR3,#0AH
ACALLDISPLAY;先在两个时间LED上显示R1
JNBP3.5,INC0;P3.5为+1s键,如按下跳到INCO
JNBP3.6,DEC0;P3.6为-1s键,如按下跳到DECO
JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO
AJMPSELSUB0
INC0:
MOVA,R1
CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。
MOVR1,#00H
ACALLDELAY1
AJMPSELSUB0
ADD0:
INCR1
ACALLDELAY1
AJMPSELSUB0
DEC0:
MOVA,R1
JZSETR1;如果R1为0,R1就置99,
DEC