|
首先,裁判在右方按下開(kāi)始按鈕,蜂鳴器響起,搶答開(kāi)始,初始時(shí)間為20s,若1-8位選手按下按鈕,即搶答成功,由顯示屏顯示該選手號(hào)碼,如果超過(guò)時(shí)間(20s)沒(méi)人認(rèn)搶答,則時(shí)間重置為20s,并此題作廢,答題結(jié)束后,按下重置按鈕,這時(shí)時(shí)間重置,下次搶答開(kāi)始。
創(chuàng)新功能(*)在沒(méi)有按下開(kāi)始鍵時(shí),按下修改時(shí)間按鈕,則時(shí)間會(huì)減少1s,由于默認(rèn)時(shí)間為20s,所以這個(gè)功能可以實(shí)現(xiàn)20s內(nèi)時(shí)間的調(diào)整
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (19.3 KB, 下載次數(shù): 109)
下載附件
2018-7-2 23:19 上傳
0.png (52 KB, 下載次數(shù): 91)
下載附件
2018-7-2 23:19 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define max 20
- uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- sbit d1=P2^4;
- sbit d2=P2^5;
- sbit x1=P2^6;
- sbit x2=P2^7;
- sbit k1=P1^0;
- sbit k2=P1^1;
- sbit k3=P1^2;
- sbit k4=P1^3;
- sbit k5=P1^4;
- sbit k6=P1^5;
- sbit k7=P1^6;
- sbit k8=P1^7;
- sbit zk1=P2^0;
- sbit zk2=P2^1;
- sbit buz=P2^2;
- uchar d_num,cnt;
- uchar x_flag;
- void jianpan();
- void init(void)
- {
- TMOD=0X01;
- TL0=0XB0;
- TH0=0X3C;
- // TR0=1;
- ET0=1;
- EA=1;
- d_num=max;
- }
- void delay(uint xms)
- {
- uint x,y;
- for(x=xms;x>0;x--)
- for(y=110;y>0;y--);
- }
- void display()
- {
- d1=0; //位選端;
- P0=tab[d_num/10];//顯示倒計(jì)時(shí)
- delay(5);
- d1=1;
- d2=0;
- P0=tab[d_num%10];
- delay(5);
- d2=1;
- x1=0; //位選端
- P0=tab[x_flag/10];//顯示選手號(hào)
- delay(5);
- x1=1;
- x2=0;
- P0=tab[x_flag%10];
- delay(5);
- x2=1;
- }
- void main()
- { init();
- while(1)
- {
- jianpan();
- display();
- }
- }
- void timer0(void) interrupt 1
- {
- TL0=0XB0; //重裝初值
- TH0=0X3C;
- cnt++;
- if(cnt==20)//1 秒時(shí)間到
- {
- cnt=0;//計(jì)數(shù)清零
- d_num--;
- if(d_num==0)
- {
- d_num=max;
- TR0=0; //關(guān)閉所有操作
- }
- buz=0;
- delay(20);
- buz=1;
-
- }
- }
- void jianpan()
- { if(zk1==0&&x_flag==0)
- {
- delay(5);
- x_flag=0;
- TR0=1;
-
- }
- if(zk2==0&&TR0==0)
- {
- delay(5);
- if(zk2==0&&TR0==0)
- {
- if(x_flag==0)
- {
- d_num--; //設(shè)置倒計(jì)時(shí)
- buz=0;
- delay(20);
- buz=1; }
- if(d_num==5)
- d_num=max;
-
- if(x_flag!=0) //選手顯示清零
- {
- x_flag=0;
- d_num=max;
- TR0=0;
- buz=0;
- delay(20);
- buz=1;
- }
- while(!zk2)
- display();
- }
- }
-
- if(k1==0&&TR0==1)
- {
- delay(5);
- if(k1==0&&TR0==1)
- {
- x_flag=1;
- TR0=0;
- }
- }
- if(k2==0&&TR0==1)
- {
- delay(5);
- if(k2==0&&TR0==1)
- {x_flag=2;TR0=0;}
-
- }
- if(k3==0&&TR0==1)
- {
- delay(5);
- if(k3==0&&TR0==1)
- {x_flag=3;TR0=0;}
- while(!k3)
- display();
- }
- if(k4==0&&TR0==1)
- {
- delay(5);
- if(k4==0&&TR0==1)
- {x_flag=4;TR0=0;}
-
- }
- if(k5==0&&TR0==1)
- {
- delay(5);
- if(k5==0&&TR0==1)
- {x_flag=5;TR0=0;}
-
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
八路搶答器51單片機(jī)設(shè)計(jì).zip
(91.6 KB, 下載次數(shù): 441)
2018-7-2 16:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|