标题:
51单片机交通信号灯Proteus仿真程序 深夜模式 时间调整开关
[打印本页]
作者:
lianbalang
时间:
2023-12-12 14:02
标题:
51单片机交通信号灯Proteus仿真程序 深夜模式 时间调整开关
基于AT89C52单片机的交通灯主要具有如下功能。
基本要求如下:
1. 按键1为交通灯“深夜模式”开/关,按下后进入深夜模式,4个方向LED(黄)闪烁;再次按下后则退出深夜模式,交通灯正常运行。
2. 按键2为“时间调整”开/关,上电后,交通灯正常运行,按下此按键后,进入调时模式,此时按键3和4均有效。
3. 按键3为通行“时间加”,按键4为通行“时间减”。
4. 设定好通行时间后,按键2再次按下,退出调时模式。
5. 交通灯设置好正常运行时,按键3和按键4均无效。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
(182.38 KB, 下载次数: 53)
下载附件
2023-12-17 15:12 上传
单片机源程序如下:
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit renrh=P3^0; //人行道右红
sbit renrl=P3^1;// 人行道右绿
sbit rensh=P2^0; //人上下红灯
sbit rensl=P2^1; //人上下绿灯
sbit cherh=P2^5; //车左右红灯
sbit chery=P2^6; //车左右黄灯
sbit cherl=P2^7; //车左右绿灯
sbit chesh=P2^2; //车上下红灯
sbit chesy=P2^3;//车上下黄灯
sbit chesl=P2^4;//车上下绿灯
uint8 smgduan[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
uint8 smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint8 sec,sum;
uint8 smgshu[8];
void delay(uint8 i)
{
uint8 j,k;
for(;i>0;i--)
for(j=10;j>0;j--)
for(k=130;k>0;k--);
}
void init0()
{
TMOD=0x01;
TH1=0x3c;
TL1=0xb0; //定时50ms
TR0=1;
ET0=1;
EA=1;
}
void smgsaomiao()
{
uint8 i;
for(i=0;i<8;i++)
{
P0=smgshu[i];
delay(1);
P1=smgwei[i];
//delay(1);
}
}
void main()
{
init0();
sec=1;
while(1)
{
if(sec==70)
{
sec=1;
}
if(sec<31)
{
P2=0xff;
P3=0xff;
renrh=0;
chesl=0;
cherh=0;
rensl=0;
smgshu[0]=0x00;
smgshu[1]=0x00;
smgshu[2]=smgduan[(30-sec)/10];
smgshu[3]=smgduan[(30-sec)%10];
smgshu[4]=0x00;
smgshu[5]=0x00;
smgshu[6]=smgduan[(30-sec)/10];
smgshu[7]=smgduan[(30-sec)%10];
smgsaomiao();
}
if(sec>30&&sec<36)
{
P3=0xff;
P2=0xff;
renrh=0;
chesy=0;
chery=0;
rensh=0;
smgshu[0]=0x00;
smgshu[1]=0x00;
smgshu[2]=smgduan[(36-sec)/10];
smgshu[3]=smgduan[(36-sec)%10];
smgshu[4]=0x00;
smgshu[5]=0x00;
smgshu[6]=smgduan[(36-sec)/10];
smgshu[7]=smgduan[(36-sec)%10];
smgsaomiao();
}
if(sec>35&&sec<66)
{
P3=0xff;
P2=0xff;
renrl=0;
chesh=0;
cherl=0;
rensh=0;
smgshu[0]=0x00;
smgshu[1]=0x00;
smgshu[2]=smgduan[(65-sec)/10];
smgshu[3]=smgduan[(65-sec)%10];
smgshu[4]=0x00;
smgshu[5]=0x00;
smgshu[6]=smgduan[(65-sec)/10];
smgshu[7]=smgduan[(65-sec)%10];
smgsaomiao();
}
if(sec>65&&sec<71)
{
P3=0xff;
P2=0xff;
renrh=0;
chesy=0;
chery=0;
rensh=0;
smgshu[0]=0x00;
smgshu[1]=0x00;
smgshu[2]=smgduan[(70-sec)/10];
smgshu[3]=smgduan[(70-sec)%10];
smgshu[4]=0x00;
smgshu[5]=0x00;
smgshu[6]=smgduan[(70-sec)/10];
smgshu[7]=smgduan[(70-sec)%10];
smgsaomiao();
}
}
}
void time0() interrupt 1
{
TH1=0x3c;
TL1=0xb0;
sum++;
if(sum==20)
{
sum=0;
sec++;
}
}
复制代码
仿真程序:
交通灯仿真实验.zip
(78.25 KB, 下载次数: 30)
2023-12-12 14:01 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
heicad
时间:
2023-12-18 01:31
好资料,51黑有你更精彩!!!
作者:
kelulu11
时间:
2024-5-28 11:37
好资料,51黑有你更精彩!!!
作者:
STC庄伟
时间:
2024-5-28 16:27
软件仿真 淘汰 好不好 8H8K64U 自带硬件USB,可以USB仿真 USB下载 多方便
作者:
2743509646
时间:
2024-12-19 11:14
好资料,51黑有你更精彩!!!
作者:
2743509646
时间:
2024-12-19 11:15
可以问一下仿真版本多少吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1