• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設計報告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

基于51單片機的多功能交通燈設計!!!

04/17 08:35
451
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機仿真設計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設計編號:【M03】

1.? 簡介

? 本文提出了一種基于51單片機的智能交通燈設計。該設計在硬件方面主要采用AT89C51單片機作為主控核心,結合獨立按鍵、數(shù)碼管、LED燈,實現(xiàn)不同的紅綠燈切換時間,并且具有倒計時的功能。

2.? 主要功能

a.當主干道通行亮綠燈時,支干道亮紅燈,而支干道亮綠燈時,主干道亮紅燈。

b.主支干道交替通行,主干道每次放行60s、支干道30s,設計60s和30s計時顯示電路。

c.在過程中間,要亮5s的黃燈作為過渡,設置5s計時顯示電路。

d.有緊急車輛要求通過時,系統(tǒng)要能禁止東西或南北兩條路上所有的車輛通行。

3.? 源程序(Keil5)

本設計采用keil5 C51軟件(內附安裝包)實現(xiàn)程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#include	<reg51.h> 	
#define	uchar	unsigned char
#define	uint	unsigned int
	
/*****定義控制位**********************/
sbit	  EW_LED2=P2^3;	          //EW_LED2控制位
sbit	  EW_LED1=P2^2;	          //EW_LED1控制位
sbit	  SN_LED2=P2^1;	          //SN_LED2控制位
sbit	  SN_LED1=P2^0;	          //SN_LED1控制位

sbit    SNstraight_Green=P1^3;  //南北直行綠燈
sbit    EWstraight_Green=P1^0;  //東西直行綠燈
sbit    SNstraight_Yellow=P1^4; //南北直行黃燈
sbit    EWstraight_Yellow=P1^1; //東西直行黃燈
sbit    SNstraight_Red=P1^5;    //南北直行紅燈
sbit    EWstraight_Red=P1^2;    //東西直行紅燈
sbit    SNright_Green=P2^7;		  //南北右拐綠燈
sbit    EWright_Green=P1^6;		  //東西右拐綠燈
sbit    SNright_Red=P3^4;		    //南北右拐紅燈
sbit    EWright_Red=P2^4;		    //東西右拐紅燈
sbit    SNleft_Green=P3^5;		  //南北左拐綠燈
sbit    EWleft_Green=P2^5;		  //東西左拐綠燈
sbit    SNleft_Red=P3^7;		    //南北左拐紅燈
sbit    EWleft_Red=P2^6;		    //東西左拐紅燈
sbit    SNturn_Yellow=P3^6;     //南北轉向黃燈
sbit    EWturn_Yellow=P1^7;     //東西轉向黃燈
	
sbit    Time_Button=P3^0;       //時間加減按鈕判斷輸入端
sbit    QZ_Button=P3^1;         //強制通行方向判斷輸入端

bit     Flag_SNstraight_Yellow;  //SN直行黃燈標志位
bit     Flag_EWstraight_Yellow;  //EW直行黃燈標志位
bit     Flag_SNturn_Yellow;      //SN轉向黃燈標志位
bit     Flag_EWturn_Yellow;      //EW轉向黃燈標志位
bit     QZ_EW;					         //EW強制通行標志
bit     QZ_SN;					         //SN強制通行標志
bit     QZ_flag;                 //數(shù)碼管強制標志

char	Time_EW;                //東西方向倒計時單元
char	Time_SN;                //南北方向倒計時單元

uchar EW=30,SN=30,EWL=60,SNL=60; //倒計時時長

uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0~~~~9段選碼


/*********************延時函數(shù)**********************/
void	Delay(uchar	 a)
	{
		while(a--);
	}


/*******************顯示函數(shù),顯示倒計時的值**********************/
void	Display(void)
{
		char h,l;
		h=Time_EW/10;		//EW方向計時的十位數(shù)
		l=Time_EW%10;		//EW方向計時的個位數(shù)
  	P0=table[l];		//顯示EW計時時間的低位
		EW_LED2=1;
		Delay(2);
		EW_LED2=0;
	  P0=table[h];		//顯示EW計時時間的高位
		EW_LED1=1;
		Delay(2);
		EW_LED1=0;

		h=Time_SN/10;		//SN方向計時的十位數(shù)
		l=Time_SN%10;		//SN方向計時的個位數(shù)
		P0=table[l];		//顯示SN計時時間的低位
		SN_LED2=1;
		Delay(2);
		SN_LED2=0;
	  P0=table[h];		//顯示SN計時時間的高位
		SN_LED1=1;
		Delay(2);
		SN_LED1=0;
		
} 

/*******************顯示函數(shù),強制通行的值**********************/
void	Display1(void)
{
	  P0=table[8];
	  if(QZ_flag==1)
		{
		  EW_LED2=1;			
		  EW_LED1=1;		
		  SN_LED2=1;			
		  SN_LED1=1;
			
		}
		else
    {
		  EW_LED2=0;
		  EW_LED1=0;
		  SN_LED2=0;
		  SN_LED1=0;
		}			
			
} 

/************************信號燈控制函數(shù)******************/
void SN_GOstraight()           //SN直行綠燈
{
	  SNstraight_Green=1;	      
    SNstraight_Yellow=0;
    SNstraight_Red=0;		
}

void SN_STOPstraight()         //SN直行紅燈
{
	  SNstraight_Green=0;	      
    SNstraight_Yellow=0;
    SNstraight_Red=1;
}

void EW_GOstraight()           //EW直行綠燈
{
    EWstraight_Green=1;	      
    EWstraight_Yellow=0;
    EWstraight_Red=0;	
}

void EW_STOPstraight()         //EW直行紅燈
{
	  EWstraight_Green=0;	      
    EWstraight_Yellow=0;
    EWstraight_Red=1;	
}

void SN_GOturnright()          //SN右轉綠燈
{
	  SNright_Green=1;
	  SNturn_Yellow=0;
	  SNright_Red=0;
}

void SN_STOPturnright()        //SN右轉紅燈
{
	  SNright_Green=0;
	  SNturn_Yellow=0;
	  SNright_Red=1;
}

void SN_GOturnleft()           //SN左轉綠燈
{
	  SNleft_Green=1;
	  SNturn_Yellow=0;
	  SNleft_Red=0;
}

void SN_STOPturnleft()         //SN左轉紅燈
{
	  SNleft_Green=0;
	  SNturn_Yellow=0;
	  SNleft_Red=1;
}

void EW_GOturnright()          //EW右轉綠燈
{
	  EWright_Green=1;
	  EWturn_Yellow=0;
	  EWright_Red=0;
}

void EW_STOPturnright()        //EW右轉紅燈
{
	  EWright_Green=0;
	  EWturn_Yellow=0;
	  EWright_Red=1;
}

void EW_GOturnleft()           //EW左轉綠燈
{
	  EWleft_Green=1;
	  EWturn_Yellow=0;
	  EWleft_Red=0;
}

void EW_STOPturnleft()         //EW左轉紅燈
{
	  EWleft_Green=0;
	  EWturn_Yellow=0;
	  EWleft_Red=1;
}

4.? 仿真proteus8.6

? 本設計采用proteus8.6軟件(內附安裝包)實現(xiàn)仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

東西通行:

南北通行:

5.? 設計報告

設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。

6.? 資料清單

設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網(wǎng)盤下載鏈接:【M03】百度網(wǎng)盤下載鏈接

更多單片機仿真設計合集:單片機仿真設計合集

  • 單片機仿真設計合集資料獲取.pdf
    下載

相關推薦