標(biāo)題:
51單片機(jī)紅綠黃智能交通燈Proteus仿真程序
[打印本頁]
作者:
exp(jpai)+1=0
時間:
2022-12-1 16:15
標(biāo)題:
51單片機(jī)紅綠黃智能交通燈Proteus仿真程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(51.87 KB, 下載次數(shù): 45)
下載附件
2022-12-1 16:26 上傳
單片機(jī)源程序如下:
#include<reg52.h>
//unsigned char digtub[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char digtub[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit lred=P2^0;//東西方紅燈
sbit lgreen=P2^1;//東西方綠燈
sbit lyellow=P2^7;//東西方黃燈
sbit rred=P2^5; //南北方紅燈
sbit rgreen=P3^0;//南北方綠燈
sbit ryellow=P2^6;
sbit L1=P3^4;
sbit L2=P3^5;
typedef unsigned int u16;
typedef unsigned char u8;
u8 dat[4];
void show();
void delay(u16 ms)
{
u16 j;
for(ms;ms>0;ms--)
for(j=0;j<120;j++);
}
void timer_init()
{
TMOD|=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
void interr() interrupt 1
{
static u16 num=0;
static u16 i=31,a;
static u16 k=56,j;
static u16 q=26,b,l;
static u16 p=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==20)
{
num=0;
i--;
k--;
q--;
if(j==2&&i==0){i=5;j=3;}
if(j==3&&i==0){i=30;k=55;a=0;b=0;j=0;}
if(i>=5&&!a)lred=0;
else{lred=1;}
if(i<5&&i>=0&&j==3){a=1;lyellow=~lyellow;lgreen=1;}
if(i<5&&i>=0&&!b){a=1;lyellow=~lyellow;lgreen=1;}
if(i<=0){i=k;lyellow=1;b=1;lgreen=0;a=1;j=2;}
if(q==0&&!l){q=5;l=1;}
if(q<=0&&l==3){q=25;l=0;}
if(q==0&&l==1){q=30;l=3;}
if(q>0&&!l){rgreen=0; rred=1;ryellow=1;}
if(q<=5&&q>0&&l==1){ryellow=~ryellow;rgreen=1;}
if(q>5&&l==3){rred=0;ryellow=1;}
if(q<=5&&q>0&&l==3){ryellow=~ryellow;rred=1;}
dat[0]=digtub[i/10];
dat[1]=digtub[i%10];
dat[2]=digtub[q/10];
dat[3]=digtub[q% 10];
}
}
void main()
{ u8 g;
timer_init();
while(1)
{
show();
delay(20);
for(g=0;g<2;g++)
{
P1=0XFF;
switch(g)
{
case 0:L1=1;L2=0;
P1=dat[2];delay(10); break;
case 1: L1=0;L2=1;
P1=dat[3];
delay(10); break;
default:break;
}
}
}
}
void show()
{
u16 i;
for(i=0;i<2;i++)
{
/*1278為東西方向數(shù)碼管,3456為南北方向數(shù)碼管*/
switch(i)
{ P0=0XFF;
case 1:LSA=0;LSB=0;LSC=0;P0=dat[0];delay(10);break; //1
case 0:LSA=1;LSB=0;LSC=0;P0=dat[1];delay(10);P1=0XFF;break; //2
//case 2:LSA=1;LSB=1;LSC=1;P1=dat[1];delay(10); break; //8
//case 3:LSA=0;LSB=1;LSC=1;P1=dat[0];delay(10);break; //7
// case 0:LSA=0;LSB=0;LSC=1;P1=dat[0];delay(10);break; //5
//case 1:LSA=1;LSB=0;LSC=1;P1=dat[1];delay(10); break; //6
// case 7:LSA=1;LSB=1;LSC=0;P1=dat[0];delay(10); break; //4
//case 8:LSA=0;LSB=1;LSC=0;P1=dat[1];delay(10);break;//3
default:break;
}
}
}
復(fù)制代碼
Keil代碼與Proteus仿真下載:
紅綠黃智能交通燈.7z
(78.19 KB, 下載次數(shù): 90)
2022-12-1 16:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
Fish-LKCY
時間:
2022-12-5 15:07
頂一下,學(xué)習(xí)中!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1