標(biāo)題:
51單片機交通燈程及Proteus仿真文件 按鍵控制東西南北禁止通行等4種模式
[打印本頁]
作者:
不悲傷
時間:
2022-12-5 18:27
標(biāo)題:
51單片機交通燈程及Proteus仿真文件 按鍵控制東西南北禁止通行等4種模式
“基礎(chǔ)篇綜合測試”項目1說明
功能要求:
1、仿真開始:東西(馬路)與南北(人行道)的所有紅、黃、綠燈熄滅,兩位數(shù)碼管不顯示。
2、K1按下松手:東西南北禁止通行
東西( 馬路 )-- 紅燈 -- 常亮
南北(人行道)-- 紅燈 -- 常亮
3、K2按下松手:東西南北謹慎通行
東西( 馬路 )-- 黃燈 -- 亮0.5秒、滅0.5秒循環(huán)閃爍
南北(人行道)-- 黃燈 -- 亮0.5秒、滅0.5秒循環(huán)閃爍
要求使用定時器T0完成定時功能
4、K3按下松手:東西(馬路)通行,南北(人行道)禁止通行
東西( 馬路 )-- 綠燈 -- 常亮
南北(人行道)-- 紅燈 -- 常亮
5、K4按下松手:南北(人行道)有行人請求通行
東西( 馬路 )-- 紅 燈 亮 11 秒 -- 綠燈常亮
南北(人行道)-- 綠燈亮8秒--黃燈亮3秒 -- 紅燈常亮
要求使用定時器T1完成定時功能
6、在功能要求5的基礎(chǔ)上,使用兩位數(shù)碼管,顯示南北(人行道)通行倒計時,即按鍵K4按下松手,兩位數(shù)碼管顯示11、10、09、08、.......、03、02、01、00。
注:仿真電路不允許修改,所有按鍵均采用外部中斷0來檢測識別。
仿真電路如下所示:
51hei.gif
(80.09 KB, 下載次數(shù): 32)
下載附件
2022-12-12 03:49 上傳
單片機源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar key_mode=0;
uint t,s,shi,ge,i;
uchar RXD_time=11;
sbit H_RED=P1^0;
sbit H_GREEN=P1^1;
sbit H_YELLOW=P1^2;
sbit L_RED=P1^4;
sbit L_GREEN=P1^5;
sbit L_YELLOW=P1^6;
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
sbit LED_com1=P2^6;
sbit LED_com2=P2^7;
//sbit DX=P0;
void delay_LED(unsigned int i)
{
unsigned int j;
for(j=0;j<i;j++);
}
void int0() interrupt 0
{
if (k1==0)
{delay_LED(1000);
if(k1==0){
key_mode=1; }
while(!k1);
}
if (k2==0)
{delay_LED(1000);
if(k2==0){
key_mode=2;}
while(!k2)
;}
if (k3==0)
{ delay_LED(1000);
if(k3==0){
key_mode=3; }
while(!k3);
}
if (k4==0)
{delay_LED(1000);
if(k4==0){
key_mode=4; }
while(!k4);
}
}
void display();
void jinxing()
{
if(key_mode==1)
{
H_RED=1;L_RED=1;}
}
void dxnbshenxing()
{
if(key_mode==2)
{ //P1=0;
TR0=1;
H_RED=0;L_RED=0;
//H_RED=1;L_RED=1;
if(i==5)
{
H_YELLOW=~H_YELLOW;
L_YELLOW=~L_YELLOW;
i=0;
}
}
}
void kkk3()
{
if(key_mode==3)
{ TR0=0;
//P1=0;
L_GREEN=1;
H_RED=1;
H_YELLOW=0;
L_YELLOW=0;
}
}
void KKK4()
{
if (key_mode==4)
{
TR0=0;
TR1=1;
if(s<11){L_RED=1;
L_GREEN=0;
H_RED=0; }
if(s<=8) {H_GREEN=1;}
if(s>8){H_GREEN=0;}
if(s<=3) {H_YELLOW=1;}
if(s>3) {H_YELLOW=0;}
if(s>=11)
{
L_GREEN=1;
L_RED=0;
H_RED=1;
if(RXD_time ==0)
{TR1=0;
}
}
}
}
void display()
{
if(key_mode==4)
{ shi=RXD_time/10;
ge=RXD_time%10;
// int k=0;
//for(k=0;k<2;k++)
LED_com1=0;P0=table[shi];delay_LED(100);LED_com1=1; delay_LED(100);
LED_com2=0;P0=table[ge];delay_LED(100);LED_com2=1;delay_LED(100);
}
}
/////////////////////////////////////////////////////////////////
//定時器T0服務(wù)函數(shù) ///
//作用:黃燈0.5秒閃爍 ///
/////////////////////////////////////////////////////////////////
void T0_int() interrupt 1
{
//uint i;
TH0=0X18 ;
TL0=0XFC ;
i++;
}
/////////////////////////////////////////////////////////////////
//定時器T1服務(wù)函數(shù) ///
//作用:南北(人行道)倒計時定時 ///
/////////////////////////////////////////////////////////////////
void T1_int() interrupt 3
{
uint i;
TH1=0X18 ;
TL1=0XFC ;
i++;
if(i==10)
{ s++;
RXD_time --;
i=0;
}
}
void main(void)
{
IT0=1 ;
EX0=1 ;
TMOD=0X11 ;
TL0 = 0xFC;
TH0 = 0x18;
TF0 = 1;
//TR0 = 1;
ET0=1 ;
TL1 = 0xFC;
TH1 = 0x18;
TF1 = 1;
//TR1 = 1;
ET1=1;
EA=1;
P1=0x00;
while(1){ jinxing();
dxnbshenxing();
kkk3();
KKK4();
display();
}
}
復(fù)制代碼
51hei.png
(13.37 KB, 下載次數(shù): 30)
下載附件
2022-12-12 03:49 上傳
所有資料51hei附件下載:
基礎(chǔ)篇綜合測試 項目1yzf.zip
(204.81 KB, 下載次數(shù): 48)
2022-12-5 18:26 上傳
點擊文件名下載附件
51單片機交通燈程序及仿真
下載積分: 黑幣 -5
作者:
heicad
時間:
2022-12-13 03:30
好資料,51黑有你更精彩!!!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1