• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的交通灯【LCD1602,左拐,独立按键】(仿真)

2024/12/23
1638
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有需要资料的可了解一下.docx

共1个文件

三色交通灯只代表转向指示,全灭表示形式的通行

1.整个系统具有开启、停止、运行等选项,在停止状态可以进行通行时间的设置;

2.可以对车辆的通行时间进行设置;

3.不同类型的通行应可以单独设置,如上下直行和左右直行可以为不同的通行时间;

4.利用LCD1602(LM016L)指示各个路口通行剩余时间以及修改时间。


sbit k1=P3^2;//设置
sbit k2=P3^3;//加
sbit k3=P3^4;//减
sbit k4=P3^0;//启动
sbit k5=P3^1;//停止

sbit red1	=P1^0;	  //南北方向
sbit yellow1=P1^1;
sbit green1	=P1^2;
sbit red2	=P1^3;	  //东西方向
sbit yellow2=P1^4;
sbit green2	=P1^5;
sbit left1=P1^7;//东西左拐
sbit left2=P1^6;//南北左拐

uchar sec=0,miao=0;	  //定时
uchar nan=0,dong=0;//东西南北时间
uchar mode=0;		  //路灯工作顺序
uchar nan_lim=10,dong_lim=10,left1_lim=10,left2_lim=15;//自由调整时主次干道绿灯时间
uchar yellow_time=3;//黄灯时间
uchar human_time=10;//行人通行时间
uchar moshi=10;
uchar disp[]="00s";

void delay(uint i)//延时
{
	while(i--);
}

void control()//控制路灯
{
	switch(mode)
		{
			case 0:red1=0;yellow1=1;green1=1;
				red2=1;yellow2=1;green2=0;//东西直行
				left1=1;left2=1;
				nan=dong_lim+yellow_time*2+left1_lim+2;
				dong=dong_lim;//设置初始时间
				break;
			case 1:red1=0;yellow1=1;green1=1;
				red2=1;yellow2=0;green2=1;//东西黄灯亮
				left1=1;left2=1;
				dong=yellow_time;
				break;
			case 2:red1=0;yellow1=1;green1=1;//东西左拐
				red2=1;yellow2=1;green2=1;
				left1=0;left2=1;
				dong=left1_lim;//设置初始时间
				break;
			case 3:red1=0;yellow1=1;green1=1;
				red2=1;yellow2=0;green2=1;//东西黄灯亮
				left1=1;left2=1;
				dong=yellow_time;
				break;
						
			case 4:red1=1;yellow1=1;green1=0;
				red2=0;yellow2=1;green2=1;//东西红灯亮
				left1=1;left2=1;
				nan=nan_lim;
				dong=nan_lim+yellow_time*2+left2_lim+2;//设置初始时间
				break;
			case 5:red1=1;yellow1=0;green1=1;
				red2=0;yellow2=1;green2=1;//南北黄灯亮
				left1=1;left2=1;
				nan=yellow_time;
				break;
			case 6:red1=1;yellow1=1;green1=1;
				red2=0;yellow2=1;green2=1;//南北左拐
				left1=1;left2=0;
				nan=left2_lim;
				break;
			case 7:red1=1;yellow1=0;green1=1;
				red2=0;yellow2=1;green2=1;//南北黄灯亮
				left1=1;left2=1;
				nan=yellow_time;
				break;
			case 8:red1=1;yellow1=1;green1=1;//行人通行
				red2=1;yellow2=1;green2=1;
				left1=1;left2=1;
				nan=human_time+1;
				dong=human_time;
		}
}

//清屏
void clear()
{
	write_com(0x01);//清屏
	delay(15000);
}
void main()//主函数
{
	init_1602();//初始化LCD
	TMOD=0x01;//定时器设置
	TH0=0x3c; //50ms
	TL0=0xb0;
	ET0=1;	  //开中断
	EA=1;
	TR0=1;	 //启动定时器
	red1=0;yellow1=1;green1=1;	//禁行
		red2=0;yellow2=1;green2=1;
		left1=1;left2=1;	

	while(1)
	{
		if(!k1 &&(moshi<10))	 //设置
		{				 //模式切换
			if(moshi<5)
				moshi++;
			else
				moshi=1;
			clear();//清屏
			while(!k1);
		}
		if(moshi==1)//调节南北时间
		{
			if(!k2)
			{
				if(nan_lim<99)
					nan_lim++;
				while(!k2);
			}
			if(!k3)
			{
				if(nan_lim>1)
					nan_lim--;
				while(!k3);
			}
		}
		if(moshi==2)//调节南北左拐时间
		{
			if(!k2)
			{
				if(left2_lim<99)
					left2_lim++;
				while(!k2);
			}
			if(!k3)
			{
				if(left2_lim>1)
					left2_l
  • 有需要资料的可了解一下.docx
    下载

相关推荐