1. 基於單片機的交通信號燈控制系統_基於單片機的交通信號燈控制系統設計畢業論文
HD2000交通信號集中控制系統是華路德公司開發研製的HD202、HD204、HD207系列交通信號控制器的遠程式控制制軟體,利用城域寬頻網,遠程監視和控制路口信號機的工作狀態和運行方式,使用戶足不出戶即可了解和控制路口交通狀況,實現區域內交通信號燈的聯動綠波帶協調控制,從而提高道路通行能力和管理部門緊急情況處置反基爛慎應能力,能極大地減輕交通管理部門的維護和調節工作量。
性能與特點
高級語言編制,界面友好,操作方便。
聯網方式靈活,可以通過乙太網、無線通訊、電話撥號、GPRS等實現中心與路口的通訊聯系。
覆蓋路口控制機類型廣泛,可以選擇我公司出廠的HD202系列、HD204系列、HD207系列交通信號控制器,給用戶最大的選擇餘地。
建設成本低,本系統涵蓋了我公司所有檔次的信號機,在已經安裝了電子警察的道路交叉口,可以借用電子警察網路資源,避免了重復投資。
控制路口點數多,可以同時控制多達180個以上路口的交通信號控制機,如果建立分級通訊機制,則控制點數不受限制。
系統提供軟體介面與其他系統(如GPS衛星定位系統、城市交通誘導系統、公安視頻監控系統、電子警察系統等)實現交警數據的共享,為建設和諧交通提供一手交通流量數據。
採用伺服器/客戶端模式,後台系統由伺服器和若干工作站組成,監控路口真正做到足不出戶,有條件的客戶甚至能通過Internet實現對路口信號機搏敬的遠程監控。
功能介紹
遠程監視功能,通過控制中心能實時監視路口信號機的運行狀況,包括當前運行方式、運行總周期、信號燈輸出狀態等用戶首先需要了解的路口信息。用戶可以通過兩種畫面監視運行狀態:監視主畫面和路口模擬圖畫面。監視主畫面用於全面了解路口信號機的運行狀態,而路口模擬圖畫面能使用戶直觀了解實際路口信號燈的紅綠顯示情況。
單路口遠程式控制制功能,通過遠程監視畫面(包括監視主畫面和路口示意圖畫面)用戶可以實現對路口信號機的遠程手、自動切換和運行方式變換,配合視頻監控能有效、及時地疏導交通和臨時交通處置。
遠程設置功能,通過不同類型信號機的設置畫面,用戶能遠程設置和修改路口信號機的運行參數,如相位方案、時段方案、配時方案、運行常量等。
遠程流量收集,若路口設置有車輛檢測器,系統能自動、定時地收集和保存不同時段路口車道流量狀態。
綠波帶控制功能,系統能根據路口之間的距離、車速等信息自動協調關聯路口的信號歷稿燈輸出周期,實現多路口之間的綠波帶協調控制功能,並能根據路段的車流狀態定時切換協調方向。
警衛路線控制功能,系統能根據預先設置的警衛路線,准確命令警衛路線上的信號機在特定時間段開啟指定信號燈綠燈,並在持續一段時間後自動後恢復。
遠程登錄與控制功能,系統採用伺服器/客戶端模式,所有信號機數據和用戶需求信息均通過伺服器實現轉發、存儲和提取;用戶通過客戶端實現對伺服器的登錄,並通過伺服器實現對路口的監視與控制。詳細資料你可以看參考!
2. 如何用單片機製作交通燈
LED模擬交通燈
本例中的12隻LED分成東西向和南北向兩組,各組指示燈均有相向的2隻紅色、2隻黃色與2隻綠色的LED,本例中對應的LED單獨進行定義,程序運行時模擬了十字路口交通信號燈得切換過程與顯示效果。
本例電路如下圖:
(呵呵 圖片插入不進來)
程序設計調試與實訓:
源程序中用6行sbit對東西和南北向的紅、黃、綠指示燈分別進行定義,這樣便於對它們進行單獨控制。
本例交通指示燈切換時間設置的較短,這樣可在調試的時候較快觀察到運行效果,可在調試運行本例後修改代碼,使指示燈切換過程更接近於實際的交通指示燈切換過程。
源程序代碼:
//----------------------------------------------------------------
// 名稱:LED模擬交通燈
//----------------------------------------------------------------
// 說明:東西向綠燈亮若干秒後,黃燈閃爍5次後亮紅燈,紅燈亮後,
// 南北向由紅燈變為綠燈,若干秒後,南北向黃燈閃爍,
// 閃爍5次後亮紅燈,東西向綠燈亮,如此重復。
//
//-----------------------------------------------------------------
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P0^0; //東西向指示燈
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P0^3; //南北向指示燈
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;
uchar Flash_Count = 0;
Operation_Type = 1; //閃爍次數及操作類型變數
//--------------------------------------------------------
//延時
//--------------------------------------------------------
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
//---------------------------------------------------------
//交通燈交換子程序
//---------------------------------------------------------
void Traffic_lignt()
{
switch(Operation_Type)
{
case 1: //東西向綠燈與南北向紅燈亮
RED_A=1;YELLOW_A=1;GREEN_A=0;
RED_B=0;YELLOW_B=1;GREEN_B=1;
DelayMS(2000); // 延時
Operation_Type = 2; //下一操作
break;
case 2: //東西向黃燈開始閃爍,綠燈關閉
DelayMS(300); //延時
YELLOW_A=!YELLOW_A; //閃爍5次
if(++Flash_Count !=10)
return;
Flash_Count=0;
Operation_Type = 3; //下一操作
break;
case 3: //東西向紅燈與南北向綠燈亮
RED_A=0;YELLOW_A=1;GREEN_A=1;
RED_B=1;YELLOW_B=1;GREEN_B=0;
DelayMS(2000); //延時
Operation_Type = 4; //下一操作
break;
case 4: //南北向黃燈開始閃爍
DelayMS(300); //延時
YELLOW_B=!YELLOW_B;
if(++Flash_Count !=10)
return; //閃爍5次
Flash_Count=0;
Operation_Type = 1; //回到第一種操作
break;
}
}
//----------------------------------------------------------
//主程序
//----------------------------------------------------------
void main()
{
while(1)
{
Traffic_lignt();
}
}
3. 單片機AT89C51 交通信號燈
用匯編,編寫的程序如下,經過了模擬調試,在12MHz的條件下,通過.
ORG 0000H
MOV P0, #01111011B ;P0.7=P0.2=0, 東西 南北 都是紅燈.
LCALL DL3S
LOOP:
MOV P0, #11011011B ;P0.5=P0.2=0, 南北綠 東西紅.
LCALL DL15S
MOV P0, #10111011B ;P0.6=P0.2=0, 南北黃 東西紅.
LCALL DL3S
MOV P0, #01111110B ;P0.7=P0.0=0, 南北紅 東西綠.
LCALL DL15S
MOV P0, #01111101B ;P0.7=P0.1=0, 南北紅 東西黃.
LCALL DL3S
SJMP LOOP
DL15S:
MOV R2, #5
DL2:
CALL DL3S
DJNZ R2, DL2
RET
DL3S: ;延時3s,實測3.03s
MOV R5, #23
DL3:
MOV R6, #0
DL4:
MOV R7, #0
DL5:
DJNZ R7, DL5
DJNZ R6, DL4
DJNZ R5, DL3
RET
END
4. 交通信號燈控製程序設計
簡單I/O實驗(交通燈控制)
一.實驗要求
以74LS273作為輸出口,控制4個雙色LED燈(可發紅,綠,黃光),模擬交通燈管理。
二.實驗目的
1.學習在單片機系統中擴展簡單I/O介面的方法。
2.學習數據輸出程序的設計方法。
3.學習模擬交通燈控制的方法。
4.學習雙色燈的使用。
三.實驗電路及連線
四.實驗說明
1.因為本實驗是交通燈控制實驗,所以要先了解實際交通燈的變化規律。假設一個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈。然後轉狀態1南北綠燈通車,東西紅燈。過一段時間轉狀態2,南北綠燈閃幾次轉亮黃燈,延時幾秒,東西仍然紅燈。再轉狀態3,東西綠燈通車,南北紅燈。過一段時間轉狀態4,東西綠燈閃幾次轉亮黃燈,延時幾秒,南北仍然紅燈。最後循環至狀態1。
2.雙色LED是由一個紅色LED管芯和一個綠色LED管芯封裝在一起,公用負端。當紅色正端加高電平,綠色正端加低電平時,紅燈亮;紅色正端加低電平,綠色正端加高電平時,綠燈亮;兩端都加高電平時,黃燈亮。
五.實驗程序框圖
程序框圖:
源代碼:
ORG 0000H
LJMP START
ORG 0040H
START:
MOV SP,#60H
LCALL STATUS0 ;初始狀態(都是紅燈)
CIRCLE: LCALL STATUS1 ;南北綠燈,東西紅燈
LCALL STATUS2 ;南北綠燈閃轉黃燈,東西紅燈
LCALL STATUS3 ;南北紅燈,東西綠燈
LCALL STATUS4 ;南北紅燈,東西綠燈閃轉黃燈
LJMP CIRCLE
STATUS0: ;南北紅燈,東西紅燈
MOV DPTR,#8300H
MOV A,#0FH
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS1: ;南北綠燈,東西紅燈
MOV DPTR,#08300H
MOV A,#5AH ;南北綠燈,東西紅燈
MOVX @DPTR,A
MOV R2,#50 ;延時5秒
LCALL DELAY
RET
STATUS2: ;南北綠燈閃轉黃燈,東西紅燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH: MOV A,#5FH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#5AH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH
MOV A,#0AH ;南北黃燈,東西紅燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
RET
STATUS3: ;南北紅燈,東西綠燈
MOV DPTR,#8300H
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#50 ;延時5秒
LCALL DELAY
RET
STATUS4: ;南北紅燈,東西綠燈閃轉黃燈
MOV DPTR,#8300H
MOV R3,#03H ;綠燈閃3次
FLASH1: MOV A,#0AFH
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
MOV A,#0A5H
MOVX @DPTR,A
MOV R2,#03H
LCALL DELAY
DJNZ R3,FLASH1
MOV A,#05H ;南北紅燈,東西黃燈
MOVX @DPTR,A
MOV R2,#10 ;延時1秒
LCALL DELAY
NOP
RET
DELAY: ;延時子程序
PUSH 2
PUSH 1
PUSH 0
DELAY1: MOV 1,#00H
DELAY2: MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2 ;延時 100 mS
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
RET
END
5. 基於51單片機控制交通燈的電路圖與C語言程序
思路:
紅燈停,綠燈行,黃燈閃爍提示行人紅綠燈即將切換。四個方向各有一個紅、黃、綠顯示和兩個數碼管。
東西道為人行道(20秒),南北道為車行道(60秒),黃燈延時最後三秒時,閃爍並切換。
三、硬體電路設計
此電中路設計採用AT89C51單片機,74LS47(數碼管驅動)74LS373(數碼管驅動輸出鎖存),8個數碼管顯示其延時值,四個紅、黃、綠指示燈。硬體設計關鍵在於,延時顯示時,要考慮到當個位數字顯示時,要確保十位數字顯示輸出的不變。因此,可加輸出鎖存器。在延時最後三秒時,要讓黃燈進行閃爍,並同時顯示數字(這一步在軟體設計上很關鍵)。
四、軟體程序(C語言)
以下是整個設計的軟體程序,直接可以編譯成*。Hex代碼。通過以上電路,下載到單片機,可直接運行。
//*****************************//
//程序名:十字路口交通燈控制
//編寫人:黃庭劍
//初寫時間:2009年1月2日
//程序功能:南北為車行道,延時60秒;東西方向為人行道,延時20秒,且在最後3秒黃燈顯示2秒鍾再實現切換.
//CPU說明:AT89C51型單片機;24MHZ晶體振盪器
//完成時間:2009年1月6日
//*****************************//
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
sfrp0=0x80;
sfrp1=0x90;
sfrp2=0xA0;
sfrp3=0xb0;//這部分內容其實在「#include<reg51.h>」里已經有,但裡面定義的必須區分大小寫,在這里,因為我程序採用的是小寫,reg51.h里對各個埠與寄存器的定義都是大寫,所以在編譯連接時,會報錯,所以,在本設計程序里,我只用到了埠,在這里也就只定義了四個,而沒有去改reg51.h裡面的內容。其實兩者是一樣的。
sbitsw=p0^0;
sbitOE=P0^6;
sbitLE=P0^7;//74LS373鎖存器控制端定義
chardisplay[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};//p1口的數碼管時間顯示調用,利用74L74BCD碼,8位驅動輸出;
//函數聲明begin
voiddelay1(intcount);
voiddelay_long(intnumber1,intnumber2);
voidpeople_car_drive();
//函數聲明end
//***********************//延時子程序
voiddelay1(intcount)
{inti;
for(i=count;i>0;i--)
{;}
}
voiddelay_long(intnumber1,intnumber2)
{
inta,b;
for(a=number1;a>0;a--)
{
for(b=number2;b>0;b--)
{_nop_();}
}
}
//**********************//延時子程序
voidpeople_car_drive()
{
intp_1=2,i,j=9,p_2=6;//****************//行人通行時,延時20秒
p2=0x09;//南北紅燈亮
p3=0x24;//東西綠燈亮
while(p_1-->0)
{LE=1;
OE=0;
if(p_1==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_1];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_1==0&&j==3)break;//減到3時退出循環,讓其黃燈閃爍顯示
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
//*******************************************************************************//
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
//*****************以下是車輛通行時延時60秒//
p2=0x24;//南北綠燈亮
p3=0x09;//東西紅燈亮
while(p_2-->0)
{LE=1;
OE=0;
if(p_2==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_2];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_2==0&&j==3)break;//減到2時退出循環
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);//南北黃燈閃爍三秒完畢
}
voidmain()//主函數入口處
{
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00;//初始化各埠
{while(1)
{
if(sw==0)
{people_car_drive();}
else
{
p2=0x00;
p3=0x00;//關閉所有交通燈
}
}
}
}
詳情訪問:http://hi..com/hjiannew/
6. 單片機中十字路口交通信號燈的過程,內容,原理
基於單片機的十字路口交通燈設計
摘要:知道了交通燈的重要性,而對於交通燈最重要的是單片機。跟隨單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統中,單片機通常作為一個核心部件來使用,僅憑對單片機簡單了解是不夠的,應該根據具體硬體結構並且軟硬體結合,實現自己想要達到的目的。單片機自問世以來,性能不斷提高和完善,所以實用許多場合。單片機具有集成度高、功能多、速度快、體積小、功耗低、使用方便、性能可靠、價格便宜,其易於產品化、抗干擾能力強、可以在惡劣的情況下堅持工作。特別是它強大的面向控制能力,使它在工業控制領域,智能儀表、外設控制、家用電器、機器人、軍事裝置等方面得到了廣泛的應用。 考慮到單片機具有物美價廉、靈活方便、還有各種優秀的特點,所以我們從中選擇用MCS-51系列單片機AT89C51單片機來實現十字路口交通信號燈的控制。單片機系統的實體和裝置,通常由運算器、控制器、存儲器、輸入介面電路和輸入設備、輸出介面電路和輸出設備等組成。單片機實質上是一個硬體的晶元,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展介面電路、外部設備、被控對象等硬體和軟體,才能構成一個單片機應用系統。該交通燈擬系統的硬體部分主要由鍵盤、顯示和運算部分組成,再根據實際車流量通過8051晶元的P3口設置紅、綠燈燃亮時間的功能;紅綠燈循環點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過P1口輸出,顯示時間通過P0口輸出至雙位數碼管)。本系統設計周期短、可靠性高、實用性強、操作簡單、維護方便、擴展功能強。
關鍵詞:單片機、MCS-51系列單片機AT89C51、交通燈