基于51单片机交通灯设计—4个数码管,50/100秒切换,控制通行

基于51单片机交通灯设计

(仿真+程序)

功能介绍

具体功能:

1.四个数码管同时显示倒计时,LED作为红绿黄灯;

2.按键可以切换50秒/100秒红绿灯;

3.按键可以设置四路口全变红灯;

4.按键可以设置东西通行、南北禁止/南北通行、东西禁止;

​演示视频:

基于51单片机交通灯设计—4个数码管,50/100秒切换,控制通行 

添加图片注释,不超过 140 字(可选)

程序

/***微信公众号:木子单片机********/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^6;
sbit k2=P1^7;
sbit k3=P2^7;
sbit yellowled_nb=P1^4;	//南北黄灯
sbit yellowled_dx=P1^1;	//东西黄灯
uchar code table[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar data dig;	//位选
uchar data led;	//偏移量
uchar data buf[4];
uchar data sec_dx=50;//东西数码指示值
uchar data sec_nb=50;//南北数码指示值
uchar data set_timedx=50;
uchar data set_timenb=50;//倒计时设置的键值保存
uchar data b;//定时器中断次数
bit time;//灯状态循环标志
bit int0_time;//中断强行标志
bit set;//调时切换键标志
uint i;
void delay(int ms)
{
	uint j,k;
	for(j=0;j<ms;j++)
		for(k=0;k<124;k++);
}
void key()
{
	if (k1!=1)	//故障时禁止通行
	{
		while(k1!=1);
		TR0=0;
		for(i=0;i<3;i++)
		{
         yellowled_dx=1;
		 yellowled_nb=1;
		 delay(500);
		 yellowled_dx=0;
		 yellowled_nb=0;
		 delay(500);
        }
		P1=0xf6;
		sec_nb=88;
		sec_dx=88;
		int0_time=1;
	}
	if(k2!=1&&set==1)	//切换准行时间100s
	{
		while(k2!=1);	
		TR0=0;
		set_timedx=99;
		set_timenb=99;
		sec_dx=99;
		sec_nb=99;
		set=0;
	}
	if(k2!=1&&set==0)	//切换准行时间50s
	{
		while(k2!=1);
		TR0=0;
		set_timedx=50;
		set_timenb=50;
		sec_dx=50;
		sec_nb=50;
		set=1;
	}
	if(k3!=1)	//复位
	{
		sec_dx=set_timedx;
		sec_nb=set_timenb;
		TR0=1;
	}
}
void display()
{
	buf[1]=sec_dx/10; //第1位 东西秒十位
	buf[2]=sec_dx%10; //第2位 东西秒个位
	buf[3]=sec_nb/10; //第3位 南北秒十位
	buf[0]=sec_nb%10; //第4位 南北秒个位
	P0=table[buf[led]];
	delay(2);	//先延时,提前显示一位
	P2=dig;
	dig=_crol_(dig,1);
	led++;
	if(led==4)
	{
		led=0;
		dig=0xfe;
	}
}

硬件设计

使用元器件:

单片机:AT89C51;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

添加图片注释,不超过 140 字(可选)

设计资料

01仿真图

本设计使用Proteus7.8和Proteus8.9两个版本设计!具体如图!

添加图片注释,不超过 140 字(可选)

02程序

本设计使用软件keil5版本编程设计!具体如图!

添加图片注释,不超过 140 字(可选)

03设计资料

        资料获取请关注同名公众号,全部资料包括程序(含注释)、仿真源文件等。具体内容如下,全网最全!!

添加图片注释,不超过 140 字(可选)

资料获取请观看前面演示视频!

点赞分享一起学习成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值