標(biāo)題:
51單片機(jī)四路搶答器源碼
[打印本頁]
作者:
512713659
時間:
2018-5-11 23:50
標(biāo)題:
51單片機(jī)四路搶答器源碼
單片機(jī)源程序如下:
/**********************BST-M51實(shí)驗(yàn)開發(fā)板例程************************
* 平臺:BST-M51 + Keil U4 + STC89C52
* 名稱:本例程為一搶答器;其中主持人操控k3與k4兩個按鍵。選手共2位,分別操控k1、k2中的一個按鍵。
當(dāng)主持人按下?lián)尨痖_始按鍵k3后,倒計(jì)時開始,計(jì)時5s。此后最先按下按鍵的選手號碼將顯示與數(shù)碼管上。
后來按下的將無顯示。
若五秒計(jì)時結(jié)束后,再按下按鍵也不會顯示。
若主持人沒有按開始鍵,就有選手搶答,則視為犯規(guī)。此時犯規(guī)的選手號碼將被顯示于數(shù)碼管上
同時,蜂鳴器發(fā)出長笛聲報(bào)警,數(shù)碼管全亮。
而當(dāng)主持人按下清零鍵K4后,一切狀態(tài)均恢復(fù),可以開始新一輪的搶答。
按鍵功能簡介
k3搶答開始 k4 清零
k1、k2 分別為兩個選手按鍵
* 晶振:11.0592MHZ
* 說明:免費(fèi)開源,不提供源代碼分析.
******************************************************************/
#include<reg51.h>
#define uchar unsigned char
#define dula P0 //段選信號的鎖存器控制
#define wela P2 //位選信號的鎖存器控制,這里只用到P2.4-P2.7
sbit beep=P2^3;
sbit k1 =P3^4;
sbit k2 =P3^5;
sbit k3 =P3^6;
sbit k4 =P3^7;
uchar key,j,k,daojishi=5,wei;
bit begin,end,clear,fangui;
uchar a0,b0=16;c0=16;d0=16;
unsigned int pp;
unsigned char code weitable[]={0x8f,0x4f,0x2f,0x1f};
//數(shù)碼管各位的碼表
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display1(uchar wei,uchar shu)//在任意一位顯示任意的數(shù)字
{
wei=wei-1;
wela|=0xf0;//給P2.4-P2.7置1
P0=table[shu];
wela=wela&weitable[wei];//給P2需要顯示的那一位置1,其他置0
delay(5);
}
void display(uchar a,uchar b,uchar c,uchar d)
{ //一次顯示4個數(shù)字,且每位顯示數(shù)字可自定。
display1(1,a);
display1(2,b);
display1(3,c);
display1(4,d);
}
void keyscan()
{
if(k1==0)
{
while(k1==0);
key= 1;
}
if(k2==0)
{
while(k2==0);
key=2;
}
if(k3==0)
{
while(k3==0);
begin =1;
}
if(k4==0)
{
while(k4==0);
clear = 1;
}
}
void main()
{
TMOD=0x01;
TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時器每隔50000微秒發(fā)起一次中斷。
TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
ET0=1;
EA=1;
a0=table[16];
beep =1;
P1=0xff;
begin=0;
key=0;
end = 0;
fangui = 0;
while(1)
{
keyscan();//按鍵掃描
if(begin)
{
if(!end)
TR0=1;//開始計(jì)時
if(pp==20)//定時1s
{
pp=0;
daojishi--;
}
if(key!=0)
{
a0=key;
end = 1;
daojishi = 0;
}
if(!daojishi)
{
TR0=0;
pp=0;
}
}
else
{
if(key!=0)
{
fangui=1;
a0 = key;
}
}
if(clear)
{
a0=0;key=0;begin=0;fangui=0;beep=1;daojishi=5;clear=0;
b0=16;c0=16;d0=16;P1=0xff;pp=0;end = 0;
}
d0 = daojishi;
display(a0,b0,c0,d0);
if(fangui)
{
beep=0;
P1=0x00;;
}
}
}
void time0() interrupt 1
{ TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}
復(fù)制代碼
所有資料51hei提供下載:
51單片機(jī)四路搶答器.rar
(18.12 KB, 下載次數(shù): 50)
2018-5-11 23:50 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1