五路抢答器.docx
- 文档编号:11778072
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:14
- 大小:1.84MB
五路抢答器.docx
《五路抢答器.docx》由会员分享,可在线阅读,更多相关《五路抢答器.docx(14页珍藏版)》请在冰豆网上搜索。
五路抢答器
实习(设计)报告
姓名
班级
学号
实习(设计)科目基于51单片机的五路抢答器
实习(设计)地点
实习(设计)时间
电气工程及自动化学院
SchoolofElectricalEngineering&Automation
一.实验安排
1.设计一个八路抢答器。
2.必须有主持人按钮,当主持人按下按钮,开始30秒倒计时,这30秒内即是八位选手抢答的时长,若30秒内无人抢答,则视为所有选手弃权。
3.倘若主持人按下开始的30秒内有人抢答,定时到10秒,同时在一屏幕上显示该抢答选手号码,当主持人按下开始答题键时,则倒计时从10秒开始,同时选手号码清零。
若10秒内无法回答,则该选手视为题目回答错误。
/*《五路抢答器》c语言程序设计*/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitwela_hao=P3^0;//显示选手的数码管位选
sbitwela1=P3^1;
sbitwela2=P3^7;
sbitqing=P3^5;
sbithost=P3^6;
sbitanswer=P3^4;
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitkey5=P1^4;
ucharhao,shu,shi,ge,t0,start,flag;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voidinit();/*初始函数申明*/
voiddisplay(ucharshi,ucharge,ucharhao);
voiddelay(uintz);
voidkeyscan();
voidmain()
{
init();
while
(1)
{
if(host==0)//主持人
{
delay(5);
if(host==0)
{
shu=30;
hao=0;
flag=1;
start=1;
delay(5);
while(!
host);
}
}
if(qing==0)//清零
{
delay(5);
if(qing==0)
{
while
(1)
{
shu=0;
shi=shu/10;
ge=shu%10;
TR0=0;
delay(5);
hao=0;
wela1=0;
wela2=0;
wela_hao=0;
delay
(1);
display(shi,ge,hao);
if(host==0)break;
}
delay(5);
while(!
qing);
}
}
if(answer==0)//开始答题
{
delay(5);
if(answer==0)
{
flag=1;
shu=10;
start=1;
hao=0;
}
delay(5);
while(!
answer);
}
if(flag==1)
{
if(start==0)//选手按下,定时10秒
{
shu=10;
shi=shu/10;
ge=shu%10;
wela1=0;
wela2=0;
wela_hao=0;
delay
(1);
TR0=0;
display(shi,ge,hao);
delay
(1);
}
if(start==1)//主持人按下,倒计时30秒
{
wela1=1;
wela2=1;
wela_hao=1;
delay
(1);
TR0=1;
display(shi,ge,hao);
delay
(1);
keyscan();
}
}
}
}
voidinit()/*初始化*/
{
t0=0;
t1=0;
shi=shu/10;
ge=shu%10;
flag=0;
shu=30;
wela_hao=1;
hao=0;
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=0;
}
voiddisplay(ucharshi,ucharge,ucharhao)/*数码管动态扫描*/
{
wela1=1;
wela2=0;
P0=table[ge];
delay(5);
wela2=1;
wela1=0;
P0=table[shi];
delay(5);
wela_hao=0;
P2=table[hao];
delay(5);
}
voidkeyscan()/*按键扫描函数*/
{
if(key1==0)
{
delay(5);
if(key1==0)
{
hao=1;
P2=table[hao];
start=0;
delay(5);
while(!
key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
hao=2;
P2=table[hao];
start=0;
delay(5);
while(!
key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
hao=3;
P2=table[hao];
start=0;
delay(5);
while(!
key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
hao=4;
P2=table[hao];
start=0;
delay(5);
while(!
key4);
}
}
if(key5==0)
{
delay(5);
if(key5==0)
{
hao=5;
P2=table[hao];
start=0;
delay(5);
while(!
key5);
}
}
}
voiddelay(uintz)/*延时函数*/
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidtime0()interrupt1/*定时器0*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
shi=shu/10;
ge=shu%10;
t0++;
if(t0==20)
{
t0=0;
shu--;
shi=shu/10;
ge=shu%10;
if(shu==0)
{
while
(1)
{
shu=0;
hao=0;
wela1=0;
wela2=0;
wela_hao=0;
delay
(1);
display(shi,ge,hao);
if(host==0)break;
}
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抢答