标题:
51单片机红绿黄智能交通灯Proteus仿真程序
[打印本页]
作者:
exp(jpai)+1=0
时间:
2022-12-1 16:15
标题:
51单片机红绿黄智能交通灯Proteus仿真程序
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(51.87 KB, 下载次数: 45)
下载附件
2022-12-1 16:26 上传
单片机源程序如下:
#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为东西方向数码管,3456为南北方向数码管*/
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;
}
}
}
复制代码
Keil代码与Proteus仿真下载:
红绿黄智能交通灯.7z
(78.19 KB, 下载次数: 90)
2022-12-1 16:35 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
Fish-LKCY
时间:
2022-12-5 15:07
顶一下,学习中!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1