摘要:詳細介紹了基于AT89C2051單片機的交通信號倒計時器的基本工作原理,并對其在硬件設計、軟件設計和實現方法中的注意事項進行了詳細的闡述。
關鍵詞:AT89C2051;交通信號;倒計時
中圖法分類號:TP271 文獻標識碼:A 文章編號:1009-3044(2008)22-780-02
Application of Single-chip Computer in Traffic Lights Countdown Timer
ZHANG Yong
(Electrical Engineering Department, Songshan Polytechnic College, Shaoguan 512126, China)
Abstract: This paper introduces the basic working theory of the traffic lights countdown timer based on AT89C2051 Single-chip Computer. Meanwhile, there is detailed illustration of precautions for its hardware, software and realization.
Key words: AT89C2051; traffic lights; count down
1 引言
自改革開放時至今天,我國的國民經濟建設取得了巨大的發展。隨著人民群眾物質文化生活水平日益提高,城市機動車輛的保持量也同樣在不斷增加,但是城市道路交通建設的步伐遠遠跟不上機動車輛增加的步伐,當城市交通路口亮紅燈時,大量停留在路口的機動車輛在空燃燒能源排放的有害廢氣,既浪費社會能源也給人民群眾的生活環境帶來一系列不良的影響。利用現代科學技術發展的成熟技術,在現有城市交通道路的條件下,通過對城市道路路口顯示交通控制信號的倒計時,能減少車輛燃燒能源排出廢氣,對改善城市生活環境無疑將具有非常重要的現實意義。
2 交通信號倒計時器的工作原理
本交通信號倒計時器通過長期對城市道路路口交通信號控制機狀況的深入調查和研究,把輸入到倒計時器的交通控制信號在細分相位的基礎上,把同一交通信號相位中不同的燈色狀態作為整個交通控制方案過程的一步,以每一步的時間長度作為顯示倒計時的目標。
本交通信號倒計時器支持左轉綠燈、直行綠燈、黃燈和紅燈四種交通控制信號的燈色狀態信息的輸入,除輸入的燈色狀態信息閃爍外,其它任何輸入的燈色狀態信息的改變都視為整個控制方案過程的一步。如輸入的燈色狀態信息單獨為黃燈狀態后,接著輸入的燈色狀態信息又為單獨紅燈狀態,當單獨紅燈狀態結束后,則被認為是一個完整的交通信號控制方案運行結束。倒計時器把完整的交通信號控制方案的每一步伐的燈色狀態信息和時間長度都記錄下來,在交通信號控制方案再次運行時則倒計時顯示上一次運行時對應的控制方案的步伐時間長度。
需要注意的是為適應交通路口車流和人流在不同的時間段的變化,交通信號控制機在不同的時間段有可能運行不同的交通控制方案,因此輸入到倒計時器的交通控制信號方案也就會發生改變。交通控制信號方案發生改變時,倒計時如果再顯示上一次運行時對應的控制方案的步伐時間長度就有可能不準確甚至完全錯誤。因此倒計時在顯示控制方案步伐時間時,要根據當前輸入的燈色狀態與要顯示的上次燈色狀態比較,是一致才倒計時顯示。
3 硬件設計及實現
考慮到交通信號倒計時器主要在室外安裝使用,運行環境比較惡劣,其運行控制的穩定性和可靠性對路口行駛車輛的交通安全具有重要的影響。本交通信號倒計時器在硬件設計上高度采用抗干擾能力強的工業級集成芯片,具有很高的穩定性和可靠性。如上圖1所示為基于89C2051單片機的交通信號倒計時器硬件原理圖,最大顯示時間為99秒鐘。
■
圖1 交通信號倒計時器硬件原理圖
主控芯片CPU選擇ATMEL公司的89C2051單片機,該單片機可在12MHZ 頻率下穩定的工作,有足夠的運行速度來讀取外部交通控制信號輸入的燈色狀態,同時其內部具有2K字節的程序存儲空間,完全能夠滿足運行倒計時器程序所需的存儲空間需要。
4 軟件設計及實現
本交通信號倒計時器判斷一個完整的輸入交通信號控制方案是當輸入的燈色狀態單獨為黃燈狀態后,接著輸入的燈色狀態又為單獨紅燈狀態,并在紅燈狀態輸入結束后則認為是一個交通信號控制方案的結束。系統在上電正常運行后,首先根據輸入的交通控制信號燈色狀態的變化來判斷步伐的變化和控制方案的結束,一旦控制方案結束后則把本控制方案的各個步伐的運行時間長度和燈色狀態存入到顯示數據緩沖區等待下次再運行相同的控制方案時顯示各個步伐的運行時間長度的倒計時。處理輸入燈色狀態信息的函數如下:
void Process_Color_Input( )//處理燈色輸入
{
uchar i;
if(bRead_Input_Flag)//讀輸入標志有效
{
bRead_Input_Flag = FALSE;
ucInput_Color = P3 0x3c;//當前燈色的輸入值
if((ucInput_Color != ucOld_Color)(ucInput_Color != 0x00)) //燈色變化但不閃
{
if((ucInput_Color == 0x20)(ucOld_Color != 0x10))//當前獨立紅色原獨立黃色
ucStep_Change_Flag = FALSE;//燈色改變標志
else ucStep_Change_Flag = TRUE;//燈色改變標志
if(ucStep_Change_Flag)
{
Prg_Step_Color[ucPrg_Step] = ucOld_Color;
Prg_Step_Long[ucPrg_Step] = ucPrg_Long;//步伐時間長度
ucPrg_Long = 0x00;//編程步伐時間長度
uiPrg_Time1_Num = 1;//定時器其啟動計數
if(ucOld_Color == 0x20)//原燈色值為獨立紅色
{
For(i= 0x00,i++;i<0x08)//控制方案運行結束
{
Cur_Step_Color[i] = Prg_Step_Color[i];
Cur_Step_Long[i] = Prg_Step_Long[i];
Prg_Step_Color[i] = 0x00;
Prg_Step_Long[i] = 0x00;
}
ucPrg_Step = 0x00;//編程步伐
bStart_Step_Flag = TRUE;//步伐開始標志
}
else ucPrg_Step++;//編程步伐
ucOld_Color = ucInput_Color;//原燈色的值
}
}
}
}
交通信號倒計時器在顯示控制方案步伐時間長度的倒計時時,由于交通信號控制機在不同的時間段里可能運行不同的控制方案,為防止倒計時器顯示倒計時時當前即將顯示的倒計時步伐燈色狀態與輸入的步伐燈色狀態不一致導致縣顯示錯誤的信息,倒計時器在顯示倒計時時一定要判斷當前即將顯示的倒計時步伐燈色狀態與輸入的步伐燈色狀態比較,是一致才倒計時顯示,否則關閉顯示。控制倒計時顯示的函數如下:
void Ctr_Machine_Status()//控制倒計時顯示
{
if(ucStep_Change_Flag)//燈色改變標志
{
uiCur_Time1_Num = 1; //啟動定時器計數
if(bStart_Step_Flag)//步伐開始標志
{
ucCur_Step = 0x00;//執行步伐
bStart_Step_Flag = FALSE;//步伐開始標志
}
else ucCur_Step++;//執行步伐
ucDis_Status = Cur_Step_Color[ucCur_Step];
ucStep_Long = Cur_Step_Long[ucCur_Step];//步伐時間長度
ucStep_Time = ucStep_Long;//實際執行步伐時間
ucStep_Change_Flag = FALSE;//燈色改變標志
bDis_Char_Flag = FALSE;//顯示字符標志
(上接第781頁)
if(ucStep_Long)
{
if(ucDis_Status == ucOld_Color)//要顯示的燈色與輸入燈色一致)
{
bDis_Char_Flag = TRUE; //顯示字符標志
Dis_Red_Number();//顯示紅色數字
}
}
}
}
5 結束語
交通信號倒計時器是城市智能交通重要組成部分。通過在道路路口顯示交通控制信號的倒計時,對節約社會能源,提高城市居民生活環境,特別時在能源緊張、石油價格飛漲的今天,無疑對國民具有很重要的經濟效益和社會意義。
參考文獻:
[1] 胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,2000:490-493.
[2] 劉文濤,趙文博.單片機語言C51程序設計技術[M].北京:人民郵電出版社,2005:311-322.
[3] 徐愛鈞,彭秀華.單片機高級C51應用程序設計[M].北京:電子工業出版社,1999:430-449.