標(biāo)題:
五路按鍵搶答器單片機(jī)程序
[打印本頁(yè)]
作者:
Scorpionx
時(shí)間:
2019-10-21 18:39
標(biāo)題:
五路按鍵搶答器單片機(jī)程序
本帖最后由 Scorpionx 于 2019-11-10 21:05 編輯
五路按鍵搶答器,
P3^2~P3^6為搶答人
P3~7為主持人復(fù)位
4位數(shù)碼管顯示搶答者序號(hào)和倒計(jì)時(shí)
單片機(jī)源程序如下:
#include <reg52.h>
/***************定 義 參 數(shù)***************/
unsigned char xianshi=88,kaishi=0,daojishi=10,haoma=0,bitdisplay=0,k=0;
unsigned int i,n=0, bittime=0;
sbit d1=P3^2; //選手1
sbit d2=P3^3; //選手2
sbit d3=P3^4; //選手3
sbit d4=P3^5; //選手4
sbit d5=P3^6; //選手5
sbit start=P3^7; //主持人
sbit LED=P2^7;
unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
/***************延 時(shí) 計(jì) 數(shù)***************/
void delay (unsigned int t) //t=1時(shí),1ms
{
unsigned int a,b;
for(a=0;a<t;a++)
for(b=0;b<120;b++);
}
/***************中斷函數(shù)***************/
void timer0(void)interrupt 1 //5ms中斷一次
{
TH0 = (65536-5000)/256;
TL0 = (65536-5000)%256;
switch(bitdisplay)
{
case 0:P1=0xFB;P0=Tab[xianshi/10];break;
case 1:P1=0xF7;P0=Tab[xianshi%10];break;
case 2:P1=0xFE;P0=Tab[haoma];break;
case 3:P1=0xFD;P0=~0x40; break;
}
bitdisplay++;
bittime++;
if(bitdisplay==4)
bitdisplay=0;
if(bittime==200) //5*200=1000ms
{
bittime=0;
xianshi--;
}
if(xianshi==0) //如果倒計(jì)時(shí)結(jié)束則蜂鳴器與LED顯示
{
P1=0xff;
LED=1;
delay(1000);
LED=0;
TR0=0;
}
}
void djtime() //倒計(jì)時(shí)間修改
{
while(n)
{
for(i=0;i<50;i++)
{
P1=0xFB;P0=Tab[daojishi/10];
delay(5);
P1=0xF7;P0=Tab[daojishi%10];
delay(5);
}
if(d1==0)
delay(33);
if(d1==0)
daojishi--;
if(daojishi>20)
daojishi=20;
if(daojishi<5)
daojishi=5;
if(start==0)
delay(33);
if(start==0)
{
n=0;
LED=1;
for(i=0;i<100;i++)
{
P1=0xFB;P0=Tab[daojishi/10];
delay(5);
P1=0xF7;P0=Tab[daojishi%10];
delay(5);
}
P1=0xff;
LED=0;
}
}
}
/***************主 函 數(shù)***************/
void main()
{
TMOD=0X01;
TH0 = (65536-5000)/256;
TL0 = (65536-5000)%256;
EA=1;
ET0=1; //定時(shí)器中斷
TR0=0; //定時(shí)器 ,等待手動(dòng)開(kāi)啟
for(i=0;i<6;i++)
{
LED=~LED;
delay(500);
}
LED=0;
while(1)
{
djtime();
if(start==0)
delay(33);
if(start==0)
{
k=1;
haoma=0;
xianshi=kaishi;
TR0=1;
}
while(k)
{
while(xianshi)
{
if(d1==0)
delay(33);
if(d1==0)
{
haoma=1;
break;
}
if(d2==0)
delay(33);
if(d2==0)
{
haoma=2;
break;
}
if(d3==0)
delay(33);
if(d3==0)
{
haoma=3;
break;
}
if(d4==0)
delay(33);
if(d4==0)
{
haoma=4;
break;
}
if(d5==0)
delay(33);
if(d5==0)
{
haoma=5;
break;
}
}
xianshi=daojishi;
LED=1;
delay(400);
LED=0;
k=0;
}
}
}
復(fù)制代碼
以上程序51hei提供下載:
搶答器.docx
(14.97 KB, 下載次數(shù): 7)
2019-10-21 18:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
哈哈哈315
時(shí)間:
2020-6-28 12:29
想要仿真圖
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1