標(biāo)題:
基于51單片機(jī)的八路搶答器仿真設(shè)計
[打印本頁]
作者:
chenao
時間:
2018-7-2 16:43
標(biāo)題:
基于51單片機(jī)的八路搶答器仿真設(shè)計
首先,裁判在右方按下開始按鈕,蜂鳴器響起,搶答開始,初始時間為20s,若1-8位選手按下按鈕,即搶答成功,由顯示屏顯示該選手號碼,如果超過時間(20s)沒人認(rèn)搶答,則時間重置為20s,并此題作廢,答題結(jié)束后,按下重置按鈕,這時時間重置,下次搶答開始。
創(chuàng)新功能(*)在沒有按下開始鍵時,按下修改時間按鈕,則時間會減少1s,由于默認(rèn)時間為20s,所以這個功能可以實現(xiàn)20s內(nèi)時間的調(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];//顯示倒計時
delay(5);
d1=1;
d2=0;
P0=tab[d_num%10];
delay(5);
d2=1;
x1=0; //位選端
P0=tab[x_flag/10];//顯示選手號
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 秒時間到
{
cnt=0;//計數(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è)置倒計時
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;}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
八路搶答器51單片機(jī)設(shè)計.zip
(91.6 KB, 下載次數(shù): 441)
2018-7-2 16:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
zzfwhlltz
時間:
2019-3-18 11:30
圖片解釋的十分清楚 對應(yīng)程序能看懂每一步需要做什么 贊一個
作者:
q9x7l8
時間:
2019-4-1 16:57
有沒有無線的
作者:
Zayn_Liang
時間:
2019-11-27 00:42
這個程序不錯,弄得有始有終
作者:
我真的太難了吧
時間:
2019-11-28 17:38
程序用keil打不開是怎么回事
作者:
瑟夫胡
時間:
2020-6-15 10:21
圖片解釋的十分清楚 對應(yīng)程序能看懂每一步需要做什么 贊一個
作者:
a997389797
時間:
2020-6-15 13:52
這個程序是51單片機(jī)嗎,atm89c51系列嗎
作者:
wyk1237
時間:
2020-6-16 19:42
很喜歡,收藏下來,學(xué)習(xí)
作者:
她說彩禮60萬
時間:
2020-11-16 21:56
顯示那,兩個數(shù)碼管和單片機(jī)的連接有點看不懂,能說說嗎
作者:
凌滴滴
時間:
2020-11-17 00:05
可以,很強(qiáng)了
作者:
劉徹
時間:
2020-11-21 11:33
圖片解釋的十分清楚 對應(yīng)程序能看懂每一步需要做什么 贊一個
作者:
劉徹
時間:
2020-11-21 11:38
樓主可不可以將線路圖中的器件關(guān)鍵詞發(fā)一下,有些器件找不到(菜鳥不懂)
作者:
wenbo
時間:
2020-11-22 10:46
圖片解釋的十分清楚,對我的學(xué)習(xí)很有幫助,謝謝樓主
作者:
蘇飯飯
時間:
2020-11-22 15:00
寫得很好,謝謝樓主分享。收藏了
作者:
耶耶
時間:
2020-11-26 11:48
2019-3-18 11:30 圖片解釋的十分清楚 對應(yīng)程序能看懂每一步需要做什么 贊一個
作者:
1440113357
時間:
2020-12-1 17:40
為什么蜂鳴器不響嘞
作者:
15285983149
時間:
2021-12-22 15:20
程序挺好,要是有注釋就更好了
作者:
15285983149
時間:
2021-12-22 15:21
要是有注釋就更好了
作者:
yangbulasi
時間:
2022-4-15 15:26
非常詳細(xì)地資料,謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1