原创 【单片机基础-15】三人抢答器

2023-3-26 20:52 354 4 4 分类: MCU/ 嵌入式 文集: 单片机基础

风风雨雨二十载,多少bug在心间。

代码编译不通过,急得抓耳直挠腮。

回想当年恩师讲,基础知道全忘干。

忙里偷闲回首看,权当引玉的抛转。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

电路图

按键功能说明:

S2(SET)为抢答开始按键;

S3(OK)、S4(+)、S5(-)为1号、2号、3号抢答者抢答按键。

LED状态指示灯说明:

P10对应的LED灯为抢答开始指示灯;

P11对应的LED灯为抢答结束指示灯或者说禁止抢答指示灯;

P12、P13、P14分别为1号、2号、3号抢答成功指示灯。

抢答时间倒计时LED指示功能使用P15、P16、P17对应的LED灯。

倒计时工作说明:

抢答时间30S,按下抢答开始键时,开始计时同时P15、P16、P17对应的LED灯亮起。当抢答时间剩余20S时,P15对应的LED灭掉。当抢答时间剩余10S时,P16对应的LED灭掉。当抢答时间剩余0S时,P17对应的LED灭掉。同时蜂鸣器超时报警鸣叫,鸣叫时长2s。

功能说明:

(1)系统上电,P11指示灯亮起,其余所有指示灯全部熄灭,禁止抢答,所有抢答键无效,对应的抢答成功指示灯不会亮起。

(2)当S2抢答开始按键按下,P10连接的LED亮起,P11连接的LED熄灭,P15、P16、P17对应的倒计时指示灯亮起,抢答开始,同时定时器0开始定时30S,30S定时时间到,若无人抢答,则本次抢答结束,P11亮起同时蜂鸣器鸣约2秒(通过定时器1实现),然后蜂鸣器停止鸣叫。

(3)当抢答开始后,S3、S4、S5任意按键按下,抢答成功,则对应的LED亮起,同时蜂鸣器鸣叫约2秒然后停止,同时P11亮起,P10熄灭,本次抢答结束。

(4)三者任意一者抢答成功,其他抢答则无法继续抢答,抢答无效,只有当再次按下S2开始键,才可以进行下一轮抢答。

程序设计

#include

sbit beep=P3^0;//蜂鸣器

sbit s1=P2^1;//s1,s2,s3为三个人手中的按键,复位按键为主持人

sbit s2=P2^2;

sbit s3=P2^3;

sbit d1=P2^4; //分别对应三人的led灯

sbit d2=P2^5;

sbit d3=P2^6;

unsigned char a[4]={0x3f,0x06,0x5b,0x4f};//0,1,2,3的字形码

void main()

{

P0=a[0];//0的字形码输送给P0

P2=0x0f;//初始化,让led灭

beep=0;//蜂鸣器初始化

while(1)

{

if(s1==0&&s2==1&&s3==1) //若s1按下

{

d1=1;beep=!beep;P0=a[1];//d1亮,喇叭响,数码管显示1

}

if(s2==0&&s1==1&&s3==1)

{

d2=1;beep=!beep;P0=a[2];

}

if(s3==0&&s1==1&&s2==1)

{

d3=1;beep=!beep;P0=a[3];

}

}

}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条