标题:
单片机8位抢答器 希望对大家有用
[打印本页]
作者:
libicheng
时间:
2017-6-14 16:09
标题:
单片机8位抢答器 希望对大家有用
单片机8位抢答器及仿真和源程序 希望对大家有用
0.png
(21.24 KB, 下载次数: 61)
下载附件
2017-6-14 17:39 上传
0.png
(45.57 KB, 下载次数: 78)
下载附件
2017-6-14 17:40 上传
单片机源程序如下:
//名称:八路抢答器
//功能:主持人按下按键开始抢答,此时抢答灯闪烁
//十秒内抢答,如果没有抢答的则直接复位
//如果有人抢答成功,则其他人抢答无效,60s内答完超过60s自动复位
//回答期间抢答灯常亮,回答的人方灯闪烁,直到回答完毕,灯常亮表明回答有效
//如果超过60s自动复位,回答结束主持人打开按键,复位。
#include<reg51.H>
sbit Presenter=P2^0;
sbit K=P3^2;
bit Presenter_flag=0,flag;//主持人按键标志位,仅允许一个数据通过标志位
unsigned char Timer=0,i; //时间标志
unsigned char ren=0xff;
bit x=0;
void System_Init();
void System_Rest();
void main()
{
System_Init();
while(1)
{
if(Presenter_flag) //主持人按键按下时开始系统
{
K=1;
if(K==1) //主持人按键起开
{break;
Presenter_flag=0;
}
}
else
System_Rest();
}
}
void System_Init()
{
EA=1; //打开中断
EX0=1;
IT0=1;
TMOD=0x01;
ET0=1;
TH0=(65535-50000)/256; //50ms
TL0=(65535-50000)%256;
Presenter=0;
TR0=0;
}
void System_Rest()
{
P0=0xff; //复位设置:在主持人按键起开或者,抢答时间超过10s或者答题时间超过60s
P1=0xff;
TR0=0;
Presenter=0;
flag=1;
i=0;
Timer=0;
}
void into() interrupt 0
{
Presenter_flag=1;//主持人按键按下
TR0=1;
}
void Timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
i++;
if(i==20) //1s钟
{
i=0;
Timer++;
P1=0xff;
if((Timer<10)&&(P1==0xff)&&(flag==1)) //10s抢答时间,10s内如果无人抢答则复位
{
Presenter=~Presenter; //抢答指示灯闪烁
}
else if((Timer>=10)&&(P1==0xff)&&(flag==1))
{
Presenter_flag=0;
Timer=0;
i=0;
}
P1=0xff;
if((Timer<=60)&&(P1!=0xff)&&(flag==1)) //答题时间,60s没答完则复位
{
ren=P1;
Presenter=1;
flag=0;
}
if(flag==0)
{
if(x==0)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
八位抢答器.zip
(72.99 KB, 下载次数: 34)
2017-6-14 16:07 上传
点击文件名下载附件
仿真及程序
下载积分: 黑币 -5
作者:
mountain
时间:
2017-7-3 11:29
谢谢资源 黑币啊
作者:
CROWZLY
时间:
2018-3-4 22:18
值得好好学习一下
作者:
a7833450
时间:
2018-10-30 15:24
感谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1