崔兆春
摘 要隨著經(jīng)濟的發(fā)展我國汽車保有量不斷增加,道路交通問題日益凸顯。本文主要研究以AT89C51單片機作為控制系統(tǒng),實現(xiàn)對十字路口交通信號燈的控制。以東西向為例,綠燈亮80秒、黃燈亮3秒、紅燈亮60秒、綠燈亮80秒依次循環(huán)實現(xiàn)對于東西向車流的控制。采用AT89C51單片機控制交通信號燈具有簡單可靠等優(yōu)點。
【關(guān)鍵詞】單片機 設(shè)計
1 AT89C51單片機概述
1.1 AT89C51單片機簡介
AT89C51單片機是ATMEL公司出品的一款與MCS51兼容的一款單片機,屬于第三代單片機。AT89C51提供4K的Flash存儲器,128字節(jié)RAM,4個IO口,2個16位定時器,一個中斷系統(tǒng),一個串行通信口,片內(nèi)震蕩器和時鐘電路。AT89C51支持兩種軟件可選的節(jié)電工作模式。空閑模式停止CPU的工作但允許其他功能部件如RAM,中斷系統(tǒng)等繼續(xù)工作,掉電模式保持RAM中的內(nèi)容不丟失其他所有部件都將停止工作一直到下一個硬件復(fù)位。
1.2 74HC138譯碼器簡介
74HC138譯碼器是一個高速CMOS器件,具有三個輸入端A B C 及其3個特有的使能輸入端兩個低有效(E1和E2)一個高有效(E3)。只有E1,E2置低電平,E3置高電平時譯碼器才能正常譯碼。否則譯碼器輸出將全為高電平。74HC138譯碼器按照輸入端三位二進制輸入碼的條件從8個輸出端譯出一個低電平輸出。
2 方案論證
利用單片機設(shè)計一個十字路口交通燈控制系統(tǒng)。利用用單片機控制LED燈模擬指示。東西向通行時間為8秒,南北向通行時間為60秒,緩沖時間為3秒。以東西向為例,東西向綠燈亮80秒,黃燈亮3秒,紅燈亮60秒,綠燈再亮80秒依次循環(huán)。
3 設(shè)計原理
3.1 硬件原理分析
本系統(tǒng)主要由單片機控制系統(tǒng)、譯碼模塊、數(shù)碼管顯示模塊、交通燈模塊等組成。
單片機控制控制模塊:選用AT89C51單片機,外加震蕩電路為單片機提供脈沖信號。將51單片機的P3.0,P3.1,P3.2用作普通IO口使用,利用這三個口控制交通信號燈模塊。P3.0口輸出為高電平綠燈亮,P3.1口輸出為高電平黃燈亮,P3.2口輸出為高電平紅燈亮。利用P1.0,P1.1,P1.2控制譯碼模塊(3-8譯碼器)。利用P2口與譯碼模塊控制數(shù)碼管顯示,P2口輸出值即為譯碼器選中的當(dāng)前數(shù)碼管所顯示的值。
譯碼模塊:由一個3-8譯碼器構(gòu)成。輸出端只利用Y0,Y1,Y2,Y3四個口。輸入端由單片機的P1.0,P1.1,P1.2控制。如:當(dāng)前P1.0輸出為高,P1.1輸出為高,P1.2輸出為低,則Y3輸出為低選中最右端數(shù)碼管顯示。P1口不斷輸出不同值,依次輪流選中四個數(shù)碼管進行顯示,在整個系統(tǒng)運行過程中都要不斷地進行選中即進行掃描。
數(shù)碼管顯示模塊:由單片機P2口與譯碼器共同控制。由譯碼器選中當(dāng)前的數(shù)碼管,當(dāng)前數(shù)碼管顯示P2口傳過來的值。
交通燈模塊:由紅黃綠三個LED燈組成。由單片機的P3.0,P3.1,P3.2控制。P3.0口輸出為高電平綠燈亮,P3.1口輸出為高電平黃燈亮,P3.2口輸出為高電平紅燈亮。
3.2 軟件原理分析
單片機的控制程序主要由條件標(biāo)志位g的判斷模塊、綠燈顯示模塊、黃燈顯示模塊、紅燈顯示模塊構(gòu)成。
條件標(biāo)志位g判斷模塊:設(shè)條件標(biāo)志位g,若g=0執(zhí)行綠燈顯示程序,若g=1執(zhí)行黃燈顯示程序,若g=2執(zhí)行紅燈顯示程序。
綠燈顯示模塊:首先進行一段時間的延時,然后對f進行判斷(f初始值為80)若f>0則直接輸出f值,采用不斷取余的方式顯示f的十位個位。若f<=0則將f重新賦值并修改條件標(biāo)志位g再輸出顯示一次f后返回轉(zhuǎn)入黃燈顯示程序執(zhí)行。
黃燈顯示模塊:基本步驟與綠燈顯示模塊相同,只是顯示所賦f初始值(f初值為3)不同。
紅燈顯示模塊:基本步驟與綠燈顯示模塊相同,只是顯示所賦f初始值(f初值為60)不同。
3.3 相應(yīng)程序代碼
//控制程序以綠燈為例
if(g==0)
{
for(c=0;c<250;c++);//做一個0-250的循環(huán),不執(zhí)行其他操作,只為延時
for(c=0;c<250;c++);
if(++e>250) //做一個延時,時間到將顯示內(nèi)容加1
{
e=0; //清零,為下一次延時做準備
if(f<=0)
{
f=81;//循環(huán)結(jié)束后初始化
g=1;//標(biāo)志位置位
}
f--;
}
P2=0; //關(guān)一次顯示,以免顯示出鬼影
if(++d>1) d=0; //先將d加1,然后判斷是否大于1,大于1歸零
if(d==0) //如果d=0,顯示十位
{
P1=0x01;
P2=LED[(f%100)/10]; //將要顯示的f的十位提取出來查表后送顯示
}
else //如果d=1,顯示個位
{
P1=0x00;
P2=LED[f%10]; //將要顯示的f的個位提取出來查表后送顯示
}
if(f==0)
{
P0_0=0;
P0_1=1;
P0_2=0;
//點亮綠燈
}
}
4 結(jié)論
所設(shè)計的系統(tǒng)能夠完成十字路口交通信號燈控制。利用AT89C51單片機完成交通信號燈的控制簡單易行,便于修改價格低廉。對于經(jīng)濟城市交通問題日益突出的今天來說具有一定的實用價值。所設(shè)計的交通信號燈控制系統(tǒng)還有很多不足如不能通過按鍵等方式完成對信號設(shè)定時常的控制等,但也實現(xiàn)了利用單片機對一個十字路口交通信號燈的控制。
作者單位
合肥工業(yè)大學(xué) 安徽省合肥市 230601