单片机实验8路抢答器C语言版Word文档下载推荐.docx

上传人:b****3 文档编号:15203053 上传时间:2022-10-28 格式:DOCX 页数:13 大小:80.75KB
下载 相关 举报
单片机实验8路抢答器C语言版Word文档下载推荐.docx_第1页
第1页 / 共13页
单片机实验8路抢答器C语言版Word文档下载推荐.docx_第2页
第2页 / 共13页
单片机实验8路抢答器C语言版Word文档下载推荐.docx_第3页
第3页 / 共13页
单片机实验8路抢答器C语言版Word文档下载推荐.docx_第4页
第4页 / 共13页
单片机实验8路抢答器C语言版Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机实验8路抢答器C语言版Word文档下载推荐.docx

《单片机实验8路抢答器C语言版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机实验8路抢答器C语言版Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

单片机实验8路抢答器C语言版Word文档下载推荐.docx

当主持人启动“开始”键后,定时器进行减计时,同时绿色LED灯亮。

二、实验电路及功能说明

参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统复位为止。

复位后参赛队员可继续抢答。

如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢

答,定时显示器上显示00。

三、实验程序流程图:

主程序;

非法抢答序;

抢答时间调整程序;

回答时间调整程序;

倒计时程序;

正常抢答处理程序;

规处理程序;

显示及发声程序。

主流程图如下图所示

 

子程序

芥法抢4答处理

回答4

时间

四、实验结果分析

五、心得体会

六、程序清单

#inelude<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitwela_a=P3A0;

sbitwela1=卩3人1;

sbitwela2=P3A7;

sbitrest=P3A5;

sbithost=P3A6;

sbitled仁P3A4;

〃绿灯

sbitled2=P3A3;

〃红灯

sbitled3=P3A2;

〃黄灯

sbitkey1=P1A0;

sbitkey2=P1Al;

sbitkey3=P1A2;

sbitkey4=P1A3;

sbitkey5=P1A4;

sbitkey6=P1A5;

sbitkey7=P1A6;

sbitkey8=P1A7;

ucharx,q,d,s,ge,tO,t1,start,flag;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

voidinit();

/*初始函数申明*/

voiddisplay(uchars,ucharge,uchara);

voiddelay(uintz);

voidkeyscan();

voidmain()

{

init();

display(s,ge,a);

while

(1)

if(host==0)//主持人控制开关

delay(5);

if(host==0)

flag=1;

start=1;

delay(5);

延时

while(!

host);

检测开关

}

if(rest==0)//复位

if(rest==0)

q=30;

led2=1;

led3=1;

x=0;

rest);

if(flag==1)

if(start==O)〃选手按下,倒计10秒开始

led3=0;

wela1=0;

wela2=0;

delay

(1);

TRO=O;

TR1=1;

if(start==1)//主持人按下,倒计时30秒

led仁0;

TR0=1;

TR1=0;

keyscan();

voidinit()/*初始化*/

t0=0;

t1=0;

flag=0;

d=10;

wela_a=0;

a=0;

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET0=1;

ET1=1;

TR0=0;

voiddisplay(uchars,ucharge,uchar

a)/*数码管动态扫描*/

wela1=1;

P0=table[ge];

wela2=1;

PO=table[s];

wela_a=O;

P2=table[a];

voidkeyscan()/*按键扫描函数*/

if(key1==O)

if(key1==0)

a=1;

start=0;

key1);

if(key2==0)

a=2;

while(!

key2);

if(key3==0)

a=3;

start=0;

key3);

if(key4==0)

a=4;

key4);

if(key5==0)

a=5;

key5);

}

if(key6==0)

a=6;

key6);

if(key7==0)

a=7;

key7);

if(key8==0)

a=8;

key8);

voiddelay(uintz)/*延时函数*/

uinti,j;

for(i=z;

i>

0;

i--)

for(j=110;

j>

j--);

voidtime0()interrupt1/*定时器0*/

s=q/10;

ge=q%10;

t0++;

定时器1*/

//最后,给朋友们一点点提示,本程序有一点点小问题,有个中断没关,当主持人复位之后,后面的选手回答问题的时间就没有10

秒了(可怜啊)。

但还是可以运行的,要求不高的朋友可借鉴一哈。

if(t0==20)

to=o;

q--;

if(q==0)

q=0;

led1=1;

led2=0;

display(s,ge,a);

voidtime1()interrupt3/*

s=d/10;

ge=d%10;

t1++;

t仁0;

d--;

if(d==0)

d=0;

if(t仁=20)

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

当前位置:首页 > 工程科技 > 电力水利

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

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