|
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar qnumber;
void mdelay(unsigned int t)//延時(shí)程序
{
unsigned char n;
for(;t>0;t--)
for(n=0;n<125;n++) ;
}
sbit START=P2^4; //開關(guān)
sbit k1=P1;//搶答的按鍵接口
sbit beep=P1^6;//蜂鳴器接口
sbit led1=P1^4;//提示紅燈接口
sbit led2=P1^5;//綠燈接口
sbit led3=P3^1;//1號位指示燈
sbit led4=P3^2;//2號位指示燈
sbit led5=P3^3;//3號位指示燈
sbit led6=P3^4;//4號位指示燈
sbit ww=P3^0;
/////共陰數(shù)碼管段選//////////////////////////////////////////////
uchar table[22]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,
0x40,0x38,0x76,0x00,0xff,0x37};//'-',L,H,滅,全亮,n 16-21
bit d_flag;//開始搶答標(biāo)志位
uchar dat;
void fengming()
{ led1=0;//紅燈亮
led2=1;//關(guān)閉綠燈
beep=0;//蜂鳴器發(fā)出提示音
mdelay(1000);//蜂鳴器延時(shí)
beep=1;//蜂鳴器關(guān)閉
while(d_flag)P0=table[dat]; //數(shù)碼管上鎖定顯示1號
}
void qiang_da()//按鍵搶答函數(shù)
{ unsigned char x;
x=P1&0x0f;
switch(x)
{ case 0x0e:if(START==0)
{dat=1;
led3=0;//1號位指示燈亮
d_flag=1;//數(shù)碼管上鎖定顯示1號
fengming();//1號選手搶答成功
break;}
case 0x0d:if(START==0)
{dat=2;
led4=0;//2號位指示燈亮
d_flag=1;//數(shù)碼管上鎖定顯示2號
fengming();//2號選手搶答成功
break;}
case 0x0b:if(START==0)
{dat=3;
led5=0;//3號位指示燈亮
d_flag=1;//數(shù)碼管上鎖定顯示3號
fengming();//3號選手搶答成功
break;}
case 0x07:if(START==0)
{dat=4;
led6=0;//4號位指示燈亮
d_flag=1;//數(shù)碼管上鎖定顯示4號
fengming();//4號選手搶答成功
break;} }
}
void main()
{
beep=1;//關(guān)閉蜂鳴器
led2=0;//開啟綠燈
ww=0;
P0=table[16]; //待機(jī)是顯示“-”
while(1)
{
qiang_da();//按鍵搶答函數(shù)
}
}
|
|