仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (98.69 KB, 下載次數: 33)
下載附件
2021-11-2 03:05 上傳
51hei圖片20200303115638.png (43.37 KB, 下載次數: 46)
下載附件
2020-3-3 11:50 上傳
使用at89c51實現功能
單片機源程序:
#include<reg51.h>
#include<lcd1602.h>
sbit sjjia=P1^0; //定義時間加按鈕
sbit sjjian=P1^1; //定義時間減按鈕
sbit kaishi=P1^2; //定義開始按鈕
sbit fuwei=P1^3; //定義復位按鈕
sbit soud=P1^4; //報警按鈕
sbit led_r=P1^5; //定義搶答成功指示
sbit led_y=P1^6; //定義闡述時間到指示
unsigned char num[]={'0','1','2','3','4','5','6','7','8','9'},num2;
unsigned char model,time,temp;
void init() //初始化函數
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=0;
EA=1;
P1=0x0f;
model=0;
time=30;
}
void delay(unsigned char i) //延時函數
{
unsigned char j,k;
while(i--)
for(j=100;j>0;j--)
for(k=100;k>0;k--);
}
void star() //啟動
{
lcd_xml(0x80);lcd_xsj(" welcome ");
delay(100);
lcd_xml(0xc0);lcd_xsj(" 8 Way Responder");
delay(80);
}
void led_num() //刷新倒計時
{
lcd_xml(0x80);lcd_xsj(" Countdown : ");
lcd_xml(0x8d);lcd_xsj2(num[time/10]);
lcd_xml(0x8e);lcd_xsj2(num[time%10]);
}
void reset() //復位
{
TR0=0;
P1=0x0f;
led_r=0;
led_y=0;
P2=0xff;
model=0;
time=10;
led_num();
lcd_xml(0xc0);lcd_xsj(" Not started ");
}
void Not_started()
{
if(sjjia==0)
{
delay(10);
if(sjjia==0)
{
time++;
if(time==100) time=0;
led_num();
}
}
if(sjjian==0)
{
delay(10);
if(sjjian==0)
{
time--;
if(time==0) time=99;
led_num();
}
}
if(kaishi==0)
{
delay(10);
if(kaishi==0)
{
model=1;
TR0=1;
lcd_xml(0xc0);lcd_xsj(" Start Responder");
soud=1;delay(10);soud=0;
}
}
}
void anjian()
{
if(P2 != 0xff)
{
delay(5);
if(P2 != 0xff)
{
temp=~P2;
model=3;
led_r=1;
soud=1;delay(10);soud=0;
switch(temp)
{
case 0x01:num2=1;break;
case 0x02:num2=2;break;
case 0x04:num2=3;break;
case 0x08:num2=4;break;
case 0x10:num2=5;break;
case 0x20:num2=6;break;
case 0x40:num2=7;break;
case 0x80:num2=8;break;
}
lcd_xml(0xc0);lcd_xsj(" Competitor: ");
lcd_xml(0xce);lcd_xsj2(num[num2]);
time=60;
P2=temp;
}
}
}
void finish()
{
if(!time)
{
led_y=1;
lcd_xml(0xc0);lcd_xsj(" End ");
}
}
void main()
{
init();
lcd_init();
star();
reset();
while(1)
{
if(fuwei==0) //復位鍵檢測
{
delay(1);
if(fuwei==0)
reset();
}
switch(model)
{
case 0:Not_started();break;
case 1:anjian();break;
case 2:finish();break;
case 3:break;
default : model=0;break;
}
}
}
void timee() interrupt 1 //1s函數中斷
{
unsigned char a;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++; //是否滿1s
if(a==24)
{
a=0;
if(model==1 || model==3)
{
time--;
led_num();
if(time==0)
{
model=2;
soud=1;delay(20);soud=0;
}
}
}
}
51hei圖片20200303120220.png (24.35 KB, 下載次數: 55)
下載附件
2020-3-3 11:55 上傳
全部資料51hei下載地址:
電子綜合設計.7z
(811.36 KB, 下載次數: 161)
2021-11-2 03:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|