基于51单片机的交通灯显示系统设计

1、设计需求及目标

交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT80C51为中心器件来模拟十字路口交通灯的各种状态显示以及倒计时时间,系统实用性强、操作简单、扩展性强。

采用AT80C51芯片,具体设计要求:

①显示要求与实际十字路一致

②有倒计时

③用6位数码管显示:左2位表示左转弯,中间2位表示直行,右2位表示右转弯;2个数码管中其中1个表示灯(用H  L  U分别表示红、绿、黄),另一个数码管用于倒计时。

2、设计思路及方案

实现单方向交通控制,不会出现交通事故情况。具体要求:单方向,有左转,直行,右转。每个方向用两个数码管表示,一个用作红绿灯表示,另一个作为时间倒计时。硬件电路:

3、程序主函数

#include<reg52.h>
#define uInt unsigned int
#define uChar unsigned char
uChar a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uChar t1=15,t2=12,count1=0;    
sbit WEIXUAN1 = P3^0;
sbit WEIXUAN2 = P3^1;
sbit WEIXUAN3 = P3^2;
sbit WEIXUAN4 = P3^3;
sbit UpRed = P3^4;
sbit UpYellow =P3^5;
sbit UpGreen =P3^6;
sbit DownRed = P3^7;
sbit DownYellow = P1^0;
sbit DownGreen = P1^1;
sbit LeftRed = P1^2;
sbit LeftYellow = P1^3;
sbit LeftGreen = P1^4;
sbit RightRed = P1^5;
sbit RightYellow = P1^6;
sbit RightGreen = P1^7;

void SMGDisplay()
{
			P0=0x00;
			P2=0x00;
			WEIXUAN1=0;
			WEIXUAN2=1;
			WEIXUAN3=0;
			WEIXUAN4=1;
			P2=a[t1/10];
			P0=a[t2/10];
			WEIXUAN1=1;
			WEIXUAN2=1;
			WEIXUAN3=1;
			WEIXUAN4=1;
			
			P0=0x00;
			P2=0x00;
			WEIXUAN1=1;
			WEIXUAN2=0;
			WEIXUAN3=1;
			WEIXUAN4=0;
			P2=a[t1%10];
			P0=a[t2%10];
			WEIXUAN1=1;
			WEIXUAN2=1;		
			WEIXUAN3=1;
			WEIXUAN4=1;
}

void Time0_Init()
{
		TMOD=0x01;
    TH0=(65536-10000)/256;
		TL0=(65536-10000)%256;		
		EA=1;
		ET0=1;
		TR0=1;
}

void LEDDisplay1()
{
		
		UpGreen=1;
		DownGreen=1;
		LeftRed=1;
		RightRed=1;

		UpRed=0;
		DownRed=0;
		LeftGreen=0;
		RightGreen=0;
		
}

void LEDDisplay2()
{
		
		LeftGreen=1;
		RightGreen=1;
		
		LeftYellow=0;
		RightYellow=0;	
		
	
}

void LEDDisplay3()
{
		UpRed=1;
		DownRed=1;
		LeftYellow=1;
		RightYellow=1;	
		
		UpGreen=0;
		DownGreen=0;
		LeftRed=0;
		RightRed=0;
		
	
		
}

void LEDDisplay4()
{
		UpGreen=1;
		DownGreen=1;
		
		UpYellow=0;
		DownYellow=0;
		
		
}

void main()
{
		Time0_Init();
		while(1)
		{
				SMGDisplay();
		}		 
}

void Time0(void) interrupt 1
{	
		static		uChar i=0;
		static		uChar j=0;
		uChar k=0;
		TH0=(65536-10000)/256;
		TL0=(65536-10000)%256;
		count1++;	
		if(count1==100)
		{
				count1=0;
				t1--;
				t2--;	
				if((i%3==0)&&(j%3==0))
									LEDDisplay1();
				if(t1==-1)
				{						
						i++;
						if(i%3==1)
						{
							 t1=12;
							 	LEDDisplay3();
						}
						else if(i%3==2)
						{
								   t1=2;
									 LEDDisplay4();
						}
								 else
										t1=15;
									
				}
				if(t2==-1)
				{
						j++;
						if(j%3==1)
						{
								t2=2;
								LEDDisplay2();
						}
						else if(j%3==2)
						{
										t2=15;
										LEDDisplay3();
						}
									else 
										t2=12;
										
					}
		}
}
				

完整资料:

https://market.m.taobao.com/app/idleFish-F2e/widle-taobao-rax/page-detail?wh_weex=true&wx_navbar_transparent=true&id=614763379500&ut_sk=1.WUpxx7gpwUoDAMmnnrBIzAno_12431167_1585213694840.Copy.detail.614763379500.1828622527&forceFlush=1

发布了23 篇原创文章 · 获赞 7 · 访问量 329

猜你喜欢

转载自blog.csdn.net/weixin_41017942/article/details/105122820