单片机8路抢答计分器Word格式文档下载.docx
- 文档编号:21254800
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:134.56KB
单片机8路抢答计分器Word格式文档下载.docx
《单片机8路抢答计分器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机8路抢答计分器Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
5)设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
6)在规定时间内无人抢答,倒计时时间到0后,报警声一直响,主持人按复位键停止响声,恢复正常。
本课题设计是每组都有一个三位数码管显示器来显示每组所得分数,每组有一个报警灯来判断最先抢答的组,并由一位数码管显示抢答的组号,主持人有一个控制按键,两位数码管显示主持人从按下开始键的倒计时,当倒计时完毕后还没有组进行抢答,报警灯就会亮起,主持人按复位键继续下一轮的抢答,倒计时进行中如果有组按下抢答器则倒计时结束,回答完毕后由主持人对各抢答组进行加减分并复位重新进行下一轮的抢答。
方案比较:
方案一:
用数字电路设计,这个方案的电路设计比较复杂,而没有运用可编程芯片就没有软件的编写,且成本会低一点。
方案二:
用单片机控制整个系统,部分功能用软件编写来实现,电路的设计会简单一些。
最终方案:
由于数字电路知识掌握的不足,无法实现所有的功能,而且这次的实训并不要求制作实物,不需要考虑成本的问题,所以我们此次的最终方案为方案二,整个系统由单片机控制。
单片机的P0口给26个数码管送入段选码,由于P0口没有内接上拉电阻,所以要外接上拉电阻。
单片机的P1口接8个抢答按钮,。
单片机的P2口的P2.0至P2.2接3-8译码器,P2.3和P2.4接2-4译码器,P2.7接一个报警灯。
P3口的P3.0、P3.1和P3.3接个按键,P3.2接中断,P3.4~P3.7接一个数码管以显示最先按下抢答器的组号。
这部分是按键部分,包括每组的抢答按钮和主持人的复位及加减键,in[0]~in[7]是8组的抢答按钮。
当有一个组按下抢答器后,通过锁存器74S373锁存后通过一个与门,这样能使抢答器在有一个组按下后其他组再按就无效了,与门输出一个信号接到单片机P3.2端口,产生一个中断信号,与非门产生的信号再通过一个非门取反,与复位键产生的信号通过与非门接锁存器的LE控制端口,以锁存抢答按钮产生的信号。
复位按下第一次,表示抢答开始,按下第二次主持人确认,并且操作加减分数,当复位键按下第三次的时候,进入下一轮的抢答。
每个组还有一个报警灯,最先按下抢答器的组的报警灯会亮起,以方便公正的判断抢答的组。
8个灯接在锁存器的输出端,当有一个抢答器按下后其相应的报警灯就会亮起。
此报警灯接在单片机的P2.7口,当抢答时间20S倒计时结束都没有一个组抢答时报警灯亮起,待主持人按下复位键后报警灯才熄灭,重新开始进行下一轮的抢答。
这部分是单片机外接译码器和非门控制数码管的位选,单片机的P2.0~P2.2口接4个并联3-8译码器,这样三个输入信号W[0]~W[2]可以译码成Y[0]~Y[25]的26个输出信号,26个输出信号再分别接一个非门,输出端为WEI[0]~WEI[25]。
其中WEI[0]~WEI[23]控制8个组的前三个数码管的显示情况,WEI[24]和WEI[25]控制20S倒计时的显示数码管。
单片机的P2.3和P2.4接2-4译码器,通过译码器的4个输出端控制4个译码器的使用状态,进而控制数码管的显示状态。
这部分是显示倒计时20S的抢答时间和最先按下抢答器的组号的数码管。
这部分是每个组显示所得分数的数码管,每个组只用了前三位数码管。
每个数码管的信号输入端都接在单片机的P0口,而位选端则接在译码器后的非门上。
程序设计部分:
#include"
reg52.h"
#defineuintunsignedint
#defineucharunsignedchar
单片机各个端口的设置说明
sbitjia=P3^0;
sbitjian=P3^1;
sbitP10=P1^0;
sbitP11=P1^1;
sbitP12=P1^2;
sbitP13=P1^3;
sbitP14=P1^4;
sbitP15=P1^5
sbitP16=P1^6;
sbitP17=P1^7;
sbitfuwei=P3^3;
sbitP25=P2^5;
sbitP26=P2^6;
sbitspeak=P2^7;
sbitP34=P3^4;
sbitP35=P3^5;
sbitP36=P3^6;
sbitP37=P3^7;
参数设置
ucharnum,tim=20;
//计时变量
uintpart;
ucharmark=0;
//抢答标志
//uchartime[]={0,0};
按键的扫描编码
uchartab[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
uchartemp[]={1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0};
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0x5e,0x86,0x8e};
延时子程序
voiddelay(charz)
{
ucharj,i;
for(i=z;
i>
0;
i--)
for(j=110;
j>
j--);
}
显示程序
voiddisplay()
{
uchari;
for(i=0;
i<
26;
i++)
{
P2=tab[i];
P0=table[temp[i]];
delay(3);
}
八个组按键判断
voidint0_button()interrupt0
{
EA=0;
if(P10==0)
delay(10);
if(P10==0)
{
part=0;
mark=1;
P3=(part+1)<
<
4|0x0f;
}
}
if(P11==0)
if(P11==0)
part=1;
P3=(part+1)<
if(P12==0)
if(P12==0)
part=2;
if(P13==0)
if(P13==0)
part=3;
if(P14==0)
if(P14==0)
part=4;
if(P15==0)
if(P15==0)
part=5;
if(P16==0)
part=6;
if(P17==0)
if(P17==0)
part=7;
EA=1;
20S定时中断
voidt0_time()interrupt1
TH0=(65536-50000)/256;
//定时20S
TL0=(65536-50000)%256;
num++;
if(num==20)
num=0;
tim--;
if(tim==0)
TR0=0;
tim=0;
speak=1;
temp[24]=tim/10;
//倒计时
temp[25]=tim%10;
}
///////////////////////////
主函数
voidmain()
uchark=0;
uintmath;
//计分数
speak=0;
P3=0x0f;
while
(1)
{display();
if(fuwei==0)
while(fuwei==0);
k++;
if(k==1)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
EX0=1;
ET0=1;
IT0=1;
TR0=1;
}
if(k==2)
{
k=0;
EA=0;
tim=20;
TR0=0;
speak=0;
while
(1)
display();
if(mark==0)
break;
math=temp[part*3]*100+temp[part*3+1]*10+temp[part*3+2];
//计算出抢答到那个组的分数
if(jia==0)
{
delay(10);
if(jia==0)
{
math+=10;
//抢答到的那个组答对加10分
temp[part*3]=math/100;
//抢答后的变化的分数进行显示
temp[part*3+1]=math%100/10;
temp[part*3+2]=math%10;
display();
break;
}
}
if(jian==0)
if(jian==0)
math-=10;
//抢答到的那个组答错减10分
break;
}
}
}
结束语:
本课题的设计时间是两周,仿真图和程序的编写都是经过每个组员认真讨论的,但由于掌握知识的程度有限有的部分也是经过老师的指导完成的,通过这两周的课题设计使我们看清了我们知识的不足之处和动手能力的欠缺,希望在今后的学习和工作中能够加强。
参考文献:
韩志军·
《单片机应用系统设计——入门向导与设计实例》·
机械工业出版社·
2005年1月第1版。
郭天祥·
《51单片机C语言教程---入门、提高、开发、拓展全攻略》·
电子工业出版社·
2009年1月第一版。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 抢答 计分