基于51單片機的智能交通燈課程設計_第1頁
基于51單片機的智能交通燈課程設計_第2頁
基于51單片機的智能交通燈課程設計_第3頁
基于51單片機的智能交通燈課程設計_第4頁
基于51單片機的智能交通燈課程設計_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上目錄專心-專注-專業摘 要 近年來隨著科技的飛速發展,一個以微電子技術、計算機技術和通信技術為先導的信息革命正在蓬勃發展。計算機技術作為三者之一,怎樣與實際應用更有效的結合并發揮其作用。單片機作為計算機技術的一個分支,正在不斷的應用到實際生活中,同時帶動傳統控制檢測的更新。在實時檢測和自動控制的應用系統中,單片機往往是作為一個核心部件使用,針對具體應用對象的特點,配以其它器件來加以完善。 十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現交通的井然秩序呢?靠的是交通信號燈的自動指揮系統,來實現交通的井然有序。交通信號燈控制方式很多。本

2、系統采用美國ATMEL公司生產的單片機AT80S51,以及其它芯片來設計交通燈控制。實現了通過AT89S51芯片的P1口設置紅、綠燈點亮的功能,輸出設置顯示時間。交通燈的點亮采用發光二極管實現,時間的顯示采用七段數碼管實現。單片機系統采用的直流供電。關鍵詞:AT89S51單片機;智能交通燈控制系統;基于51單片機智能交通燈設計1 系統硬件設計1.1 80C51單片機引腳圖及引腳功能介紹80C51系列中,用CHMOS工藝制造的單片機都采用雙列直插式(DIP)40腳封裝,引腳信號完全相同。圖1-1為引腳圖圖1-1 80C51引腳圖這40根引腳大致可分為:電源(VCC、VSS、VPP、VPD)、時鐘

3、(XTAL1、XTAL2)、I/O口(P0P3)、地址總線(P0口、P2口)和控制總線(ALE、RST、 、 、 )等幾部分。它們的功能簡述如下:1電源 Vcc(引腳號40),芯片電源,接+5V;Vss(引腳號20),電源接地端。2時鐘 XTAL1(引腳號18)內部振蕩電路反相放大器的輸入端,是外接晶振的一個引腳。當采用外部振蕩器時,此引腳接地。XTAL2(引腳號19)內部振蕩器的反相放大器輸出端,是外接晶振的另一端。當采用外部振蕩器時,此引腳接外部振蕩源。3. 控制總線(1)ALE/ (引腳號30): 正常操作時為ALE功能(允許地址鎖存),用來把地址的低字節鎖存到外部鎖存器。ALE引腳以不

4、變的頻率(振蕩器頻率的1/6)周期性地發出正脈沖信號。因此,它可用作對外輸出的時鐘信號或用于定時。但要注意,每當訪問外部數據存儲器時,將跳過一個ALE脈沖。ALE端可以驅動(吸收或輸出電流)8個LSTTL電路。在8751單片機EPROM編程期間,此引腳接編程脈沖( 功能)。(2) (引腳號29):外部程序存儲器讀選通信號。在從外部程序存儲器取指令(或數據)期間, 在每個機器周期內兩次有效。 可以驅動8個LSTTL電路。(3)RST/VPD(引腳號9):復位信號輸入端。振蕩器工作時,該引腳上持續2個機器周期的高電平可實現復位操作。此引腳還可接上備用電源。在Vcc掉電期間,由 向內部RAM提供電源

5、,以保持內部RAM中的數據。(4) /Vpp(引腳號31): 為內部程序存儲器和外部程序存儲器的選擇端。當 為高電平時,訪問內部程序存儲器(PC值小于4K);當 為低電平時,訪問外部程序存儲器。對于87C51單片機,在EPROM編程期間,此端為21V編程電源輸入端。4. I/O線 (1)P0口(引腳號3239):單片機的雙向數據總線和低8位地址總線。在訪問外部存儲器時實現分時操作,先用作地址總線,在ALE信號的下降沿,地址被鎖存;然后用作為數據總線。它也可以用作雙向輸入/輸出口。P0口能驅動8個LSTTL負載。(2)P1口(引腳號18):準雙向輸入/輸出口,它能驅動4個LSTTL負載。(3)P

6、2口(引腳號2128):準雙向輸入/輸出口。在訪問外部存儲器時,用作高8位地址總線。P2口能驅動4個LSTTL負載。(4)P3口(引腳號1017):準雙向輸入/輸出口,它能驅動4個LSTTL負載。P3口的每一引腳還有另外一種功能:P3.0RXD:串行口輸入端P3.1TXD:串行口輸出端P3.2 :外部中斷0中斷請求輸入端P3.3 :外部中斷1中斷請求輸入端P3.4T0:定時器/計數器0外部輸入端P3.5T1:定時器/計數器1外部輸入端P3.6 :外部數據存儲器寫選通信號P3.7 :外部數據存儲器讀選通信號1.2 74LS245引腳圖及功能74LS245是我們常用的芯片,用來驅動led或者其他的

7、設備,它是8路同相三態雙向總線收發器,可雙向傳輸數據。它的功能引腳圖如圖1-2所示。圖1-2 74LS245引腳圖74LS245還具有雙向三態功能,既可以輸出,也可以輸入數據。當8051單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅動器。當端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)DIR=“1”,信號由 A 向 B 傳輸;(發送)當CE為高電平時,A、B均為高阻態。由于P2口始終輸出地址的高8位,接口時74LS245的三態控制端1G和2G接地,P2口與輸入線對應相連。P0口與74LS245輸入端相連,E端接地,保證數據線暢通。8

8、051的/RD和/PSEN相與后接DIR,使得RD且PSEN有效時,74LS245輸入(P0.1D1),其它時間處于輸出(P0.1D1)。1.3 八段LED數碼管LED顯示屏作為大型顯示設備的一種,具有亮度高、價格低、壽命長、維護簡便等優點。LED數碼管的結構簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個發光二極管(比七段多一個發光二極管,用來顯示dP,即點),每個發光二極管的陽極連在一起,如圖1-3所示。這樣,一個LED數碼管就有I根位選線和8根段選線,要想顯示一個數值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陽八段LED數碼顯示管,其他類

9、形的顯示管與其類似。圖1-3 八段共陽管示意圖LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發光二極管是否點亮而顯示不同的字形,如 dp,g,f,e,d,c,b,a全亮顯示為,采用共陽極連接驅動代碼,代碼表如表1所示。表1 驅動代碼表顯示數值dp,g,f,e,d,c,b,a驅動代碼0C0H1F9H2A4H3B0H499H592H682H7F8H880H990H相應在程序軟件上,可以通過調用程序給定的秒值經過特定計算算出需要顯示的個位和十位,然后有DPTR調取LEDMAP的代碼。LED8段數碼管的設置為每個方位上的一對2為顯示器。四個方位上總共用4個LED接在單片機的IO口上。雖然路口

10、不一樣,但是顯示的時間在數字上是一樣的,所以兩邊連接的IO口是對稱的。1.4 硬件系統總控制電路本系統以單片機為核心,系統硬件電路由狀態燈,LED顯示,按鍵,組成。其具體的硬件電路總原理圖如圖1-4所示。其中P0用于送顯四片LED數碼管,P2用于控制紅綠黃發光二極管,P1.0,P1.1,與P1.1和P1.2對數碼管進行片選,P3口為緊急情況處理按鍵,既根據車流量控制紅綠黃發光二極管通斷時間。系統上電或手動復位之后,系統先顯示狀態燈及LED數碼管,將狀態碼值送顯P2口,將要顯示的時間值的個位和十位分別送顯P0口,在此同時用軟件方法計時1秒,到達1s就要將時間值減1,刷新LED數碼管。時間到達一個

11、狀態所要全部時間,則要進行下一狀態判斷及銜接,并裝入次狀態的相應狀態碼值以及時間值,當然,還要開啟三個外部中斷,其一為全部路口緊急情況處理中斷,一旦信號有效,即按鍵為低電平時進入中斷服務子程序,東西南北路口的狀態禁止通行。其二為東西方向或南北方向禁止通行,一旦信號有效將進入相應中斷服務子程序,某一方向狀態禁止通行。其三為通行時間調整中斷,若按鍵有效,進入相應的中斷子程序,對時間進行調整,可延長或減少某一路段的通行時間,此后再按確定鍵則中斷結束返回。圖1-4 控制系統總原理圖1.5各模塊控制電路1.5.1 交通燈控制電路這里我們采用發光二極管作為交通燈來使用,單片機的I/O接口直接和交通燈(發光

12、二極管)連接。在十字路口的四組紅、黃、綠三色交通燈中,東西方向道路上的兩組同色燈連接在一起,南北方向道路上的兩組同色的燈也彼此連接在,控制受單片機P2.1P2.6控制。單片機的I/O接口與交通燈電路的具體連接方式為:P2.1P2.3分別接東西方向的紅、黃、綠共6個放光二極管,P2.4P2.6分別接南北方向的紅、黃、綠共6個發光二極管。12個發光二極管采用了共陰極的連接方式,因此I/O口輸出高電平時,與之相連的發光二極管會亮,I/O口輸出低電平是,相應的發光二極管會滅。初始東西綠燈亮,南北紅燈亮,東西路口車通行,時隔20s,黃燈閃爍5次。之后,南北綠燈亮,東西紅燈亮,方向開始通車,時隔20s,南

13、北黃燈閃爍5次,然后又切換成東西方向通車,如此重復。當某一方向發生交通意外或者需要停止方向通行是,這一方向亮紅燈。處理完之后,按下確定鍵,重新按上述方式工作。當發生交通意外(中斷產生)時,全部亮紅燈,進行交通事故的處理。當事故處理完畢,按下確定鍵,重新按上述方式工作。當南北路口的流量大時,可以增加南北路口亮綠燈的時間,當東西路口的流量大時,可以增加東西路口亮綠燈的時間,結束后調回正常狀態。交通燈電路如圖1-5所示。圖1-5 交通燈電路1.5.2 倒計時顯示電路倒計時顯示可以提醒駕駛員在信號燈燈色發生改變的時間、在“停止”和“通過”兩者間作出合適的選擇。駕駛員和行人普遍都愿意選擇有倒計時顯示的信

14、號控制方式,并且認為有倒計時顯示的路口更安全。倒計時顯示是用來減少駕駛員在信號燈色改變的關鍵時刻做出復雜判斷的1種方法,它可以提醒駕駛員燈色發生改變的時間,幫助駕駛員在“停止”和“通過”兩者間作出合適的選擇 。四個路口的計時顯示都是由P0口控制,又P1口的P1.0P1.2片選這些顯示管,而東西兩個方向的顯示時間一樣,南北方向時間也一樣,片選信號能控制東西也南北顯示不同的時間。當某一方向為綠燈時,在綠燈倒計時結束后會再顯示一個5S的倒計時,以供黃燈顯示使用。顯示管連接圖如圖1-5所示。在單片機與顯示器之間加了一個8*4.7k的排阻與一個74LS245芯片,排阻的作用是上拉電阻,防止電流過高燒掉顯

15、示管,起到保護顯示管的作用,其連接圖如圖1-6所示。74LS245的作用是驅動顯示管點亮。其連接圖如圖1-7所示。圖1-5 顯示管連接圖圖1-6 排阻連接圖圖1-7 74LS245驅動芯片連接圖1.5.3 緊急通行電路該電路為緊急情況和根據車流量調節紅綠燈時間長度控制電路。通過單片機的P3.1P3.7口的七個接口來控制。在緊急情況下,需要停止所有方向上的車的行駛,按下P3.1接口上的開關,接低電平,使其發生作用,發出令所有路口的紅燈點亮的脈沖,禁止所有車輛通行。當需要禁止東西方向或者南北方向通行時,按下P3.2或者P3.3可以使其方向上的紅燈亮起,禁止該方向車輛通行,而另一方向上則綠燈常量,車

16、輛通行。例如,按下P3.2上的開關,此時南北方向上的紅燈常亮,而東西方向上綠燈常亮,這就起到了南北禁止東西通行的效果,按下P3.3上的開關則與之相反。有時候某個方向上的車流量比較大,另一個方向上的車流量比較少,這就需要調整通行時間,P3.5是加時間端口,P3.6為減時間端口,按下一次開關則會增加或者減少1S,P3.7接的是切換方向開關,按下開關可以切換方向時間的調整,例如現在切換開關是東西方向,而東西方向車流量比較少,南北方向車流量比較大,這就需要增加南北方向通行時間,減少東西方向通行時間。首先通過P3.6口減少東西方向通行時間,然后按下切換方向鍵,這就切換到了南北方向時間調整狀態,這是按下P

17、3.5,可以增加通行時間。P3.4為確定鍵,也可以稱之為復位鍵,要解除禁止時,按下確認鍵就可回到正常工作狀態,當時間調整結束后,也可以通過確認鍵回到工作狀態。控制電路圖如圖1-8所示。圖1-6 按鍵電路控制電路圖1.5.4 聲音警示裝置當發生緊急情況需要全面停止通行時,需要聲音警示裝置來提醒車輛,這個警示裝置由P3.0口控制,其電路圖如圖1-7所示。圖1-7聲音警示控制電路2 系統程序設計 2.1 主程序流程圖開始東西亮綠燈,南北亮紅燈東西準行,南北禁行顯示子程序系統初始化掃描鍵盤鍵按下有調用鍵盤子程序東西亮綠燈,南北亮紅燈同時黃燈進行閃爍調用鍵盤子程序掃描鍵盤顯示子程序東西準行,南北禁行東西

18、,南北方向換向有鍵按下YNY圖2-1主程序路程圖2.2 顯示子程序流程圖開始取倒計時數值從P1.0到P1.3取各個方向控制十位個位從P0口獲取數碼顯示值返回圖2-2 顯示子程序流程圖3 心得體會這次課程設計,我們小組做的智能交通等控制系統。如往常每一次實訓,我獲得了很大的收獲。首先,我要說說我學到的團隊精神,這次課設需要多人協作完成,我有幸找到三位認真負責且樂于交流討論的隊友。這次選交通燈為題目來做課設一是經驗不足,二是信心不足。通過這次課設,我既積累了經驗,也獲取了信心,今后會找尋機會再做一些與拖動相關的電子設計,因為我們自動化專業和電機是息息相關的,很大程度研究的是電機的拖動問題。通過這兩

19、周的單片機課程設計,我們運用所學的知識,利用單片機控制原理設計了一個交通燈控制系統,我們對單片機有了更深的體會。我們了解和掌握了一些簡單的編程思想和對I/O口的使用。這次課設通過單片機的I/O口來控制交通燈。實現一些具體的功能和對特殊情況的處理。通過這次的實踐,我們對單片機的I/O口的使用的條件有更深的理解,對單片機的各個管腳功能的理解也加深了,以及在常用編程設計思路技巧,特別是匯編語言的掌握方面都能向前邁了一大步。這次的課程設計讓我們把單片機的理論知識用在實踐中,實現了理論和實踐相結合,從中更懂得理論是實踐的基礎,實踐有著能檢驗理論的正確性,讓我們受益非淺,對我們以后參加工作或者繼續學習將會

20、產生巨大的幫助和影響。在課設過程中遇到的硬件和軟件問題都通過詢問老師、同學和去圖書館、上網得到了解決。參考文獻1陳大欽 電子技術基礎實驗 M.北京:高等教育出版社 20042陳梓城 電子技術實訓 M.北京:機械工業出版社 20033吳黎明 單片機原理及應用技術M.北京:科學出版社 20034李學海 標準80C51單片機基礎教程M.北京: 北京航空航天大學出版社 20065劉樂善 微型計算機接口技術及應用M.北京: 華中科技大學出版社 20046 陳炳權 曾慶六 EDA技術實用教程M.北京: 湘潭大學出版社 20107 先鋒工作室. 單片機程序實例M.北京:清華大學出版社,2002.8 李伯成.

21、基于MCS-51單片機的嵌入式系統的設計M.北京:電子工業出版社,2004.9 吳洪潭,肖艷萍,趙偉國.單片機原理及應用系統設計M.北京:國防工業出版社,2005.10 吳黎明, 王桂棠, 洪添勝, 等. 單片機原理及應用技術 M . 北京: 科學出版社,2005.附錄 源程序#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar data buf4;uchar data sec_dx=20;/東西數默認uchar data sec_nb=30;/南北默認值uchar data set_

22、timedx=20;uchar data set_timenb=30;int n;uchar data countt0;/定時器0中斷次數/定義5組開關sbit k4=P37; /切換方向sbit k1=P35;/時間加sbit k2=P36;/時間減sbit k3=P34;/確認sbit k5=P31;/禁止/ P32/只允許東西方向通行,中斷0/ P33/只允許南北方向通行,中斷1sbit Yellow_nb=P25;/南北黃燈標志sbit Yellow_dx=P22;/東西黃燈標志sbit Green_nb=P24;sbit Green_dx=P21;sbit Buzz=P30;bit

23、Buzzer_Indicate;bit time=0;/燈狀態循環標志bit set=1;/調時方向切換鍵標志uchar code table11=/共陰極字型碼0x3f, /-00x06, /-10x5b, /-20x4f, /-30x66, /-40x6d, /-50x7d, /-60x07, /-70x7f, /-80x6f, /-90x00 /-NULL;/函數的聲明部分void delay(int ms);/延時子程序void key();/按鍵掃描子程序void key_to1();/鍵處理子程序void key_to2();void key_to3();void display(

24、);/顯示子程序void logo(); /開機LOGOvoid Buzzer();/主程序void main()TMOD=0X11; /定時器設置TH0=0X3C;/定時器0置初值 0.05STL0=0XB0;EA=1;/開總中斷ET0=1;/定時器0中斷開啟TR0=1;/啟動定時0EX0=1;/開外部中斷0EX1=1;/開外部中斷1 logo();P2=0Xc3;/ 開始默認狀態,東西綠燈,南北黃燈 sec_nb=sec_dx+5; /默認南北通行時間比東西多5秒while(1) key(); /調用按鍵掃描程序display(); /調用顯示程序Buzzer();/函數的定義部分void

25、 key()/按鍵掃描子程序 if(k1!=1)/時間加按下時delay(10);/延時消抖if(k1!=1)while(k1!=1)/當按鍵未彈起時,一直執行 key_to1();/調用按鍵1功能 for(n=0;n<40;n+)/調用40次顯示,用于延時 display(); if(k2!=1)/當K2按鍵按下時delay(10);/延時消抖if(k2!=1)while(k2!=1)/按鍵按下未彈起時一直執行 key_to2();/調用key2功能 for(n=0;n<40;n+)/調用40次顯示,用于延時 display();if(k3!=1)/當K3(確認)鍵按下時TR0=

26、1; /啟動定時器Buzzer_Indicate=0;sec_nb=set_timenb;/從中斷回復,仍顯示設置過的數值sec_dx=set_timedx;/顯示設置過的時間if(set=1)/時間倒時到0時 /P2=0X99;/東西紅燈,南北綠燈sec_nb=sec_dx+5; /回到初值else /P2=0xC3;/東西綠燈,南北紅燈sec_dx=sec_nb+5; if(k4!=1)/當K4(切換)鍵按下 delay(5);/延時消抖if(k4!=1) while(k4!=1);set=!set;/取反set標志位,以切換調節方向 if(k5!=1)/當K5(禁止)鍵按下時 delay

27、(5);/延時消抖 if(k5!=1) while(k5!=1) key_to3(); void display() /顯示子程序buf1=sec_dx/10; /第1位 東西秒十位buf2=sec_dx%10; /第2位 東西秒個位buf3=sec_nb/10; /第3位 南北秒十位buf0=sec_nb%10; /第4位 南北秒個位 P1=0xff; / 初始燈為滅的 P0=0x00; P1=0xfe; /片選LED1 P0=tablebuf1;/送東西時間十位的數碼管編碼delay(1);/延時 P1=0xff;/關顯示 P0=0x00; P1=0xfd; /片選LED2 P0=tabl

28、ebuf2; delay(1); P1=0xff; P0=0x00; P1=0Xfb; /片選LED3P0=tablebuf3; delay(1);P1=0xff; P0=0x00;P1=0Xf7;P0=tablebuf0;/片選LED4 delay(1);void time0(void) interrupt 1 using 1 /定時中斷子程序TH0=0X3C;/重賦初值TL0=0XB0;TR0=1;/重新啟動定時器countt0+;/軟件計數加1if(countt0=20) / 定時器中斷次數=20時(即1秒時)countt0=0;/清零計數器sec_dx-;/東西時間減1sec_nb-;

29、/南北時間減1if(sec_nb<=5&&time=0) /東西黃燈閃 Green_dx=0;Yellow_dx=!Yellow_dx; if(sec_dx<=5&&time=1) /南北黃燈閃 Green_nb=0;Yellow_nb=!Yellow_nb; if(sec_dx=0&&sec_nb=5) /當東西倒計時到0時,重置5秒,用于黃燈閃爍時間sec_dx=5;if(sec_nb=0&&sec_dx=5)/當南北倒計時到0時,重置5秒,用于黃燈閃爍時間sec_nb=5;if(time=0&&s

30、ec_nb=0)/當黃燈閃爍時間倒計時到0時, P2=0x99;/重置東西南背方向的紅綠燈time=!time;sec_nb=set_timenb;/重賦南北方向的起始值sec_dx=set_timenb+5;/重賦東西方向的起始值if(time=1&&sec_dx=0)/當黃燈閃爍時間到P2=0Xc3;/重置東西南北的紅綠燈狀態time=!time;sec_dx=set_timedx;/重賦東西方向的起始值sec_nb=set_timedx+5;/重賦南北方向的起始值void key_to1()/鍵盤處理子程序之+TR0=0; /關定時器if(set=0)set_timenb+; /南北加1Selseset_ti

溫馨提示

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

評論

0/150

提交評論