八位抢答器.docx
《八位抢答器.docx》由会员分享,可在线阅读,更多相关《八位抢答器.docx(11页珍藏版)》请在冰豆网上搜索。
八位抢答器
八位抢答器
一、绪论
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用89C52,单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
二、任务与要求
1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
2、设置一个系统清除和抢答控制开关S,该开关由主持人控制。
3、抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。
5、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
6、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
三、硬件电路设计
3.1设计电路图
3.2需要的原件
原件名称
需要个数
数码显示管
1
SW-PB
10
电容22pF
1
电阻1K
9
电阻10K
1
电容1μF
4
电解电容
1
LED灯
8
电阻10kΩ
1
锁存器MC74HC573
2
蜂鸣器
1
MAX232
1
89C52
1
3.3电子实物图
四、使用说明
本实验电路由抢答电路、译码显示电路、主持人控制电路、定时电路、报警电路组成。
通过复位按键FW,电路进入准备就绪状态。
将抢答时间设定在30S,然后按下开始键开始抢答。
,在电路中“S0-S7”为8路抢答器的8个按键,当有键按下,程序锁定信号,从P2口输出抢答者号码的七段码值,送到码管显示,并封锁按键,保持刚才按键按下时刻的时间,禁止其他人按键的输入,从而实现了抢答的功能。
当设定的抢答时间结束,仍然没有抢答键被按下,则产生已经超时的报警信号,结束抢答。
当要进行下一次的抢答时,首先先按一下复位按键,电路复位。
该设计是以MCS51为基础,结合单片机汇编语言知识,设计而成的8位竞赛抢答器。
在伟福试验箱上实现仿真。
主持人按下“抢答开始”既单脉冲键后,喇叭响0.5秒给出提示信号,并立刻进入抢答倒计时(预设30秒抢答时间)此时,数码显示管上显示倒计时时间:
有选手抢答,停止计时,八段数码显示抢答时间和选手号;无选手抢答,倒计时30秒后,显示00。
然后选手等待主持人按下按钮开始新一轮抢答。
注意:
(1)由于设计的局限性,如果在无人抢答期间,30秒还未到,主持人不能按下重新下一轮抢答按钮。
(2)由于试验箱上按钮数量有限,故选用开关代替按钮,供8位选手抢答使用。
鉴于开关与按钮动作过程的差异,所以每次当选手抢答,拨下开关时必须将开关复位。
(3)当系统出现错误的时候,停止操作,重新编译开始。
五、流程图设计
主程序(开始)T0中断服务程序(中断入口)
重装初值
系统清除
关显示
计时满1S
N
初始化开中断T0,T1,INT0
Y
50H减1
N
主持人按下
调用倒计时
Y
计时满30S
N
启动T0
启动T1
Y
停止计时
中断返回
(结束)
时间送A
T1定时器(中断入口)倒计时
取十位
启动蜂鸣器
取个位
计时满0.5S
N
Y
分别转换为段码
停止计时
显示时间
退出中断
有键按下
N
返回
Y
得到键号
i=0
键盘扫描:
第i行置0
行号置1
第一行按下
Y
N
行号置3
第二行按下
Y
N
行号置5
第三行按下
Y
N
第四行按下
行号置7
Y
N
列号+行号=键号
列号加1
停止定时器
显示键号
子程序返回
六、程序如下:
org0000h
ajmpmain
org000bh
ajmpitq0
org001bh
ajmpitq1
org0030h
main:
setbp3.2
st1:
mov51h,#0;系统清除
mov52h,#0
mov53h,#0
mov50h,#30
mova,#00h
setbp2.1
movp1,a
clrp2.1
movtmod,#21h;T0定时工作方式1,T2定时工作方式2
movtl0,#00h
movth0,#83h
movth1,#06h
movtl1,#06h
setbit0;边沿触发
setbet0;开中断
setbet1
setbex0
setbea;开放CPU中断
movr4,#250
movr1,#250;蜂鸣时间长度
movr5,#8
lp0:
jbp3.2,lp0
setbp3.2
setbtr0
setbtr1
sjmp$
itq0:
movtl0,#00h;初值重装
movth0,#83h
djnzr4,out1;计时1秒
dec50h;倒计时时间减一
movr4,#250
calldao
mova,50h
jnzout1
clrtr0;;关计时器
out1:
reti
itq1:
cplp0.7;开蜂鸣器
djnzr1,out1
movr1,#250
djnzr5,out1
clrtr1;关蜂鸣
reti
dao:
mova,50h;剩余时间的显示
movb,#10
divab
mov51h,a
mov52h,b
movr6,#2;两位数字显示
movr0,#51h
ft1:
mova,@r0
movdptr,#tab
movca,@a+dptr
mov@r0,a
incr0
djnzr6,ft1;分别转换为段码
lllp1:
mova,51h
setbp2.0
movp1,a
clrp2.0
mova,#0feh;输出时间的十位选择某位输出
setbp2.1
movp1,a
clrp2.1
movr7,#10
djnzr7,$
mova,52h
setbp2.0
movp1,a
clrp2.0
mova,#0fdH
setbp2.1
movp1,a
clrp2.1
movr7,#10
djnzr7,$
sao:
mova,#0f3h;是否有键按下
movp3,a
mova,p3
anla,#0f0h
cjnea,#0f0h,getkey
ret
getkey:
movr2,#0fbh;扫描键号
movr3,#00h
ks1:
mova,r2
movp3,a
mova,p3
jbacc.4,ks2
mova,#01h
ajmpjieguo
ks2:
jbacc.5,ks3
mova,#03h
ajmpjieguo
ks3:
jbacc.6,ks4
mova,#05h
ajmpjieguo
ks4:
jbacc.7,next
mova,#07h
ajmpjieguo
next:
cjner3,#00h,kfh
incr3
mova,r2
rla
movr2,a
ajmpks1
kfh:
setb11h
jieguo:
clrtr0;得到并显示键号
clrp2.1
adda,r3
movdptr,#tab
movca,@a+dptr
setbp2.0
movp1,a
clrp2.0
setbp2.1
movp1,#0f7h
clrp2.1
clrtr0
sjmp$
tab:
db3fh,06h,5bh,4fh
db66h,6dh,7dh,07h
db7fh,6fh
end
七、设计总结:
通过这次课程设计,我深刻的认识到自己在许多方面的不足。
通过编程,我学会了如何独立的写出程序,提高了自己的分析解决问题的能力,并且使自己所学的知识与实践相结合,应用到实践当中。
在刚开始的时候无从下手,感觉有些茫然,但同学和老师给予我很大的帮助,每当设计过程中遇到困难时,老师都会细心的教导我,耐心的为我讲解,同学也热心帮助我,为我排忧解难,让我深深的体会到了团队的力量和重要性。
通过设计,我也学到了很多书本上没有的知识。
在设计当中遇到了很多问题,但通过查找资料,克服了这些问题,提高了自己在实际当中解决问题的能力。
在此我感谢学校给了我们的这次实践机会。
在这里为奔波劳累在这次设计中老师便是感谢,老师们不辞劳苦,不在乎身体的不适认真为我们讲解并为我们知道实际操作过程中的问题。
让我们一步一步有序完成此次课程设计。
在这里对我们的马老师、焦老师、高老师说声谢谢,谢谢你们,你们辛苦了!
也祝你们身体健康工作顺利。
八、参考文献
[1]高峰.《单片微型计算机原理与接口技术》.科学出版社,2007
[2]周慈航.《单片机应用程序设计技术》.北京航空航天大学出版社