单片机抢答器Word格式文档下载.docx
《单片机抢答器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机抢答器Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
(3)如果有参赛者率先在规定时间内抢答成功,则选手开关处的二极管点亮,倒计时停止,变为答题时间倒计时。
(4)如果有参赛者在主持人未按抢答器之前抢答,则蜂鸣器发出持续警报,并且选手按键处二极管点亮,提示该选手犯规。
(5)如果在规定时间内无人抢答,当倒计时结束时此题作废。
(6)无论是在规定时间内有人按键、无人按键或有人抢答,都需要主持人再按一下复位键,之后电路复位,回到初始状态,进入下一轮抢答。
第三章硬件模块功能
此抢答器电路主要有单片机部分、按键模块、二极管显示模块、数码管显示模块、蜂鸣器模块组成。
这些模块的功能如下:
(1)单片机部分:
通过读取P1.0~P1.3的状态读取按键情况;
通过P1.4~P1.7控制显示选手处二极管是否点亮;
通过P3.0对蜂鸣器进行控制;
通过9引脚(rst)对单片机进行复位控制;
通过P3.2进行单片机的抢答开始。
(2)按键模块:
KEY1~KEY4的信息可以直接传输到P1.0~P1.3。
单片机一直对p1口的低四位检索,一旦检测到有按键按下,则读出数据,进行比较,检测出谁按下的键,然后跳到键盘处理程序——回答倒计时,跳出键盘检测程序,后来按键按下不做响应。
(3)二极管模块:
通过P1.4~P1.7控制抢答或犯规选手的灯是否点亮,一旦单片机检测到按键模块有按键按下,就会将其所对应的二极管点亮。
(4)数码管显示模块:
数码管显示模块由一个共阴极数码管和一个限流电阻组成,用来显示倒计时时间。
(5)蜂鸣器模块:
当有人犯规时,蜂鸣器模块负责进行发出持续警报。
按下复位才能解除。
第四章软件设计
该程序在回答完一题后按下复位键才能进行下一轮抢答。
具体单片机编程软件如下:
org0000h
ajmpmain
org0003h;
教师的抢答按钮程序
setbf0;
即抢答按钮按下T0开始回答倒计时
setbtr0
reti
org000bh
ajmpintt0
org001bh
ajmpintt1
org0030h
main:
movsp,#60h
movtmod,#11h;
设置t0和t1工作方式
movtl0,#0b0h;
50ms的初始值0b0h
movth0,#03ch;
3ch
movr1,#20;
20次为1s
movr2,#5;
倒计时为5s也用作led寻址的偏移量
clrp3.0;
把p3.0设为低电平,用于高电平启动蜂鸣器
setbea
setbet0
setbex0
setbit0;
设置脉冲触发中断
index:
mova,p1;
一直检查p1口有没有按键输入,读p1口数据
anla,#0fh;
屏蔽高四位
mov28h,a;
保存键盘值,
lcalldelay;
调用延时程序
mova,p1;
再读p1口
anla,#0fh
cjnea,28h,return;
两次结果不一样,是抖动引起的转到return
key:
cjnea,#0eh,key2;
有按键,不是键一跳走
clrp1.4;
键一处理程序,指示谁强答到
jbf0,dd;
比较是否抢答键按下
setbp3.0;
提前有人抢答蜂鸣器响
lcallsixunhuan;
进入死循环,下同
dd:
lcallast
key2:
cjnea,#0dh,key3;
同上
clrp1.5
jbf0,dd1
lcallsixunhuan
dd1:
key3:
cjnea,#0bh,key4
clrp1.6
jbf0,dd2
setbp3.0
dd2:
key4:
cjnea,#07h,return
clrp1.7
jbf0,dd3
dd3:
return:
nop;
有一个键按下后就不执行此段程序了
ajmpindex;
跳到键盘处理程序,无,返回继续。
delay:
movr6,#13;
延时程序
delay1:
movr5,#250;
250
delay2:
nop
djnzr5,delay2
djnzr6,delay1
ret
ast:
clrET0;
按键处理程序,把t0中断关了,防止进入中断0
setbet1
movtl1,#0e0h;
t1中断初值
movth1,#03ch
setbtr1;
开计时t1
movr4,#20;
设置中断次数
movr3,#9;
设置偏移量16,9秒定时
ajmp$;
等待中断
sixunhuan:
clrea
sjmp$
intt0:
movtl0,#0b0h;
重新付初值
movth0,#03ch
djnzr1,loop1;
r1为0说明有1s了显示出来
20
djnzr2,loop2;
不为零跳走,为零过了5s进入死循环
mova,#0;
把0送A,显示0数字
movdptr,#tbb
movca,@a+dptr
movp2,a
clrea;
关中断,进入死循环
loop2:
mova,r2;
把偏移量r2送给a
movdptr,#tbb;
显示时间程序
loop1:
reti
intt1:
movtl1,#0b0H;
重新赋值
djnzr4,loop4;
r4不为0没到1s继续中断
movr4,#20
djnzr3,lop;
r3为0说明超时,进入死循环(可该)
mova,#0;
把0送给A显示0数字
clrea;
死循环
lop:
mova,r3;
时间显示,把偏移量送给a
loop4:
tbb:
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
db77h,7ch,39h,5eh,79h,71h;
数码管表
end
程序仿真完成后,进入protel进行对电路的总体仿真。
电路图详见附件。
第五章附件
四路抢答器原理图:
心得
通过这次参加电子设计大赛,我们学到很多,对专业知识的理解更加深刻,通过这次比赛,深深的感觉到自身知识的不足。
更加感觉到集体团结的力量,在这次电子设计大赛中,我们三人一组,同心协力完成这次比赛,我们分工合作。
虽然,我们设计的不是最完美的,有很多不足之处,但却是我们三人齐心协力的结果。
在以往的学习中,多是理论教学,能动手做的很少,这次比赛锻炼了我们的动手能力。
手脑并用,完成设计任务。
不自己亲自操作是不会感到其中的困难。
非常高兴能参加这次比赛,这次比赛使我们受益匪浅,希望学校能多开展这样的比赛,锻炼了学生的能力还可以增加课余活动。