自動化畢業(yè)論文基于單片機的智能交通燈設計(軟件部分)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于單片機的智能交通燈設計(軟件部分)</p><p>  所在學院 </p><p>  專業(yè)班級

2、 自動化 </p><p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p>  基于單片機的智能交通燈設計(軟件部分)

3、</p><p>  摘要:隨著現(xiàn)在城市發(fā)展步伐的加快,已經(jīng)有越來越多的人擁有自己的汽車,這就給城市的交通造成了很大的壓力,城市要有效率的發(fā)展那么必須解決交通問題。由于社會主義建設,有許多從事交通建設的研究設計十字路口的工人,創(chuàng)建和設計了很多新的項目,讓我國的交通建設取得了一定的進展。目前的交通燈主要用于控制車輛和行人的通道,維護管理相當方便并有了自動化的發(fā)展。大量的信號電路正朝著數(shù)字化,低功耗,多樣性,協(xié)調著人

4、與車之間的關系。十字路口交通繁忙,要實現(xiàn)路人與車輛有秩序的來來往往就得依然交通燈自動指揮系統(tǒng)才能完成這種秩序。本系統(tǒng)采用單片機STC89C52來設計交通燈控制器,能根據(jù)實際車流量控制STC89C52芯片的P1口設置紅、綠燈點亮時間的功能;紅綠燈循環(huán)亮起,倒計時剩5秒時黃燈閃爍警示。該系統(tǒng)操作便捷,界面優(yōu)化,擴展功能強。</p><p>  關鍵詞:STC89C52 紅綠燈 交通問題</p>

5、<p><b>  指導老師簽字:</b></p><p>  Intelligent traffic light design based on single chip microcomputer (software section)</p><p>  Abstract:With the expansion of the scale of soc

6、ialist construction in the city , the city's traffic improved and perfected , smooth traffic has become an important factor in the development of socialist construction. Now, with the increasing number of cars increa

7、ses , especially for urban transportation construction crossroads traffic safety is quite critical , serious impact on the urban traffic safety. Because of socialist construction , there are many workers engaged in the c

8、onstruction of tr</p><p>  Keywords: STC89C52 traffic light traffic problem</p><p>  Signature of supervisor:</p><p><b>  目 錄</b></p><p><b>  1

9、 緒論</b></p><p>  1.1 交通信號燈的發(fā)展及研究意義1</p><p>  1.2 城市路口交通燈控制系統(tǒng)技術的現(xiàn)狀1</p><p>  1.3 單片機概述2</p><p>  1.4 方案的設計與論證2</p><p>  1.4.1 電源提供方案3</p>

10、<p>  1.4.2 顯示界面方案3</p><p>  1.4.3 輸入方案4</p><p><b>  2 軟件部分</b></p><p>  2.1 Keil軟件簡介5</p><p>  2.2 Keil編程步驟及結果5</p><p>  2.3 Proteus

11、軟件簡介8</p><p>  2.4 Proteus使用步驟8</p><p>  3 交通信號燈控制系統(tǒng)的設計</p><p>  3.1 十字路口交通信號燈具體的控制要求10</p><p>  3.2 十字路口交通信號燈示意圖11</p><p>  4 交通信號燈控制系統(tǒng)程序編制</p>

12、;<p>  4.1 軟件設計應用環(huán)境12</p><p>  4.2 軟件設計流程12</p><p>  4.3 交通燈定時器模塊14</p><p>  4.4 交通燈顯示模塊14</p><p>  4.5 Proteus仿真結果16</p><p><b>  5 結論&l

13、t;/b></p><p><b>  致謝18</b></p><p><b>  參考文獻19</b></p><p><b>  實物圖20</b></p><p>  附件一:源程序代碼22</p><p>  基于單片機的智能交通

14、燈設計(軟件部分)</p><p><b>  1 緒 論</b></p><p>  1.1交通信號燈的發(fā)展及研究意義</p><p>  今天,交通燈安裝在各個路口,車輛疏導交通已成為最常見的、最有效的手段,該技術有著悠久的歷史。</p><p>  1858,在倫敦的主要街道安裝燃氣淺紅色和藍色的機械扳手式信號燈

15、,這是世界上第一個交通燈。1868,在威斯敏斯特渥太華國會大廈前面的廣場上英國機械工程師NAIT,安裝了世界上第一個氣燈。它是由紅色和綠色兩個旋轉的方形玻璃燈,“格林說”,紅色意味著“停止”。1869年1月2日,瓦斯爆炸,警察受傷,這種最早期的交通信號燈被取消了。</p><p>  電氣交通燈的開始最早出現(xiàn)在美國,這種交通燈是由紅綠黃三種顏色的投光器組成,安裝在一紐約市的一個塔上。紅燈表示“停止”,綠色表示“通

16、行”。</p><p>  1918,又出現(xiàn)帶控制的紅綠交通燈的控制系統(tǒng),壓力檢測器是一個地下,車輛在紅燈變綠;另一個是從一個紅色的光,在紅色的按喇叭的司機,從紅色到綠色使光線的變化。紅外線紅綠燈當行人路徑敏感的表面壓力,它可以探測到任何需要過馬路。紅色的光信號的紅外光束可以延長一段時間,推遲發(fā)布的車輛,以避免交通事故。</p><p>  交通信號燈的出現(xiàn),使交通得以有效控制,對于疏導交

17、通流量,提高道路通行能力,減少交通事故有明顯的影響,改變警察把指揮交通擁堵疏散狀況,人民,實現(xiàn)汽車的三路,同步。目前,許多設計師設計了許多智能化,自動化,數(shù)字交通燈控制方案更先進,更便于維護和管理,并提供更便捷的交通環(huán)境。</p><p>  目前,城市規(guī)模的不斷擴大,交通信號燈的控制水平也越來越高,我們需要更高層次的了解交通信號燈,結合城市交通的發(fā)展,不斷努力創(chuàng)新,以實現(xiàn)發(fā)展的需求,所以研究設計交通信號燈是非常

18、重要的。 </p><p>  1.2城市路口交通燈控制系統(tǒng)技術的現(xiàn)狀</p><p>  在機動車輛的城市的不斷增加的今天,交通超載的情況下,許多大城市,80年代末以來,已經(jīng)建立了城市高速道路,在公路工程竣工初期,曾經(jīng)有效的改善了交通條件。然而,隨著交通和高澎路缺乏系統(tǒng)的研究和控制的快速增長,高速路沒有充分發(fā)揮出預期的作用。而在結構特征的城市高速道路,也決定了城市高速道路的交通狀況的耦合

19、的高速路和一般道路交通狀況不可避免的限制。所以,如何采用合適的控制方法,對高速路的城市建設費用的最大利用率,緩解交通擁堵的交通繁忙的主干道,已日益成為解決一個交通運輸管理和城市規(guī)劃部門的主要問題。</p><p><b>  1.3單片機概述</b></p><p>  單片機是一塊集成了CPU、存儲器、IO接口等各種功能部件的單片微型計算機,具有集成度高、功能強、可

20、靠性好、性價比高等優(yōu)點。單片機廣泛應用于工業(yè)控制、數(shù)據(jù)采集、智能化儀表、辦公自動化以及家用電器等各個領域。在眾多的單片機中,MCS-51系列單片機以其優(yōu)越的性能、成熟的技術和較高的可靠性,占領了工業(yè)控制領域的主要市場。經(jīng)過了三十多年的發(fā)展STC-89C52系列單片機已經(jīng)形成了品種多、功能全、用戶群龐大的系列產(chǎn)品,成為我國單片機應用領域的主流和高校最為流行的單片機教學機型之一。</p><p>  STC-89C5

21、2單片機的主要特點:</p><p>  1、單片機寄存器是八位。</p><p>  單片機數(shù)據(jù)寄存器和程序寄存器分開。</p><p>  單片機主要用于工業(yè)控制。</p><p>  1.4方案的設計與論證</p><p>  本設計是以STC-89C52單片機為核心的設計,LED作為倒計時數(shù)字顯示,還考慮了各功

22、能模塊的多種設計方案,以實現(xiàn)各種實時顯示系統(tǒng)狀態(tài),設計要求系統(tǒng)還增加了時間的流逝可以設置為主干道和次干道是,從而提高效率,緩解交通擁堵。如圖所示是整個系統(tǒng)的設計圖。</p><p>  如下圖1.1所示是交通燈控制的框圖,主要有電源電路、按鍵電路、顯示電路、晶振電路、復位電路、控制電路等電路組成。</p><p>  圖1.1 系統(tǒng)設計圖</p><p>  圖1.

23、2所示是系統(tǒng)總體原理圖。</p><p>  圖1.2系統(tǒng)總體原理圖</p><p>  1.4.1 電源提供方案</p><p>  為了使模塊能夠正常穩(wěn)定的工作,則需要可靠的電源。所以本次設計考慮了兩種電源方案:</p><p>  方案一:使用一個單獨的電源。這個方案的優(yōu)點是穩(wěn)定,可靠,并有多種電路可用;缺點是該模塊使用一個獨立的電源,

24、使系統(tǒng)復雜,有可能影響電路的電平。 </p><p>  方案二:采用單片機控制模塊提供電源。這個方案的優(yōu)點是,該系統(tǒng)簡潔,節(jié)約成本;缺點是,輸出功率不高。綜上所述,選擇第二種方案。</p><p>  1.4.2 顯示界面方案</p><p>  該系統(tǒng)需要完成倒計時功能。由于這些原因,這種設計考慮到兩種情況:方案一:完整的點陣LED顯示屏。這個功能強大的程序,可

25、以很方便的顯示各種英文字符,中國文字,圖形等,但要實現(xiàn)工作內容所需復雜和龐大的軟件數(shù)量。 方案二:完全采用數(shù)字顯示。利用該方案的簡單,可以完成倒計時功能。缺點是有較少的功能,只能顯示有限的數(shù)字符號和字符。按照設計要求,已滿足方案2的要求,所以這種設計使用了方案二來實現(xiàn)該系統(tǒng)的顯示功能。</p><p>  1.4.3 輸入方案</p><p>  這里同樣討論了兩種方案:</p>

26、;<p>  方案一:采用8155擴展I/O口、鍵盤及顯示等。這種解決方案的優(yōu)點是使用的靈活可編程的,并且具有RAM和計數(shù)器。如果使用此程序,這將提供更多的I / O端口,但操作稍微復雜一些。 </p><p>  方案二:直接連接到I/ O線的按鍵開關。因為旨在簡化和優(yōu)化電路,所以該端口資源的其余部分依然較多。 </p><p>  由于該系統(tǒng)是一個交通燈和數(shù)字化控制,只需

27、用單片機本身的I / O端口都可以實現(xiàn),而且計數(shù)器本身并具有足夠的RAM,因此選擇方案二。</p><p><b>  2 軟件部分</b></p><p>  2.1 Keil軟件簡介</p><p>  隨著單片機技術的發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā)的不斷發(fā)展,單片機的開發(fā)軟件也在不斷發(fā)展,KEIL軟件開發(fā)是目前最流行的M

28、CS -51系列單片機的軟件,這在最近的年,由各種模擬器廠商都宣布為Keil全力支持就可以看出。Keil C語言編譯器提供,其中包括一個完整的開發(fā)程序宏匯編器,鏈接器,庫管理和一個功能強大的調試器,模擬器等,通過一個集成開發(fā)環(huán)境( uVision中)這些部分組合在一起。需要的Keil軟件運行Pentium或更高的CPU ,16MB以上的RAM ,20M以上可用硬盤空間, WIN98 ,NT,WIN2000 ,WINXP等操作系統(tǒng)。掌握該

29、軟件的使用對于使用51系列的愛好者是非常必要的,如果您使用的是C語言編程,它幾乎是你的Keil選(目前在國內你只能買到該軟件,而你買的是模擬器也有可能只支持此軟件),即使不使用C語言和匯編語言編程而已,其易于使用的集成環(huán)境,強大的軟件仿真調試工具也會讓你事半功倍。</p><p>  2.2 Keil編程步驟及結果</p><p>  使用Keil軟件要編寫一個單片機程序,一般的步驟如下:

30、</p><p>  1)打開的Keil uVision3軟件,單擊菜單“項目 - >新建” - > uVisi上項目“,”創(chuàng)建一個新的項目文件。</p><p>  2)在彈出的對話框中,選擇項目文件的目錄,輸入項目文件名,比如“紅綠燈” ,然后單擊“保存”。</p><p>  3)然后在對話框中,選擇要使用的項目供應鏈管理模式。</p>

31、<p>  4)當單擊確定,彈出一個對話框會彈出詢問你要不要把標準8951的啟動代碼復制到項目目錄,并添加到項目中,通常會選擇“不”。</p><p>  5)然后點擊工具欄中的“新建文件”按鈕來創(chuàng)建一個新的源文件。</p><p>  6)單擊“保存”按鈕,保存新創(chuàng)建的源文件,如果是C語言源文件,文件名后綴“ C”的,如果它是一個編譯源文件,后綴“ A” ,如果語言是C頭文

32、件,后綴為“ H” 。</p><p>  在“源組1 ”的左側,然后單擊鼠標右鍵,在彈出的菜單中選擇“添加文件到Group'Source集團1 ” 。</p><p>  7)只需找到在對話框中創(chuàng)建的源文件,雙擊它,然后單擊“關閉” ,將源文件添加到項目中。</p><p>  8)然后就可以在右側的文本框的中間輸入程序。</p><p

33、>  9)然后,點擊下面的“配置閃存工具”中的“Flash ”菜單“進行一些編譯器設置。</p><p>  10)在對話框中,單擊“輸出”選項卡中,選擇“創(chuàng)建六角連接”“框向左,使其打勾,然后點擊”確定。 “</p><p>  11)的書面程序之后,在“Build目標”按鈕,單擊編譯程序,如果有錯誤,編譯下面的“輸出窗口”窗口時間是指哪一行的程序是什么錯誤。如果沒有錯誤,該生產(chǎn)線

34、是一個十六進制Hex文件格式,這個文件是程序的結果,把它用編程器進行編程,可以在單片機上運行你的程序。至此,就可以用Keil uVision3編寫出一段程序。下圖2.1就是本系統(tǒng)中單片機程序在Keil uVision3中編譯的畫面:</p><p>  圖2.1 keil軟件編譯畫面</p><p>  2.3 Proteus軟件簡介</p><p&

35、gt;  Proteus的ISIS開發(fā)由英國Labcenter公司的電路分析和物理模擬軟件。它運行在Windows操作系統(tǒng)上,可以仿真,分析(SPICE)和各種模擬集成電路,該軟件的特點是: </p><p> ?、賹崿F(xiàn)了單片機仿真和SPICE電路仿真相結合。與模擬電路仿真,數(shù)字電路仿真,仿真單片機及其外圍電路系統(tǒng),RS232動態(tài)仿真,I2C調試器,SPI調試器,鍵盤和LCD系統(tǒng)仿真能力;有各種虛擬儀器,如示

36、波器,邏輯分析儀,信號發(fā)生器。</p><p> ?、谥С帜M主流單片機系統(tǒng)。目前支持的單片機類型有:68000系列,8051系列,AVR系列,PIC12系列,PIC16系列,PIC18系列,Z80系列,HC11系列以及各種外圍芯片。</p><p> ?、厶峁┸浖{試。有完整的硬件仿真系統(tǒng),單步,設置斷點,和其他調試功能,并且可以觀察各個變量,寄存器等的當前狀態(tài),因此該軟件仿真系統(tǒng)也必須

37、具有這些功能;同時支持第三方軟件編譯和調試環(huán)境。 </p><p> ?、芫哂袕姶蟮脑韴D繪制功能??傊?,該軟件是在一個單一的芯片和SPICE仿真軟件,功能極其強大。</p><p>  2.4 Proteus使用步驟</p><p>  下面簡介紹一下Proteus在畫圖中的基本步驟: </p><p>  1)將被添加到所需要的

38、對象選擇窗口組件。 </p><p>  單擊對象選擇器按鈕,彈出“選擇設備”頁,在“關鍵字”中輸入STC89C52,系統(tǒng)會搜索數(shù)據(jù)庫中查找的對象,并且搜索結果會顯示在“結果”。在列表中項目“結果”列中,雙擊“STC89C52”,可以是“STC89C52”添加到對象選擇窗口。同樣,你可以添加7SEG-COM-陰極,按鈕,蜂鳴器,CAP,RES,LED-綠色成分這樣的對象。如果單擊STC89C52,在預覽

39、窗口中,見到STC89C52的實物圖;如果單擊RES或7SEG-COM-陰極,在預覽窗口中,看到了RES和7SEG-COM-陰極實物圖。在這一點上,我們注意到在組件按鈕,在繪圖工具欄上的選擇。</p><p>  2)把元器件放置至圖形編輯窗口 </p><p>  在對象選擇器窗口中,選中7SEG-COM-CATHODE,將鼠標置于圖形編輯窗口該對象的欲放位置、單擊鼠標左鍵,該

40、對象被完成放置。同理,將STC89C52和RES等放置到圖形編輯窗口中。 </p><p>  如果你需要移動物體的位置,將鼠標移到該對象,單擊鼠標右鍵,然后可以已經(jīng)看到,該對象的顏色已變?yōu)榧t色,表明該對象已被選中,按下鼠標左鍵,拖動鼠標,將對象到新的位置后,松開鼠標即可完成移動操作。 </p><p>  由于電阻器和相同的許多型號的電阻值,因此,使用復印功能的可繪制。將鼠標移

41、到R1,單擊鼠標右鍵,選擇R1,在標準工具欄中,單擊復制按鈕,拖動鼠標,按下鼠標左鍵將對象復制到新的位置,依此類推,直到你按下鼠標右鍵,結束復制。在這一點上我們已經(jīng)注意到,電阻名稱標識,系統(tǒng)會自動區(qū)分。</p><p>  3)總線放置至圖形編輯窗口 </p><p>  單擊繪圖工具欄總線上的按鈕,這樣被選中。將光標置于圖形編輯窗口中,單擊鼠標左鍵以確定總線的起始位置;移動鼠標

42、,屏幕上出現(xiàn)了薄薄的粉紅色線,找到巴士的終點位置,單擊鼠標左鍵,然后單擊鼠標右鍵,確認并退出畫總線操作。此后,粉紅色改為筆直粗的藍色。</p><p>  4)各種元器件之間的連線 </p><p>  當要畫線變形智能可自動檢測??梢詫⒔?jīng)營電阻器R1連接到LED顯示A側的右端。當附近的連接點R1,隨著鼠標指針的右端鼠標指針將是一個“×”號表示找到一個連接點R1,單擊鼠

43、標左鍵,移動鼠標(不拖動鼠標),鼠標LED顯示屏在附近的連接點,用鼠標指針末端的指針將是一個“×”號表示找到一個連接點LED顯示屏,一個粉紅色的屏幕上同時連接,單擊鼠標左鍵,粉紅色線插入深綠色,而用直線自動變成90度折線,這是因為選擇了在線自動路徑功能。</p><p>  變形桿菌具有在線自動路徑功能(簡稱WAR),當選中兩個連接點后,WAR將選擇一個合適的路徑連線。WAR通過使用標準工具欄中的“WA

44、R”命令按鈕來打開或關閉,可以在菜單欄中的找到“工具”圖標。同樣,野可以完成其他連接。這個過程在任何時候,可以按ESC鍵或者右鍵單擊鼠標畫一條線就可以放棄了。</p><p>  5)元器件與總線之間的連線 </p><p>  當畫線的時候為了和一般的導線區(qū)分開來,一般喜歡畫一條線來表示分支線。在這一點上,需要決定的對齊路徑,只需要單擊鼠標左鍵拐點。</p>&l

45、t;p>  6)給與總線連接的導線貼標簽 </p><p>  單擊繪圖工具欄中的導線標簽按鈕,使之處于選中狀態(tài)。將鼠標置于圖形編輯窗口的欲標標簽的導線上,跟著鼠標的指針就會出現(xiàn)一個“×”號。表明找到了可以標注的導線,單擊鼠標左鍵,彈出編輯導線標簽窗口。  </p><p>  7)在“string”欄中,輸入標簽名稱(如a),單擊“OK”按鈕

46、,結束對該導線的標簽標定。同理,可以標注其它導線的標簽。注意,在標定導線標簽的過程中,相互接通的導線必須標注相同的標簽名。至此,便完成了整個電路圖的繪制。</p><p>  3 交通信號燈控制系統(tǒng)的設計</p><p>  交通信號燈由紅燈、綠燈、黃燈組成。紅燈表示禁止通行,綠燈表示準許通行,黃燈表示警示。交通信號燈分為機動車信號燈、非機動車信號燈、人行橫道信號燈、車道信號燈、方向指示信

47、號燈、閃光警告信號燈、道路與鐵路平面交叉道口信號燈。交通信號燈用于道路平面交叉路口,通過對車輛、行人發(fā)出行進或停止的指令,使各同時到達的人、車交通流盡可能減少相互干擾,從而提高路口的通行能力,保障路口暢通和安全。因此必須合理的設計路口主干道的系統(tǒng)。</p><p>  3.1 十字路口交通信號燈具體的控制要求</p><p>  1) 交通信號燈分布于東南西北,每個路口均有三個。南北方向綠

48、燈和東西方 向的綠燈不能同時亮;如果同時亮,則應自動立即關閉信號燈系統(tǒng),并立即發(fā)出報警信號。系統(tǒng)工作后,首先南北紅燈亮并維持30s;與此同時,東西綠燈亮,并維持25s時間,到25s時,東西綠燈熄滅。在東西綠燈熄滅時,東西黃燈亮并維持5s,然后東西黃燈熄滅,東西紅燈亮,同時南北紅燈熄滅,南北綠燈亮;東西紅燈亮并維持30s;與此同時,南北綠燈亮并維持15s;然后,南北綠燈熄滅南北綠燈熄滅時,南北黃燈亮維持5s后熄滅;同時南北紅燈亮,東西綠燈

49、亮。至此,結束一個工作循環(huán),如下圖3.1交通信號燈變化表。</p><p>  表3.1 交通信號燈變化表 </p><p>  2)在交通信號燈亮和閃爍的同時,路口設有兩位七段碼的顯示器倒數(shù)計時,讓車輛行人能夠清楚地知道再過多久信號燈就會發(fā)生變化。以便于司機和行人能夠在有限的時間內準確的通行。</p><p>  3.2十字路口交通信號燈示意圖</p

50、><p>  交通信號燈共有12盞,每個路口各有紅,黃,綠三盞,具體分布如下圖3.2所示:</p><p>  圖3.2 紅綠黃燈示意圖</p><p>  4 交通信號燈控制系統(tǒng)程序編制</p><p>  4.1軟件設計應用環(huán)境</p><p>  本設計軟件的設計是在Keil C51的環(huán)境下編譯的。Keil C51

51、是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。C語言有以下特點:</p><p>  1)語言簡潔、緊湊、使用方便、靈活。C語言

52、一共只有32個關鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。</p><p>  2)運算符豐富。C的運算符包含的范圍很廣泛,共有34種運算符,使得C的運算類型極其豐富,表達式類型多樣化,靈活使用各種運算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運算。</p><p>  3)數(shù)據(jù)結構豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結構,能用來實現(xiàn)各種復雜的數(shù)據(jù)結構的運算。<

53、;/p><p>  4)具有結構化的控制語句,用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化。</p><p>  5)語法限制不太嚴格,程序設計自由度大。</p><p>  6)C語言能進行位操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。因此,C既具有高級語言的功能,又具有低級語言的許多功能,可用來寫系統(tǒng)軟件。C語言的這種雙重性,使它既是成功的系統(tǒng)描述語

54、言,又是通用的程序設計語言。</p><p>  7)生成目標代碼質量高,程序執(zhí)行效率高。</p><p>  8)用C語言寫的程序可移植性好。基本上不用修改就能用于各種型號的計算機和各種操作系統(tǒng)。</p><p>  9)對操作系統(tǒng)和系統(tǒng)實用程序以及需要對硬件進行操作的場合,用C語言明顯地優(yōu)勢于其他高級語言,有的大型應用軟件也用C語言來編寫。</p>

55、<p>  4.2 軟件設計流程</p><p>  軟件總體設計主要完成各部分的軟件控制和協(xié)調。本系統(tǒng)主程序模塊主要完成的工作是對系統(tǒng)的初始化,發(fā)送顯示數(shù)據(jù),同時對鍵盤進行掃描,等待外部中斷,以及根據(jù)所需要的功能進行相應的操作。</p><p>  交通燈根據(jù)其顯示情況可以分為四個狀態(tài),可以通過定時來控制每個狀態(tài)的時間;通過定時也可以向LED數(shù)碼管中每隔1秒送一個數(shù),顯示該狀

56、態(tài)剩余的時間,其流程圖如圖4.1所示。</p><p>  圖4.1 軟件設計流程圖</p><p>  圖4.2 交通燈運行狀態(tài)圖</p><p>  4.3交通燈定時器模塊</p><p>  STC89C52單片機內部有3個定時器T0,T1和T2,本次設計中使用T0工作在方式1,即16位定時器,定時50ms,20次中斷產(chǎn)生秒信號,從而

57、控制紅綠燈的點亮時間。</p><p>  工作方式寄存器TMOD用來設置T0、T1的工作方式。這次實習中設置TMOD=0x01,即T0工作于方式0(16位定時器)。</p><p>  內部定時器/計數(shù)器用作定時器時,是對機器周期計數(shù),每個機器周期的長度是12個振蕩周期。定時常數(shù)的設置可用一下方式計算:</p><p>  機器周期=12/12MHz=1us (6

58、5536-定時常數(shù))*1.0us=50ms,所以定時常數(shù)是50000。</p><p>  /*********************定時器0、定時器1初始化******************/</p><p>  void time0_init() </p><p><b>  {</b></p><p>  

59、EA = 1; //開總中斷</p><p>  TMOD = 0X11; //定時器0、定時器1工作方式1</p><p>  ET0 = 1; //開定時器0中斷 </p><p>  TR0 = 1; //允許定時器0定時</p><p>  //ET1 = 1; //開定時器1中斷 </p>

60、;<p>  //TR1 = 1; //允許定時器1定時</p><p><b>  }</b></p><p>  4.4 交通燈顯示模塊</p><p>  //數(shù)碼管段選定義 0 1 2 3 4 56 7 8 9</p><p>  uchar

61、 code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,</p><p>  // AB C D E F不顯示</p><p>  0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼</p><p>  uchar dis

62、_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};</p><p>  uchar smg_i = 4; //顯示數(shù)碼管的個位數(shù)</p><p><b>  //數(shù)碼管位選定義</b></p><p>  sbit smg_we1 = P2^0; //數(shù)碼管位選定義</

63、p><p>  sbit smg_we2 = P2^1;</p><p>  sbit smg_we3 = P3^6;</p><p>  sbit smg_we4 = P3^7;</p><p>  char dx_s = 0;//東西 南北 倒計時變量</p><p>  sbit dx_red = P2^4

64、; //東西紅燈</p><p>  sbit dx_green = P2^3;//東西綠燈</p><p>  sbit dx_yellow = P2^2;//東西黃燈</p><p>  sbit nb_red = P2^7;//南北紅燈</p><p>  bit nb_green = P2^6;//南

65、北綠燈</p><p>  sbit nb_yellow = P2^5;//南北黃燈</p><p>  uchar flag_jtd_mode; //交通燈的模式 根據(jù)時間 </p><p>  bit flag_1s = 0;</p><p>  bit flag_500ms;</p><p>  bit

66、flag_dx_nb; //東西南北模式</p><p>  uchar flag_5m_value;</p><p><b>  uchar i;</b></p><p>  uchar flag_alarm;//模式</p><p>  uchar dx_time = 30,nb_time = 20; //

67、東西、南北的時間</p><p>  uchar flag_jdgz ; //交通管制</p><p>  4.5 Proteus仿真結果</p><p>  圖4.3 電路仿真圖</p><p><b>  5 結論</b></p><p>  本論文設計了一種基于STC89C52單

68、片機的交通燈的方法,完成了系統(tǒng)的軟件設計與編譯,詳細闡述了系統(tǒng)軟件部分設計的過程,并結合硬件系統(tǒng)完成了整個系統(tǒng)的軟、硬件調試,系統(tǒng)工作良好,實現(xiàn)了交通信號燈的基本功能,但也有一些不足之處,由于時間蒼促本設計未能設計完成可以根據(jù)人流量自動轉換紅綠燈的智能感應系統(tǒng)部分。</p><p>  本設計是通過編寫C語言程序然后通過keil軟件達到了交通信號燈的基本功能。經(jīng)過這次畢業(yè)設計,我在各方面都有很大的提高。學到了很多

69、不曾學過的東西,也使我學會了更好地利用一些資源和工具如圖書館及一些軟件查閱資料。在設計過程中也遇到很多的困難,遇到一些原理性不懂的時候就要去有針對性地查找資料或者請教知道老師和其他同學,然后加以吸收利用,提高了自己的應用能力,擴充了自己的知識儲備,同時提高了動手能力。更重要的是明白了面對社會的挑戰(zhàn),我們應該學習加以實踐。</p><p><b>  致謝</b></p><

70、;p>  本論文是在吳國輝老師的悉心教導下完成的導師淵博的專業(yè)知識、嚴謹?shù)闹螌W態(tài)度,精益求精的工作作風,誨人不倦的高尚師德,嚴于律己、寬以待人的崇高風范,樸實無法、平易近人的人格魅力對本人影響深遠。不僅使本人樹立了遠大的學習目標、掌握了基本的研究方法,還使本人明白了許多為人處事的道理。時光匆匆如流水,轉眼便是大學畢業(yè)時節(jié)。從當初的稚氣未脫到如今的成熟老練,四年的大學磨練了我們?;厥淄ィ谖覀兂砷L的道路上有很多幫助過我們的人,有我

71、們可敬可愛的師長也有我們一起奮斗的同學,當然還有我們的父母。感謝你們的一路陪伴,感謝你們的一路相隨。</p><p><b>  參考文獻</b></p><p>  [1]  陳大欽. 電子技術基礎實驗[M]. 北京:高等教育出版社2004 </p><p>  [2]  陳梓城. 電子技術實訓[M].北京:機械

72、工業(yè)出版社2003 </p><p>  [3]  吳黎明. 單片機原理及應用技術[M].北京:科學出版社 2003 </p><p>  [4]  李學海. 標準80C51單片機基礎教程[M].北京:北京航空航天大學出版社2006 </p><p>  [5]  劉樂善. 微型計算機接口技術及應

73、用[M].北京:華中科技大學出版社2004 </p><p>  [6]  陳炳權. 曾慶六.EDA技術實用教程[M].北京:湘潭大學出版社2010 </p><p>  [7]  先鋒工作室. 單片機程序實例[M].北京:清華大學出版社2002. </p><p>  [8]  李伯成. .基于MCS-5

74、1單片機的嵌入式系統(tǒng)的設計[M].北京:電子工業(yè)出版社2004.</p><p>  [9]  吳洪潭. 肖艷萍. 趙偉國. 單片機原理及應用系統(tǒng)設計[M].北京:國防工業(yè)出版社2005. </p><p>  [10] 吳黎明. 王桂棠. 洪添勝等.單片機原理及應用技術[M].北京:科學出版社2005. </p><p>  [11]

75、 韓克. 柳秀山.等.電子技能與EDA技術[M].廣州:暨南大學出版社2004. </p><p>  [12] 周潤景.張麗娜. 基于PROTEUS的電路單片機系統(tǒng)設計與仿真[M].北京:航空航天大學版出社2006 </p><p>  [13]  沙占友. 孟志永. 王彥朋.單片機外圍電路設計,電子工業(yè)出版社2006.6 </p>

76、<p>  [14]  張齊. 杜群貴. 單片機應用系統(tǒng)設計技術,電子工業(yè)出版社2004.8 </p><p>  [15]  R.Kenjo and S.Nagamori.Permanent magnet and brushless,DC motors Tokyo:Sogo.1984,96 &

77、lt;/p><p>  [16]  Jong Sun Ko.A robust.Digital position control of brushless DC motor with dead beat load torqe observer.

78、 IEEE transaction on industrial electronics. </p><p><b>  實物圖</b></p><p><b>  PCB板反面焊腳圖</b></p><p><b>  PCB板反面接線圖</b>&l

79、t;/p><p><b>  正面圖</b></p><p><b>  正面圖</b></p><p><b>  附件一:源程序代碼</b></p><p>  #include <reg52.h> //調用單片機頭文件</p>&l

80、t;p>  #define uchar unsigned char //宏定義"uchar"代替"unsigned char"。</p><p>  #define uint unsigned int //宏定義"uint"用來定義無符號整型數(shù)。</p><p>  #include "eeprom52.

81、h"</p><p>  /***********************數(shù)碼位選函數(shù)*****************************/</p><p>  void smg_we_switch(uchar i)</p><p><b>  {</b></p><p><b>  switc

82、h(i)</b></p><p><b>  {</b></p><p>  case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;</p><p>  case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1;

83、smg_we4 = 1; break;</p><p>  case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;</p><p>  case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break;</p><p&g

84、t;<b>  }</b></p><p><b>  }</b></p><p>  /******************把數(shù)據(jù)保存到單片機內部eeprom中******************/</p><p>  void write_eeprom()</p><p><b> 

85、 {</b></p><p>  SectorErase(0x2000);</p><p>  byte_write(0x2000, dx_time);</p><p>  byte_write(0x2001, nb_time);</p><p>  byte_write(0x2058, a_a);</p><

86、;p><b>  }</b></p><p>  /******************把數(shù)據(jù)從單片機內部eeprom中讀出來*****************/</p><p>  void read_eeprom()</p><p><b>  {</b></p><p>  dx_tim

87、e = byte_read(0x2000);</p><p>  nb_time = byte_read(0x2001);</p><p>  a_a = byte_read(0x2058);</p><p><b>  }</b></p><p>  /**************開機自檢eeprom初始化*

88、****************/</p><p>  void init_eeprom() ///開機自檢eeprom初始化</p><p><b>  {</b></p><p>  read_eeprom();//先讀</p><p>  if(a_a != 1)//新的單片機初始單片機內問eeprom&

89、lt;/p><p><b>  {</b></p><p><b>  a_a = 1;</b></p><p>  dx_time = 30;</p><p>  nb_time = 20; //東西、南北的時間</p><p>  write_eeprom(); /

90、/保存數(shù)據(jù)</p><p><b>  }</b></p><p><b>  }</b></p><p>  /********************************************************************</p><p>  * 名稱 : delay_

91、1ms()</p><p>  * 功能 : 延時1ms函數(shù)</p><p><b>  * 輸入 : q</b></p><p><b>  * 輸出 : 無</b></p><p>  *******************************************************

92、****************/</p><p>  void delay_1ms(uint q)</p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=0;i<q;i++)</p><p> 

93、 for(j=0;j<110;j++);</p><p><b>  }</b></p><p>  /********************************************************************</p><p>  * 名稱 : display()</p><p>  

94、* 功能 : 數(shù)碼管顯示</p><p><b>  * 輸入 : 無</b></p><p><b>  * 輸出 : 無</b></p><p>  ***********************************************************************/</p>&

95、lt;p>  void display()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=0;i<smg_i;i++)</p><p><b>  {</b></p>

96、<p>  P0 = 0xff; //消隱 </p><p>  smg_we_switch(i); //位選</p><p>  P0 = dis_smg[i]; //段選 </p><p>  delay_1ms(3);</p><p><b>  }</b></p

97、><p><b>  }</b></p><p>  /*********************交通燈處理函數(shù)*********************************/</p><p>  void jiaotongdeng_dis()</p><p><b>  {</b></p&g

98、t;<p>  if(flag_1s == 1)</p><p><b>  {</b></p><p>  flag_1s = 0;</p><p>  if(dx_s == 0)</p><p><b>  {</b></p><p>  if(flag_d

99、x_nb == 1)</p><p>  dx_s = nb_time; //南北時間</p><p><b>  else </b></p><p>  dx_s = dx_time; //東西時間</p><p>  flag_dx_nb = ~flag_dx_nb;</p><p>

100、<b>  }</b></p><p><b>  dx_s --;</b></p><p><b>  }</b></p><p>  dis_smg[0] = smg_du[dx_s % 10] ;</p><p>  dis_smg[1] = smg_du[dx_s /

101、10] ;</p><p>  dis_smg[2] = smg_du[dx_s % 10] ;</p><p>  dis_smg[3] = smg_du[dx_s / 10] ;</p><p>  /***********************南北時間*********************************/</p><p>

102、;  if(flag_dx_nb == 0) </p><p><b>  {</b></p><p>  if(dx_s > 5)</p><p><b>  {</b></p><p>  dx_red = 1; //滅 </p><p>  dx_gre

103、en =0;//亮</p><p>  dx_yellow = 1;//滅</p><p>  nb_red = 0; //亮 </p><p>  nb_green =1;//滅</p><p>  nb_yellow = 1;//滅</p><p>  flag_5m_value = 0;

104、</p><p>  }else if(dx_s <= 5) //當小于5秒時 黃燈要閃了</p><p><b>  {</b></p><p>  dx_red = 1; //滅</p><p>  dx_green =1; //滅</p><p>  nb_r

105、ed = 0; //亮</p><p>  nb_green =1; //滅</p><p>  nb_yellow = 1; //滅</p><p>  if(flag_500ms == 0)</p><p><b>  {</b></p><p>  dx_yellow

106、 = 0;//亮</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  dx_yellow = 1;//滅</p><p><b>  }<

107、/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /***********************東西時間*********************************/</p><p>  if(flag_dx_nb == 1)

108、 </p><p><b>  {</b></p><p>  if(dx_s > 5)</p><p><b>  {</b></p><p>  dx_red = 0; //亮</p><p>  dx_green =1; //滅</p

109、><p>  dx_yellow = 1; //滅</p><p>  nb_red = 1; //滅</p><p>  nb_green =0; //亮</p><p>  nb_yellow = 1; //滅</p><p>  flag_5m_value = 0;</p&

110、gt;<p>  }else if(dx_s <= 5) //當小于5秒時 黃燈要閃了</p><p><b>  {</b></p><p>  dx_red = 0; //滅</p><p>  dx_green =1; //滅</p><p>  dx_yellow

111、 = 1; //滅</p><p>  nb_red = 1; //滅</p><p>  nb_green =1; //滅</p><p>  if(flag_500ms == 0) //黃燈閃爍</p><p><b>  {</b></p><p>  n

112、b_yellow = 0;//亮</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  nb_yellow = 1;//滅</p><p><b&

113、gt;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /********************獨立按鍵程序*****************/<

114、/p><p>  uchar key_can; //按鍵值</p><p>  void key() //獨立按鍵程序</p><p><b>  {</b></p><p>  static uchar key_new;</p><p>  key_can = 20;

115、 //按鍵值還原</p><p>  P1 |= 0x1f;</p><p>  if((P1 & 0x1f) != 0x1f)//按鍵按下</p><p><b>  {</b></p><p>  delay_1ms(1); //按鍵消抖動</p><p>  

116、if(((P1 & 0x1f) != 0x1f) && (key_new == 1))</p><p>  {//確認是按鍵按下</p><p>  key_new = 0;</p><p>  switch(P1 & 0x1f)</p><p><b>  {</b><

117、/p><p>  case 0x1e: key_can = 1; break; //得到按鍵值</p><p>  case 0x1d: key_can = 2; break; //得到按鍵值</p><p>  case 0x1b: key_can = 3; break; //得到按鍵值</p><p>  case 0x17

118、: key_can = 4; break; //得到按鍵值</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else </b></p>

119、;<p>  key_new = 1;</p><p><b>  }</b></p><p>  uchar menu_1,flag_s;</p><p>  /********************設置函數(shù)*****************/</p><p>  void key_with()<

120、;/p><p><b>  {</b></p><p>  if(key_can == 4) //交通管制按鍵</p><p><b>  {</b></p><p>  flag_jdgz ++;</p><p>  if(flag_jdgz > 5)</p&g

121、t;<p>  flag_jdgz = 0;</p><p>  if(flag_jdgz == 1) // 全部亮紅燈 </p><p><b>  {</b></p><p>  dx_red = 0; //亮 </p><p>  dx_green =1;//滅</p>

122、<p>  dx_yellow = 1;//滅</p><p>  nb_red = 0; //亮 </p><p>  nb_green =1;//滅</p><p>  nb_yellow = 1;//滅</p><p><b>  }</b></p><p&

溫馨提示

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

評論

0/150

提交評論