一 性能指標(biāo)要求:1、 需要自己設(shè)計(jì)電路并焊接電路板。
本文引用地址:http://m.butianyuan.cn/article/201611/321038.htm2、基本要求:有一個(gè)主持人控制開關(guān)和6路搶答按扭,當(dāng)主持人允許搶答時(shí)才能進(jìn)行搶答操作,并用一個(gè)數(shù)碼管顯示搶答選手的號(hào)碼,同時(shí)其他選手不能再搶答。
3、當(dāng)主持人允許搶答后倒計(jì)時(shí)5秒時(shí)間,在這5秒內(nèi)搶答有效,過后就不能進(jìn)行搶答了。
4、 電路上要加個(gè)蜂鳴器的電路,當(dāng)有選手搶答時(shí)蜂鳴器響一下。
5、當(dāng)有選手搶答后,進(jìn)行倒計(jì)時(shí)20秒作為選手回答問題時(shí)間,用兩個(gè)數(shù)碼管顯示,倒計(jì)時(shí)時(shí)間到時(shí)有聲光提示。
6、 畫電路板時(shí)要增加下載接口,方便調(diào)試程序。
#include
#define uchar unsigned char
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[4]={0xef,0xf7,0xfb,0xfd};
uchar fen=0,miao=0,qd=0;
uchar flag=0,temp=0,flag2=0,tt=0,b=31,bb=31;
sbit d0=P1^0;
sbit d1=P1^1;
sbit feng=P1^3;
sbit deng=P1^4;
void delay(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void delay2(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=30;j>0;j--);
}
fengming()
{
feng=1;
delay2(1);
feng=0;
delay2(1);
feng=1;
delay2(1);
feng=0;
delay2(1);
}
void time01()//定時(shí)器相關(guān)
{
EA=1;
TR0=1;//啟動(dòng)定時(shí)器0
ET0=0;//開定時(shí)器0中斷
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;//聲明:定時(shí)50毫秒
}
display(void)
{
P2=wei[0];
P0=table[fen];
delay(8);
P2=wei[1];
P0=table[miao];
delay(8);
P2=wei[3];
P0=table[qd];
delay(8);
}
qiangda(void)
{
P3=0xff;
delay(15);
if(P3!=0xff)
{
delay(5);
if(P3!=0xff)
{
switch(P3)
{
case 0xfe: temp=1;break;
case 0xfd: temp=2;break;
case 0xfb: temp=3;break;
case 0xf7: temp=4;break;
case 0xef: temp=5;break;
case 0xdf: temp=6;break;
case 0xbf: temp=7;break;
case 0x7f: temp=8;break;
}
}
}
return(temp);
}
daojishi()//30 miao
{
bb--;
miao=bb;
fen=bb/10;
fengming();
if(bb==0){ ET0=0;bb=31;feng=1;deng=1;delay(80);feng=0;}
}
inition()//初始化
{
fen=0,miao=0,qd=0;
flag=1,temp=0,flag2=0,tt=0;deng=1;
}
d1pand()
{
if(d1==0)
{
delay(20);
if(d1==0) b--;while(!d1)
{
bb=b;
P2=wei[0];
P0=table[bb/10];
delay(5);
P2=wei[1];
P0=table[bb];
delay(5);
if(b<5) b=31;
}
}
}
d0pand()
{
if(d0==0)
{
delay(20);
if(d0==0)
{
inition();
while(!d0);
}
}
}
void main()
{
time01();
while(1)
{//fengming();
feng=0;
display();
d1pand();
d0pand();
if(flag==1)
{
if(flag2==1){flag=0;}
else//flag2=0
{
ET0=1;
qd=qiangda();
if(qd!=0)
{ flag2=1;tt=1;
deng=0;feng=1;delay(80);feng=0;
}
}
}
}
}
void time0() interrupt 1
{
uchar a;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
a++;
if(a ==0)
{
miao++;
if(miao==6&&flag2==0){feng=1;;miao=0;flag2=1;delay(80);feng=0;ET0=0;}
if(tt==1){
daojishi();
}
}
}
評(píng)論