标题:
单片机抢答器程序
[打印本页]
作者:
晨小小小
时间:
2016-6-25 11:53
标题:
单片机抢答器程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key9=P2^0; //主持人清除键
sbit key10=P2^1; //主持人非定时抢答开启键
sbit key11=P2^2; //主持人定时抢答开启键
sbit wei1=P2^4; //数码管位选段
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
sbit contr=P2^3;
uchar code seg7[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
}; //共阴极数码管显示编码
//定义抢答时间,中断次数,选手编号三个全局变量
uchar time=30,count,playernum;
//存储8个选手按键状态,若对应选手按键被按下,则
//相应存储位置存储选手编号,否则对应存储位置存储数字0
uchar num[8];
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar time,uchar num) //数码管显示函数
{
uchar shi,ge;
shi=time/10; //显示抢答时间
ge=time%10;
P0=seg7[shi]; //段选数据
wei1=0; //位选数据
delayms(10);
wei1=1;
P0=seg7[ge];
wei2=0;
delayms(10);
wei2=1;
shi=num/10; //显示选手编号
ge=num%10;
P0=seg7[shi];
wei3=0;
delayms(10);
wei3=1;
P0=seg7[ge];
wei4=0;
delayms(10);
wei4=1;
}
void keyscan()
{
if(key9==0) //主持人清除键
{
delayms(2);
if(key9==0)
{
while(!key9) ;
P3=0xff; //关闭和被按下抢答键对应的发光二极管
time=0; //清除抢答时间
contr=1; //开发抢答按钮输入
playernum=0; //清除选手编号
TR0=0; //关闭定时器
}
}
if(key10==0) //非定时抢答开始键
{
delayms(2);
if(key10==0)
{
while(!key10);
contr=0; //只允许首先按下抢答键者的状态输入
time=0; //清除时间
TR0=0; //关闭定时器
}
}
if(key11==0) //定时抢答开启键
{
delayms(2);
if(key11==0)
{
while(!key11);
contr=0; //只允许首先按下抢答键者的状态输入
time=30; //初始化抢答时间
TR0=1; //开启定时器
}
}
}
void getplayernum() //获取抢答键被按下编号
{
uchar i,temp;
temp=P1;
P3=P1; //将被按下的抢答键对应二极管点亮
for(i=0;i<8;i++)
{
temp=temp>>1;
if(CY==0) //该选手按下抢答键
{
num[i]=(i+1);
}
else
num[i]=0;
}
}
void main()
{
uchar i;
P2=0xFF;
TMOD=0x01; //定时器0工作在方式1
TH0=(65536-50000)/256; //定时时间50ms
TL0=(65536-50000)%256;
EA=1;
ET0=1;
while(1)
{
keyscan();
getplayernum();
for(i=0;i<8;i++)
{
if(num[i]!=0)
{
playernum=num[i];
}
display(time,playernum); //显示抢答键被按下编号和时间
}
}
}
void timer0_int() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
time--;
if(time==0)
time=30;
count=0;
}
TR0=1;
}
复制代码
作者:
MX安心
时间:
2016-6-26 19:19
ww位学习了最好弄个图
作者:
wangpanbest
时间:
2017-9-19 10:21
求大神哥哥给个图啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1