單片機交通燈控制器方案設(shè)計書_第1頁
單片機交通燈控制器方案設(shè)計書_第2頁
單片機交通燈控制器方案設(shè)計書_第3頁
單片機交通燈控制器方案設(shè)計書_第4頁
單片機交通燈控制器方案設(shè)計書_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

重慶科技學院

課程設(shè)計報告

院(系):電氣與信息工程學院專業(yè)班級 :電自專09級2班

學生姓名: 賈瑞楠 學 號: 2009630943

設(shè)計地點(單位) ___ I506_ _______

設(shè)計題目:________《單片機交通燈控制器設(shè)計》

完成日期:2011年9月12日

指導教師評語:

__________________________________________________________________________

__________________________________________________________________________

________________________________________________________________

成績(五級記分制):______ __________

指導教師(簽字):________________

摘要

隨著生活水平的提高,汽車越來越普及。因此,紅綠燈安裝在各個道口

上,也漸漸成為了疏導交通車輛最常見和最有效的手段。信號燈的出現(xiàn),使交

通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明

顯效果。本系統(tǒng)采用 80C51單片機為中心器件來設(shè)計交通燈控制器,實現(xiàn)了實

時顯示當前通行剩余時間;按東西道紅燈和南北道綠燈亮 22秒后東西道、南北

道黃燈閃爍3秒,再東西道綠燈和南北道紅燈亮 27秒,之后黃燈閃爍 3秒的規(guī)

律控制東西和南北方向的交通燈;能手動設(shè)置通行方向 3種功能。4位數(shù)碼管

顯示剩余通行時間,2位顯示東西方向通行剩余時間, 2位顯示南北方向通行剩

余時間。本系統(tǒng)實用性強、操作簡單、擴展功能強。

關(guān)鍵詞:單片機 交通燈 動態(tài)掃描 自動控制 手動設(shè)置

交通燈控制器的功能規(guī)劃

本次設(shè)計的交通燈控制器有 2種工作模式,分別是正常狀態(tài)下的自動控

制模式和緊急情況下的手動控制模式。

自動控制模式是在單片機的控制下實現(xiàn)東西道與南北道紅綠燈循環(huán)點

亮,倒計時剩3秒時黃燈閃爍警示,并且實時顯示當前通行剩余時間。

手動控制模式是在有按鍵按下的時候相應(yīng)的通道置于綠燈,另外一個通

道置于紅燈,直到有返回鍵按下之后自動返回到自動控制模式。

方案設(shè)計

2.1 硬件方案設(shè)計

本次課程設(shè)計所使用的單片機為STC89C51,STC89C51是一個低電壓,高性能CMOS8位單片機,片內(nèi)含4kbytes的可反復擦寫的Flash只讀程序存儲器和128bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用STCMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準MCS-51指令系統(tǒng),片內(nèi)置通用8

位中央處理器和 Flash存儲單元,內(nèi)置功能強大的微型計算機的 STC89C51提

供了高性價比的解決方案。

STC89C51主要功能特性:

1、兼容MCS—51指令系統(tǒng),4k可反復擦寫(>1000次)FlashROM

2、32個雙向I/O口,可編程UARL通道

3、兩個16位可編程定時/計數(shù)器,全靜態(tài)操作 0-24MHz

4、1個串行中斷,128x8bit內(nèi)部RAM

5、兩個外部中斷源,共 6個中斷源

6、可直接驅(qū)動LED,3級加密位

7、低功耗空閑和掉電模式

晶振采用11.0592MHZ提供定時脈沖。復位電路:上電復位,按鍵復位。

本次設(shè)計的交通燈控制器涉及的硬件主要有按鍵、數(shù)碼管、單片機、

LED、、串口,等其它附加設(shè)備,其連接關(guān)系圖如下 (由于硬件的原因,黃燈

的連接省略):

LED燈

P0.0-P0.7

P2.3-P2.6

數(shù)碼管

按鍵

P2.0

P2.1

P2.2

P1.0P1.1P1.2P1.3 SN

EW BACK

圖1交通燈硬件連接圖

2.2 軟件方案設(shè)計

程序?qū)崿F(xiàn)的基本功能

實時顯示當前通行剩余時間(4位數(shù)碼管顯示,2位顯示東西方向通行剩余時間,2位顯示南北方向通行剩余時間);

按以下規(guī)律控制東西和南北方向的交通燈

22S

3S

27S

3S

(EW)

(SN)

能手動設(shè)置通行方向。

程序結(jié)構(gòu)

本程序主要分為 2大塊,主程序和定時器 0的中斷程序。主程序包括了定

時器0和串口的初始化程序。定時器 0的中斷程序包括了 LED燈的控制,剩

余時間的計算以及按鍵的掃描,計時和刷新顯示程序,在定時器 0的中斷程序

中每50ms調(diào)用一次。

定時器0的中斷

程序

主程序 LED燈的控制

定時器 0 剩余時間的計

和串口的 算

初始化程 按鍵的掃描

序 計時

刷新顯示程序

圖2控制程序的結(jié)構(gòu)圖

硬件電路設(shè)計與分析

3.1CPU時鐘與復位電路

圖3單片機復位電路

單片機在正常工作時,

RST

應(yīng)保持低電平。當

RST

為高電平并且保持

10ms

以上時間就能實現(xiàn)復位。當手動復位按下

K1

時,電容瞬間充電,使

RST

為高電平,而放電要經(jīng)歷一定時間,這段時間大于

10ms,從而實現(xiàn)復位

操作。

3.2 數(shù)碼管顯示電路

數(shù)碼管主要是用于數(shù)字的顯示。數(shù)碼管有共陰和共陽的區(qū)分,單片機都

可以進行驅(qū)動,但是驅(qū)動的方法卻不同。四位數(shù)碼管循環(huán)電路是由 1K的電

阻、IN4148二極管和數(shù)碼管組成,電源

+5V

通過

560的電阻直接給數(shù)碼管的

7

個段位供電,

P0.0-P0.7對應(yīng)了接數(shù)碼管的

A,B,C,D,E,F,G

和小數(shù)點位,

P1.0,

P1.1,P1.2,P1.3接位選碼。

表18段LED段碼

gfGNDab

顯示字符 共陰極段碼 顯示字符 共陰極段碼

0 3FH 5 6DH

1 06H 6 7DH

2

5BH

7

07H

3

4FH

8

7FH

cdGNDedp

4

66H

9

6FH

圖48段LED外形及引腳

本設(shè)計采用四位共陰極的七段數(shù)碼管,顯示當前通行剩余時間。采用動態(tài)

顯示方式,P0口送段選碼,P1口的低四位送位選碼。當相應(yīng)的端口變成高電

平時,驅(qū)動相應(yīng)的 PNPS8550三極管會導通,+5V通過IN4148二極管和驅(qū)動

三極管給數(shù)碼管相應(yīng)的位供電,這時只要 P0口送出數(shù)字的顯示代碼,數(shù)碼管

就能正常顯示需要的數(shù)字。

圖5數(shù)碼管電路圖

3.3 按鍵接口電路

因為本設(shè)計能手動設(shè)置成東西道 (EW)通行或南北道(SN)通行以及返回自

動控制模式,故共需要 3個按鍵。主要是注意按鍵的去抖動處理,軟件法去抖

動的實質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按

鍵的狀態(tài)是否保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去

抖動的延時時間一般參考資料多描述為 20ms左右,在實際應(yīng)用中應(yīng)大于

20ms。否則,會導致按一次多處理,影響程序正常執(zhí)行。

圖6按鍵接口電

3.4LED指示電路

因為所采用的板子共有 8個六個共陽極的發(fā)光二極管,而 2個方向只需要

個發(fā)光二極管來分別代表紅綠燈。故選擇左邊三個從左到右依次為東西道

(EW)的紅、黃、綠燈,右邊三個從右到左依次為南北道 (SN)的綠、黃、紅

燈。中間2個廢棄不用。

圖7LED指示燈電路

軟件設(shè)計

4.1 控制程序的結(jié)構(gòu)及模塊劃分

本程序主要分為2塊,主程序和定時器 0的中斷程序。

4.2 主程序

主程序是主體部分。包括了定時器 0和串口的初始化程序。

開始

變量、數(shù)組、端口初始化

函數(shù)初始化

定時器T0、(串口)初始化

主循環(huán):while(1)的死循環(huán)

圖8主程序流程圖

對變量、數(shù)組、端口的初始化有段碼的賦值,數(shù)碼管顯示初值以及各標

志位的初始化。函數(shù)的初始化包括了定時器 T0的觸發(fā)方式,中斷的打開。定

時器的計數(shù)初值為 TH0=0xee,TL0=0x00,即定時器定時5ms產(chǎn)生一次中斷,200

次中斷即為1秒,方便計算。

4.3定時器0中斷服務(wù)程序

定時器0中斷服務(wù)程序主要是數(shù)碼管刷新顯示程序,用來倒計時顯示。進

入中斷后,程序又把初值設(shè)置成系統(tǒng)初始化時所設(shè)定的值,數(shù)碼管位選標志位

自加1,當標志位等于 4時,位選標志位又重新賦值 0。數(shù)碼管采用動態(tài)掃描

原理,采用 switch()語句編寫,在每次掃描以前要先關(guān)閉所有的位選,然后再

送由剩余時間計算函數(shù)所計算出的剩余時間值的對應(yīng)的段碼,最后再開由位選

標志位所對應(yīng)的位碼,如此便實現(xiàn)了數(shù)碼管的動態(tài)掃描。因為動態(tài)掃描程序是

寫在定時器內(nèi)的,而定時器定時為 5ms,即每5ms掃描一位數(shù)碼管,4位數(shù)碼

管,故20ms循環(huán)一次。

寫入定時器初值 (5ms)

調(diào)用剩余時間計算函數(shù)

數(shù)碼管輸出

中斷返回

圖9定時器0流程圖

4.4LED顯示程序

采用的為共陰極 LED,本設(shè)計將LED的顯示程序?qū)懺诹硕〞r器 0中斷程

序內(nèi),采用是的 switch()語句,用operation_type來作標志,程序未涉及到黃燈

的閃爍,只設(shè)計的先是南北道通 60s,后是東西道通 60s,所以在南北道和東

西道分別通的時候只需要 case語句就可以了,即

case1:{R_EW=0。G_EW=1。R_SN=1。G_SN=0。

if(++time_count==12000){

time_count=0。

operation_type=2。return。}

i=1。j=0。

}break。

case2:{R_EW=1。G_EW=0。R_SN=0。G_SN=1。

if(++time_count==12000){

time_count=0。

operation_type=1。return。}

i=0。j=1。

}break。

4.5數(shù)碼管顯示程序

在程序開頭定義了一個數(shù)組:

unsignedcharData_Buffer[4]={0,0,0,0}。

前2位分別用來存放南北方向剩余通行時間的十位和個位,后2位分別用來存放東西方向剩余通行時間的十位和個位。

為了便于計算,利用(count-5)的值來計算剩余通行時間,算出十位與個位

即可,可寫成

Data_Buffer[0]=(count-5)/10。

Data_Buffer[1]=(count-5)%10。

Data_Buffer[2]=(count-5)/10。

Data_Buffer[3]=(count-5)%10。

再由動態(tài)掃描程序輸出對應(yīng)的段碼,數(shù)碼管就能實時的顯示當前通行剩

余時間了。

LED顯示程序和數(shù)碼管顯示程序都應(yīng)該寫到 while(1)死循環(huán)內(nèi)。

4.6按鍵掃描及處理程序

手動模式可以設(shè)置為南北通和東西通以及返回到自動模式,所以共需 3

個按鍵。本設(shè)計將南北通 (SN)和東西通(EW)2個按鍵分別接 P2.0和P2.1,返

回按鍵(BACK)接到了P2.2口,采用掃描法來檢測鍵盤是否按下。

因為按鍵采用的是掃描法,故需要注意消抖的處理,在此用軟件法去抖

動即可。軟件法去抖動的實質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一

段時間,再檢測該按鍵的狀態(tài)是否保持著,如是則作為按鍵處理,否則,視為

抖動,不予理睬。去抖動的延時時間一般參考資料多描述為 20ms左右,在實

際應(yīng)用中應(yīng)大于 20ms。否則,會導致按一次多處理,影響程序正常執(zhí)行。

調(diào)試與測試

在程序的最初編寫中,由于對 time_count的值計算混亂,從而導致了

LED的點亮與數(shù)碼管倒計時不一致,經(jīng)過仔細的驗算,調(diào)整對 time_count的

算法,終于使LED的點亮、黃燈的閃爍能夠與倒計時一致了。

在定時器的運用上,由于開始沒有對 TR0和EA置1,雖然啟動了定時

器,但是 CPU并沒有響應(yīng)中斷,導致不能正常計數(shù),從而使程序不能正常運

行。在發(fā)現(xiàn)問題并對 TR0和EA進行置1后,問題便迎刃而解。

動態(tài)掃描過程因為是寫在定時器內(nèi)的,所以是每 5ms掃描一個數(shù)碼管,

20ms循環(huán)1次,因此時間很短暫,由于數(shù)碼管的余暉和人眼的視覺暫留作

用,造成4位同時亮的假象,達到同時顯示的效果。在對 TR0和EA置1后數(shù)

碼管掃描便正常顯示了。

在按鍵上,EW按鍵、SN按鍵和BACK按鍵采用的是掃描法,之前并沒

有進行去抖動處理,所以導致對按鍵的掃描不準確。發(fā)現(xiàn)這一錯誤后,在檢測

到某一鍵狀態(tài)變化后加上一個延時程序,再次檢測該按鍵的狀態(tài)是否保持著,

如是則作為按鍵處理,否則,視為抖動,不予理睬,即軟件法去抖動。在添加

了延時程序后按鍵便能正常的工作了。

技術(shù)小結(jié)

本次設(shè)計以 STC89C51單片機平臺采用 C語言編寫交通燈控制程序,運

用到了 LED、數(shù)碼管、按鍵等基本元件。在主程序的循環(huán)掃描中,包含了

LED燈循環(huán)點亮程序、數(shù)碼管示值計算程序以及鍵盤掃描程序等。使用定時

器0來定時計數(shù),為數(shù)碼管的掃描以及總的程序提供時間基礎(chǔ)。 2個外部中斷

分別用來接收按鍵產(chǎn)生的信號,使程序進入相應(yīng)的模式。

設(shè)計主要包括了交通燈各方向通行狀態(tài)的顯示和數(shù)碼管對當前通行剩余

時間的實時顯示,以及手動操作南北或東西方向的通行。而在程序設(shè)計和編寫

的過程中也遇到許許多多的問題,例如 LED燈與數(shù)碼管數(shù)值顯示的不一致,

按鍵因為沒消抖而產(chǎn)生的混亂等等。經(jīng)過不斷查找和修改,這些問題也都得到

了很好的解決,最終實現(xiàn)了題目要求的功能。

交通燈控制器使用說明

本交通燈控制器分為自動控制模式和手動控制模式。

按下電源開關(guān)后,系統(tǒng)進入自動控制模式,南北方向與東西方向在通行時

間結(jié)束后自動切換,同時數(shù)碼管實時顯示當前通行剩余時間。東西方向和南北

方向交通燈是切換規(guī)律控如下表所示,其中的黃燈為閃爍效果。

22S

3S

27S

3S

(EW)

(SN)

手動控制模式:上電后,只要按下 EW鍵或是SN鍵便進入到手動控制模

式。EW

鍵:東西方向綠燈亮,南北方向紅燈亮,即東西方向通行;

SN

鍵:

南北方向綠燈亮,東西方向紅燈亮,即南北方向通行,無論是按下

EW

鍵還

是SN鍵,數(shù)碼管顯示的通行剩余時間均停止。

BACK

鍵:按下之后返回到自

動控制模式,數(shù)碼管繼續(xù)計時。

參考文獻

[1]張毅剛.新編MSC-51單片機應(yīng)用設(shè)計 .哈爾濱:哈爾濱工業(yè)大學出版社, 2003

李廣弟.單片機基礎(chǔ).北京:北京航空航天大學出版社,1992

[3]何立民.MCS—51單片機應(yīng)用系統(tǒng)設(shè)計 .北京:北京航空航天大學出版社, 1990

何立民.單片機應(yīng)用技術(shù)選編.北京:北京航空航天大學出版社,1996

王毅.單片機器件應(yīng)用手冊.北京:人民郵電出版社,1995

房小翠.單片機使用系統(tǒng)設(shè)計技術(shù).北京:國防工業(yè)出版社,1999

張毅剛.單片機原理及應(yīng)用.北京:高等教育出版社,2009

附錄1原理圖

附錄2源程序

#include<reg51.h>

#defineTHC00xee

#defineTLC00x00

unsigned char code Duan[]={0x3F,

0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}。

unsignedcharData_Buffer[4]={0,0,0,0}。

staticintcount=0,a=0,b=0,c=0,d=0,i=0。

sbitP10=P1^0。

sbitP11=P1^1。

sbitP12=P1^2。

sbitP13=P1^3。

sbitkey=P3^4。

//四個數(shù)碼管的位碼口定義

staticunsignedcharwei=0。

voiddelay(inti)

{

while(i)

i--。

}

voidmain()

{

IT0=1。

EX0=1。 //使能外部中斷0

IT1=1。

EX1=1。 //使能外部中斷1

TMOD=0x01。

TH0=THC0。

TL0=TLC0。

TR0=1。

ET0=1。

EA=1。

while(1)

{

if(count>=100)

{

count=0。

if(d==0)

{

switch(a)

{

case0:P2=0x7e。break。

case44:P2=0xbd。break。

case45:P2=0xff。break。

case46:P2=0xbd。break。

case47:P2=0xff。break。

case48:P2=0xbd。break。

case49:P2=0xff。break。

case50:P2=0xbd。break。

case51:P2=0xff。break。

case52:P2=0xdb。break。

case106:P2=0xbd。break。

case107:P2=0xff。break。

case108:P2=0xbd。break。

case109:P2=0xff。break。

case110:P2=0xbd。break。

case111:P2=0xff。break。

case112:P2=0xbd。break。

case113:P2=0xff。break。

default:break。

}

}

c=a/2。

if(c>=26)b=56-c。

elseb=25-c。

a++。

if(a==114)

{

a=0。

b=0。

}

if(d==1)

{

P2=0x7e。

a--。

}

if(d==2)

{

P2=0xdb。

a--。

}

if(key==0)

{

delay(5)。

if(key==0)

d=0。

}

Data_B

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論