五路抢答器.docx

上传人:b****5 文档编号:11778072 上传时间:2023-04-01 格式:DOCX 页数:14 大小:1.84MB
下载 相关 举报
五路抢答器.docx_第1页
第1页 / 共14页
五路抢答器.docx_第2页
第2页 / 共14页
五路抢答器.docx_第3页
第3页 / 共14页
五路抢答器.docx_第4页
第4页 / 共14页
五路抢答器.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

五路抢答器.docx

《五路抢答器.docx》由会员分享,可在线阅读,更多相关《五路抢答器.docx(14页珍藏版)》请在冰豆网上搜索。

五路抢答器.docx

五路抢答器

 

实习(设计)报告

 

姓名

班级

学号

实习(设计)科目基于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;

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1