基于STC90C51單片機的智能交通燈設(shè)計_第1頁
基于STC90C51單片機的智能交通燈設(shè)計_第2頁
基于STC90C51單片機的智能交通燈設(shè)計_第3頁
基于STC90C51單片機的智能交通燈設(shè)計_第4頁
基于STC90C51單片機的智能交通燈設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于STC90C5單片機的交通燈設(shè)計1、設(shè)計題目基于STC90C51單片機的智能交通燈設(shè)計2、設(shè)計要求、系統(tǒng)功能(1) 按照交通規(guī)則,控制寶田路和前進路方向及其人行道的交通信號燈(紅、黃、綠) 的通斷。(2) 設(shè)置信號燈的通斷時間。(3) 可人工干預,使交通信號燈開啟不同模式。、性能參數(shù):(1) 電源:5VDC(2) LED燈電流:10mA(3) 定時時間:10s-200s3、總體設(shè)計根據(jù)系統(tǒng)功能和設(shè)計要求,系統(tǒng)采用單片機控制的方案,基于HC6800S開發(fā)板,由STC90C51 74HC573交通燈模塊,動態(tài)數(shù)碼顯示管以及4*2獨立按鍵組成。系統(tǒng)工作原理在十字路口,分為寶田路和前進路,正常情況

2、下,在任一時刻只有一個方向通行,另一 方向禁行,持續(xù)一定時間,經(jīng)過短暫的過渡時間,將通行禁行方向?qū)Q。其具體狀態(tài)如 下:?(1 )普通模式:狀態(tài)一:寶田路通行階段(寶田路及其人行道亮綠燈30秒、前進路及其人行道亮紅燈30 秒);狀態(tài)二:黃燈階段(寶田路和前進路亮黃燈5秒、兩側(cè)人行道亮紅燈 5秒);狀態(tài)三:前進路通行階段(前進路及其人行道亮綠燈30秒、寶田路及其人行道亮紅燈30 秒);狀態(tài)四:黃燈階段(寶田路和前進路亮黃燈5秒、兩側(cè)人行道亮紅燈 5秒);返回到狀態(tài)一。(2)高峰期模式(設(shè)寶田路為主干道):按下按鍵2 (key2),開啟高峰期模式;60秒、前進路及其人行道亮紅燈狀態(tài)一:寶田路通行階

3、段(寶田路及其人行道亮綠燈30 秒);狀態(tài)二:黃燈階段(寶田路和前進路亮黃燈 5秒、兩側(cè)人行道亮紅燈 5 秒); 狀態(tài)三:前進路通行階段(前進路及其人行道亮綠燈 30 秒、寶田路及其人行道亮紅燈 30 秒);狀態(tài)四:黃燈階段(寶田路和前進路亮黃燈 5秒、兩側(cè)人行道亮紅燈 5 秒);返回到狀態(tài)一;按鍵 2 釋放,回到普通模式。( 3)緊急模式 :按下按鍵1 ( keyl),開啟緊急模式,所有道路及其人行道均紅燈亮,數(shù)碼管不顯示。釋放按鍵 1 ,回到普通模式。?單片機交通控制系統(tǒng)的功能要求?本設(shè)計能模擬基本的交通控制系統(tǒng), 用紅綠黃燈表示禁行, 通行和等待的信號發(fā)生, 還 能進行倒計時顯示,通行時

4、間調(diào)整功能和緊急情況全面禁行。?( 1 )倒計時顯示 ?倒計時顯示可以提醒駕駛員在信號燈燈色發(fā)生改變的時間、在“停止”和“通過”兩者 間作出合適的選擇。 駕駛員和行人普遍都愿意選擇有倒計時顯示的信號控制方式,并且認為有倒計時顯示的路口更安全。 倒計時顯示是用來減少駕駛員在信號燈色改變的關(guān)鍵時刻做出 復雜判斷的一種方法, 它可以提醒駕駛員燈色發(fā)生改變的時間, 幫助駕駛員在 “停止” 和“通 過”兩者間作出合適的選擇 ?。 ?( 2)時間的設(shè)置 ?本設(shè)計中對時間進行了人為控制設(shè)置, 正常情況下寶田路和前進路的綠燈通行與紅燈禁 行時間均設(shè)置為 30 秒、黃燈等待時間設(shè)置為 5秒。假設(shè)前進路為主干道,

5、考慮到主干道在 上下班高峰期車流量和人流量較大,人為增加開關(guān)K2。當K2開啟時,主干道前進路上綠燈通行時間和寶田路上的紅燈禁行時間更改為 60 秒,其余設(shè)置均不變; 當 K1 關(guān)閉時, 又恢復 正常情況下的時間設(shè)置。( 3)緊急情況全面禁行本設(shè)計中在緊急情況下增加了全面禁行狀態(tài),增加開關(guān)K1。當K1開啟時,寶田路和前進路及其各自人行道均量紅燈禁行;當 K1 關(guān)閉時,交通燈恢復正常狀態(tài)。4、詳細設(shè)計硬件設(shè)計為了實現(xiàn)本設(shè)計要求的具體功能,選用STC90C5仲片機及外圍器件構(gòu)成最小控制系統(tǒng),10個發(fā)光二極管分別分成兩組紅黃綠和兩組紅綠燈構(gòu)成信號燈指示模塊,4個LED動態(tài)數(shù)碼管構(gòu)成各個方向倒計時顯示模

6、式,兩個按鍵分別用來設(shè)置高峰期模式和緊急模式。、單片機系統(tǒng)設(shè)計單片機設(shè)計交通燈控制系統(tǒng), 可用單片機直接控制信號燈的狀態(tài)變化,基本上可以指揮交通的具體通行,當然,接入LED數(shù)碼管就可以顯示倒計時以提醒行使者,更具人性化。單片機上電后,系統(tǒng)進入正常工作狀態(tài), 執(zhí)行交通燈狀態(tài)顯示控制,同時將時間數(shù)據(jù)倒計時輸入到LED數(shù)碼管上實時顯示。HC6800S整體結(jié)構(gòu)視圖:41 K-RAM HE碎 tf:活汁卅圧益歆rouHk嗆冋s2便曲口氏dd旳減S;irm 三 nllnnmnfl0* TfrF 4 J r 一 L 0 F 3,hvl4J L4 5 3 *1- J 3 J J -J 3 2 2 聞4勺業(yè) 2

7、 r D I r-2 JS3 -d IT mm 屮一i b L IL IL L L-IWJ.DE1堆g.lPl.4FL5 PktPIJ RKI tiLPU) rdyM.i jSJyM-l nrijn.3XI AU A LU ISTC90C51芯片引腳圖:、LED數(shù)碼管顯示屏設(shè)計2位8段數(shù)碼管電路采用“共陽”連接驅(qū)動代碼,如右圖所示。段碼和位碼,段碼即段選信號SEG,它負責數(shù)碼管顯示的內(nèi)容,LED動態(tài)數(shù)碼管的顯示原理為:顯示數(shù)值dp,g,f,e,d,c,b,a代碼0011111110x3f1000001100x062010110110x5 b3010011110x4f4011001100x665

8、011011010x6d6011111010x7d7000011010x078011111110x7f9011011110x6f圖中ag、dp組成的數(shù)據(jù)(a為最低位,dp為最高位)就是段碼。 位碼即位選信號 DIG,它決定哪個數(shù)碼管工作,哪個數(shù)碼管不工作。 LED數(shù)碼管顯示代碼表如下表所示:HC6800S開發(fā)板中動態(tài)數(shù)碼管模塊原理圖如下圖所示:rLEDlJ12QOEOR|.FJ471OOOOOOC DCOJ DM OOM OX-I、交通燈設(shè)計HC6800S開發(fā)板中交通燈模塊原理圖如下圖所示,寶田路紅黃綠燈及其人行道上的紅綠燈和前進路上的紅黃綠燈由 JP1控制,前進路人行道上的紅綠燈由J22控制

9、。 P22 lM06叫I IE455、詳細設(shè)計一軟件設(shè)計、軟件開發(fā)工具和環(huán)境keil C51、軟件總體設(shè)計總體結(jié)構(gòu)流程圖如下子結(jié)構(gòu)軟件設(shè)計(1)普通模式程序流程簡圖如下:程序源代碼如下:while(1)if(S=71)S=0;/*寶田路通行,寶田路綠燈亮30秒*/if(S31)DataO=OxOO;Data1=OxOO;Data2=dua n(30-S)/10;Data3=dua n(30-S)%10;Data4=OxOO;Data5=0x00;Data6=Data2;Data7=Data3;Display。;ex碼奐成使用JP16fled=OxFF;程序;下3將開發(fā)板按照如圖所示的連線方2.

10、將編好的程序“ .C”4.用普中科技自己的下載軟件PAISP自動下載軟件將“ .hex ”下載到開發(fā)板上,下載步驟如下:1) .插上USB口,打開開發(fā)板電源開關(guān),然后打開普中ISP下載軟件,在usb轉(zhuǎn)串口驅(qū)動安裝成功后,打開軟件應該有串口號;2) .芯片類型選擇 STC90C5XX3) .同時需要把開發(fā)板中 J0跳線帽拔掉,設(shè)置成 USB接口,加載我們要下載到單片機里的打開立件程序,單擊,選擇下載的后綴為.Hex的文件;下載程序4) .點擊下載程序,即可下載成功。4.觀察運行現(xiàn)象是否與設(shè)計結(jié)果相符;、硬件調(diào)試硬件部分是在51單片機上完成,所以調(diào)試過程比較簡單。首先按照電路原理圖進行檢查, 檢查

11、無誤后進行按鍵、數(shù)碼管和發(fā)光二極管的檢測。、軟件調(diào)試首先用keil C51軟件對程序進行編譯和調(diào)試,經(jīng)過對程序多次修改后,編譯通過,結(jié)束軟件調(diào)試。、聯(lián)合調(diào)試硬件調(diào)試和硬件調(diào)試結(jié)束之后, 將最終調(diào)試好的程序下載到單片機上, 觀察結(jié)果并進行調(diào)試。、系統(tǒng)實驗經(jīng)過多次調(diào)試,最終可以在單片機上觀察到本次設(shè)計的實驗結(jié)果:(1 ) 用發(fā)光二極管模擬的紅黃綠交通信號燈有序閃爍,實驗現(xiàn)象正確;(2)動態(tài)數(shù)碼管可以顯示到信號燈顏色改變所剩時間,并采用倒計時方式計數(shù);(3)按下按鍵 1 ,所有道路及其人行道的紅燈亮,數(shù)碼管均不顯示,開啟緊急模式;(4)按下按鍵 2 ,主干道綠燈時間變?yōu)?60 秒,其余均不變,開啟高

12、峰期模式。7、總結(jié)、工作總結(jié)在本次智能交通信號燈的設(shè)計中, 我主要負責的是軟件部分以及最后的聯(lián)合調(diào)試部分。 主要 有:(1) 編寫代碼。本次程序的編寫我用的是C語言,一是因為之前在大一有上過C語言的課,對C語言不會感到很陌生,二是學習過程中,教材也都是C語言教程。一開始我們計劃僅實現(xiàn)普通模式下的智能交通信號燈的控制。同時我們參考了單片機自帶 的程序,后來經(jīng)過深入學習,發(fā)現(xiàn)只有普通模式太過簡單,所以我們就打算嘗試一 下能否實現(xiàn)緊急模式和高峰期模式。( 2) 聯(lián)合調(diào)試。由于單片機自帶交通燈模塊,所以我覺得調(diào)試應該比較簡單,直接將程 序燒錄到單片機上就可以了。沒想到在這個過程中還出現(xiàn)了很多了問題。比

13、如發(fā)光 二極管一直亮或者不亮,數(shù)碼顯示管顯示錯誤等。我以為是程序出了問題,就一直 在修改程序,結(jié)果發(fā)現(xiàn),很大一部分原因是由于我們太粗心了,把線接反了或者接 觸不良,原來是硬件的問題。所以在聯(lián)合調(diào)試的過程中,一定要同時兼顧軟件和硬 件的調(diào)試。本次設(shè)計還存在一些問題如下:( 1 ) 由于我主要負責軟件部分, 所以在后期的聯(lián)合調(diào)試部分出了很多問題, 主要是由于 我對硬件部分不夠熟悉,這是本次實驗中我主要需要改進的地方;(2) 在編寫代碼的過程中,我還發(fā)現(xiàn)了一些自身存在的問題,比如說主函數(shù)寫的過長,容易造成里面的括號丟失, 代碼后面不加注釋, 代碼沒有層次感, 使程序看起來很 亂, 而且在查找問題時也

14、不方便, 還有就是對語句運用不夠熟悉, 容易犯一些語法 錯誤,這一點還需要加以改進。這一點需要改進, 可加入仿3) 本次設(shè)計編譯程序之后直接在單片機上調(diào)試較為麻煩,真調(diào)試。、心得體會本次科研訓練接近尾聲, 從一開始根本不了解科研訓練是什么, 需要做什么, 到確定 題目,一起學習, 編寫程序, 硬件軟件調(diào)試到最后的報告撰寫, 我真的覺得自己收獲了很多。 不僅僅是感受到了我們這個團隊的合作精神, 還有自己的那一份責任感, 既然是小組合作完 成一個項目, 那就必須要每個人確確實實的做好自己的工作, 只有這樣, 我們的設(shè)計才是完 整的。本次科研訓練我們選擇的是智能交通燈的設(shè)計,說實話,老師讓我們確定題

15、目時,我 們也不知道自己能做什么擅長做什么, 甚至不確定是否能完成這個項目。 確定這個題目之后, 也是沒有頭緒, 不知道要怎么開始。 后來我們明確了一下分工,我主要負責軟件部分, 硬件 我們是用的單片機,所以我就開始學習單片機的 C語言。我用的教材是郭天祥老師主編的 51 單片機C語言教程,我覺得這本書最大的好處就是通俗易懂,很適合我這樣的單片機新手。一邊看書學習, 一邊就開始編寫程序,編寫程序首先得確定算法, 我還是沒有概念,所以我 就參考了別的交通信號燈的程序, 我覺得編程是一件很神奇的事情, 我們的很多想法靠著這 些代碼就能夠?qū)崿F(xiàn), 這極大的激發(fā)了我的好奇心, 就想一定要完成這個程序。

16、我們本來是打 算做個普通模式就結(jié)束,做出來之后又想挑戰(zhàn)一下自己,就做了個緊急模式和高峰期模式。 在做普通模式時還覺得很簡單,想著變成也不是那么難的一件事,但是在做高峰期模式時, 就出現(xiàn)了很多問題, 反復調(diào)試了很多次還是不行, 我們就去請教別人, 別人一眼就發(fā)現(xiàn)了其 中的問題, 我們也恍然大悟了。 所以以后還是要不斷的學習, 積攢經(jīng)驗,才能夠少犯一些低 級錯誤。通過這次科研訓練, 真的學到了很多東西, 也發(fā)現(xiàn)了自己本身的一些局限性, 希望自己 以后能夠多向優(yōu)秀的人學習, 彌補自身不足。 本次科研訓練使我們團隊合作的結(jié)果, 每一個 人都不可缺少,真的很感謝此次訓練,讓我體會到了團隊合作的重要性,感

17、謝我的隊友們。附:交通信號燈程序源代碼#include#define uchar unsigned char#define uint unsigned int#define Weixuan P1/ 定義使用的 I/O 口#define Duanxuan P0#define led P2sbit RED10 = P2A0; /上人行道紅燈上人行道綠燈/ 右人行道紅燈/ 右人行道綠燈sbit GREEN10 = P2A1; /sbit RED11 =卩2人2;sbit YELLOW11= P2A3;sbit GREEN11 = P2A4;sbit RED00 = P3A0;sbit GREEN00

18、 = P3A1; sbit RED01 = P2A5;sbit YELLOW01= P2A6;sbit GREEN01 = P2A7; sbit key1 = P3A3; sbit key2 = P3A5;uchar code wei=位選控制0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; / uchar code duan = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 ; / 段選顯示碼uchar Data8;uchar T,S,M;/* 聲

19、明全局函數(shù) */void Display();void init();void delayms();void keyscan();void main()S=0;M=0;init();/ 初始化函數(shù)while(1)if(S=71)S=0;/* 寶田路通行,寶田路綠燈亮30 秒 */if(S31)Data0=0x00;Data1=0x00;Data2=duan(30-S)/10;Data3=duan(30-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF; /RED00=1;GREEN00=1;GREEN1

20、0=0;GREEN11=0;RED00=0;RED01=0;/* 黃燈階段, 5 秒*/else if(S36)Data0=0x00;Data1=0x00;Data2=duan(35-S)/10;Data3=duan(35-S)%10;Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF; /RED00=1;GREEN00=1;RED10=0;YELLOW11=0;RED00=0;將所有的燈都熄滅/ 寶田路人行道綠燈亮/ 寶田路綠燈亮/ 前進路人行道紅燈亮/ 前進路紅燈亮將所有的燈都熄滅/ 寶田路人行道紅燈亮/ 寶田路

21、黃燈亮/ 前進路人行道紅燈亮YELLOW01=0; / 前進路黃燈亮30 秒*/* 前進路通行,前進路綠燈亮 else if(S66)Data0=0x00;Data1=0x00;Data2=duan(65-S)/10;Data3=duan(65-S)%10; Data4=0x00;Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF;RED00=1; GREEN00=1;RED10=0;RED11=0;GREEN00=0;GREEN01=0;/* 黃燈階段, 5 秒*/else Data0=0x00; Data1=0x00; Data2=d

22、uan(70-S)/10; Data3=duan(70-S)%10; Data4=0x00; Data5=0x00;Data6=Data2;Data7=Data3;Display();led=0xFF;RED00=1;GREEN00=1;RED10=0;YELLOW11=0;RED00=0; YELLOW01=0;/* 按下按鍵 1,開啟緊急模式,所有紅燈亮,數(shù)碼管不顯示 */ if(key1=0)delayms(); / 去抖延時if(key1=0)Data0=0x00;Data1=0x00;Data2=0x00;Data3=0x00;Data4=0x00;Data5=0x00;Data6=0x00;Data7=0x00; Display();led=0xFF;RED00=1;GREEN00=1;RED10=0;RED11=0;RED00=0;RED01=0;while(!key1); / 按鍵 1 釋放 keyscan();60 秒 */* 按下按鍵 2,開啟上下班高峰期模式,主干道寶田路綠燈時間為 void keyscan()if(key2=0)匚丄XOHP一oAQdsQxeroleQ卜roled m2ed9rolecl OOXOHn- ooxo寸roleclXOL%(IAI

溫馨提示

  • 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

提交評論