• 方案介紹
    • 1.? 簡(jiǎn)介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計(jì)報(bào)告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的智能交通燈設(shè)計(jì)(二)

04/17 08:33
669
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf

共1個(gè)文件

資料清單:C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻

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

程序編譯:Keil5 C51

編程語(yǔ)言:C語(yǔ)言

設(shè)計(jì)編號(hào):【M02】

1.? 簡(jiǎn)介

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

2.? 主要功能

a.當(dāng)主干道通行亮綠燈時(shí),支干道亮紅燈,而支干道亮綠燈時(shí),主干道亮紅燈。

b.主支干道交替通行,主干道每次放行30s、支干道25s,設(shè)計(jì)30s和25s計(jì)時(shí)顯示電路。

c.在過(guò)程中間,要亮3s的黃燈作為過(guò)渡,設(shè)置3s計(jì)時(shí)顯示電路。

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

3.? 源程序(Keil5)

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

#include "reg52.h"			 //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef unsigned int u16;	  //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
 //數(shù)碼管控制端口
sbit LSA=P2^2;       
sbit LSB=P2^1;
sbit LSC=P2^3;
sbit LSD=P2^4;
sbit k2=P3^2;//按鍵控制
sbit k3=P3^3;
sbit led1=P1^0;//南北 綠 
sbit led2=P1^1;//南北 黃 
sbit led3=P1^2; //南北 紅
sbit led4=P1^3;//東西  綠 
sbit led5=P1^4;//東西 黃
sbit led6=P1^5; //東西 紅
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
					0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
u8 sum2,sum1=0;
u16 js;//計(jì)數(shù)變量
u8 aa,bb;     //中間變量
u8 table=0;   //切換標(biāo)志位
u8 nbshi,dxshi,moshi; //時(shí)間中間標(biāo)記
u8 nbshi1,dxshi1,moshi1; //時(shí)間中間標(biāo)記1
u8 huangshi=3;//黃燈時(shí)間
u8 nbzlshi=25;    //南北各燈時(shí)間 直行    綠燈				
u8 nbzhshi=30;  //南北各燈時(shí)間 直行   紅燈					
u8 dxzlshi=25;   //東西各燈時(shí)間	直行  綠燈			
u8 dxzhshi=30;  //東西各燈時(shí)間	直行  紅燈
u8 dxhshi,nbhshi;  //南北 東西紅燈時(shí)間	中間變量

u8 INT1_1,INT1_0;	//中斷標(biāo)志								
/*******************************************************************************
* 函 數(shù) 名         : delay
* 函數(shù)功能		   : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
*******************************************************************************/
void delay(u16 i)
{
	while(i--);	
}



/*******************************************************************************
* 函 數(shù) 名         : Timer0Init
* 函數(shù)功能		   : 定時(shí)器0初始化
* 輸    入         : 無(wú)
* 輸    出         : 無(wú)
*******************************************************************************/
void Timer0Init()
{
	TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1,僅用TR0打開(kāi)啟動(dòng)。

	TH0=0XFC;	//給定時(shí)器賦初值,定時(shí)1ms
	TL0=0X18;	
	ET0=1;//打開(kāi)定時(shí)器0中斷允許
	EA=1;//打開(kāi)總中斷
	TR0=1;//打開(kāi)定時(shí)器			
}

void hlhdeng(u8 deng)
{
  switch(deng)
			{
				case 0x00:         //東西直行 綠燈
					if(sum1==0)
          led1=1; // 綠     // 南北 燈         
					led2=1; //黃
					led3=0; //紅	
	        if(sum1==0)
          led4=0; // 綠       //東西 燈   
					led5=1; // 黃 
					led6=1; //紅
	    
	      
						
				break;
				case 0x01:            //東西直行 黃燈
						if(sum1==0)
					 led1=1; // 綠     // 南北 燈         
					led2=1; //黃
					led3=0; //紅	
	        if(sum1==0)
          led4=1; // 綠       //東西 燈   
					led5=0; // 黃 
					led6=1; //紅
	    
	      
				break;
				case 0x02:            // 南北 直行 綠
					if(sum1==0)
					led1=0; // 綠     // 南北 燈         
					led2=1; //黃
					led3=1; //紅	
	        if(sum1==0)
          led4=1; // 綠       //東西 燈   
					led5=1; // 黃 
					led6=0; //紅
				break;
					case 0x03:            // 南北 直行 黃
						if(sum1==0)
					led1=1; // 綠     // 南北 燈         
					led2=0; //黃
					led3=1; //紅	
	         if(sum1==0)
          led4=1; // 綠       //東西 燈   
					led5=1; // 黃 
					led6=0; //紅
				break;
			
			}
}
/*******************************************************************************
* 函 數(shù) 名         : DigDisplay
* 函數(shù)功能		   : 數(shù)碼管動(dòng)態(tài)掃描函數(shù),循環(huán)掃描8個(gè)數(shù)碼管顯示
*******************************************************************************/

void smg(u8 nbshi,u8 dxshi)
{
	 LSA=1; LSB=1;LSC=0; LSD=1;  
	       
		aa=nbshi/10;
		P0=smgduan[aa];
		delay(50);
	 LSA=1; LSB=1;LSC=1; LSD=0; 
	            
		bb=nbshi%10;
		P0=smgduan[bb];
		delay(50);
		
	   LSA=0; LSB=1;LSC=1; LSD=1; 
		aa=dxshi/10;
		P0=smgduan[aa];
		delay(50);
	
	    LSA=1; LSB=0;LSC=1; LSD=1;               
		bb=dxshi%10;
		P0=smgduan[bb];
		delay(50);

}

4.? 仿真proteus8.6

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

初始界面:

東西通行:

南北通行:

5.? 設(shè)計(jì)報(bào)告

設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。

6.? 資料清單

設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻等。

7.? 資料獲取鏈接

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

更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集

  • 單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf
    下載

相關(guān)推薦