倪聞博
(陜西省西咸新區(qū)秦漢中學,陜西西安,712000)
紅綠燈在我們的日常生活中扮演著十分重要的角色,在大霧等低能見度天氣條件下,行人和駕駛人員的視線會受到更大的影響,嚴重時甚至會導致交通事故的發(fā)生?,F(xiàn)在使用范圍較廣的是單一的指示燈進行視覺提醒,本設計在以往常規(guī)的紅綠燈基礎上加入預警裝置,可以進一步保證惡劣天氣下的交通安全,降低安全隱患。
本設計通過AT89C51 單片機驅(qū)動和控制系統(tǒng)中紅黃綠燈的交錯顯示,設計的總體框架如圖1 所示。該系統(tǒng)主要由單片機、復位電路、時鐘電路、LED 燈和蜂鳴器等幾部分構成,其中,單片機、復位電路和時鐘電路構成了單片機的最小系統(tǒng),而系統(tǒng)中使用的AT89C51 單片機包含了32個IO 口,可用于控制十字路口兩組紅黃綠燈的交錯點亮和蜂鳴器的發(fā)聲。系統(tǒng)框圖如圖1 所示。
圖1 附有蜂鳴器紅綠燈系統(tǒng)硬件組成框圖
單片機最小系統(tǒng)包含復位電路、時鐘產(chǎn)生電路和電源。復位電路一般分為上電復位和按鍵復位兩種,本裝置采用的復合復位是將這兩種方式結合在一起的做法,本設計采用的復位電路具體如圖2[1]所示。復位電路的功能主要是:可以使CPU 及其它部件在開機時恢復到一個預設的初始狀態(tài),同時復位電路還可以在單片機死機時重新開始恢復正常工作。該設計所采用的復合復位其具體的工作原理是:通過將開關與復位電容并聯(lián),通過控制開關是否按下,從而使電容充放電為RST 引腳提供需要的復位電平值。
單片機的時鐘電路的目的是統(tǒng)一地控制單片機的微操作,為單片機提供基本的工作時鐘。單片機的時鐘產(chǎn)生方式分為內(nèi)部時鐘方式和外部時鐘方式,本設計采用了單片機的內(nèi)部時鐘方式,具體是通過一個12MHz 的晶體振蕩器和兩個33pF 的電容來實現(xiàn),具體連接方式如圖3 所示。
圖2 復位電路連接方式
圖3 時鐘電路連接方式
任何一個完整的系統(tǒng),都必須有一個穩(wěn)定的供電模塊,即電源模塊,這是系統(tǒng)能夠穩(wěn)定運行的基礎和前提。此外,本設計中采用的51 系列的單片機相比其他系列的單片機而言,更容易出現(xiàn)由于受到外部干擾而單片機內(nèi)部程序跑飛的問題。因此,為解決這一問題,需要給本設計配備一個穩(wěn)定的供電模塊,最終采用通過USB 接口來提供穩(wěn)定的電源電壓。
此外,本設計還采用了蜂鳴器來作為發(fā)聲裝置。蜂鳴器通常包含有源蜂鳴器和無源蜂鳴器兩種,其中,有源蜂鳴器內(nèi)部帶有可以發(fā)聲的振蕩器,即只要在有源蜂鳴器的兩端分別接上高低電平,蜂鳴器就會發(fā)出聲音;而無源蜂鳴器則需提供交變的信號才能實現(xiàn)發(fā)聲的功能。因此,本設計為簡化后續(xù)的程序設計采用有源蜂鳴器實現(xiàn),具體連接方式如圖4所示。設計中,此裝置連通單片機后可以在紅燈亮起時發(fā)出警報來提醒行人。
具體地,本設計采用的發(fā)聲系統(tǒng)包括三極管、分壓電阻和蜂鳴器構成,并由單片機的P1.6 引腳來控制三極管的導通和截止,三極管的一端通過上拉電阻R15 接高電平,三極管的另一端控制蜂鳴器發(fā)聲。工作時,當單片機的P1.6引腳輸出高電平時,三極管導通,蜂鳴器兩端分別連接高低電平,蜂鳴器發(fā)聲。同樣地,當單片機的P1.6 引腳輸出低電平時,三極管斷開,蜂鳴器的一端未通過上拉電阻接高電平,蜂鳴器不發(fā)聲。
圖4 發(fā)聲系統(tǒng)連接方式
Proteus 軟件是英國Labcenter electronics 公司開發(fā)的目前世界上最先進、最完整的嵌入式系統(tǒng)設計與仿真平臺軟件,該軟件可以在windows 系統(tǒng)上正常運行,主要用于模擬器件和集成電路的仿真與分析。同時,該軟件還包含了信號發(fā)生器、虛擬示波器等硬件開發(fā)工具[2]。它支持許多主流的單片機的調(diào)試和仿真,例如本文的AT89C51 單片機,因此,受到了國內(nèi)許多單片機愛好者、教師和科技工作者的青睞。
Keil 是德國的一個單片機開發(fā)平臺,運行基礎可以是32 位windows 環(huán)境,支持C 語言,它的強大的軟件仿真功能使得它受到許多片機愛好者、教師和科技工作者的喜愛。目前,keil 公司推出的C51 編譯器已經(jīng)被完全集成到一個功能強大的全新集成開發(fā)環(huán)境中,具體包括項目管理、連接定位、項目管理等,并且可以與proteus 原理圖進行聯(lián)機仿真,為單片機的開發(fā)帶來極大方便[3]。
Proteus 和keil 軟件可以實現(xiàn)聯(lián)合編程,在keil 軟件上編寫源程序,在proteus 軟件上進行電路的設計,再將keil 中的源程序加載到proteus 的單片機上,就可以在proteus 中進行仿真。
圖5 是本設計最終采用的proteus 原理圖,本系統(tǒng)使用了紅色、綠色和黃色的LED 燈、蜂鳴器、三極管以及電容等元器件。
圖5 proteus 設計圖
圖6
本程序的設計思想是:首先,東西方向綠燈亮,南北方向的紅燈亮,并伴隨蜂鳴器發(fā)聲提醒,蜂鳴器發(fā)聲十次;然后,東西方向綠燈變成黃燈,黃燈閃爍十次,南北方向依然是紅燈亮;接著,東西方向紅燈亮,南北方向綠燈亮;最后,東西方向紅燈亮,南北方向黃燈閃爍十次,并伴隨蜂鳴器發(fā)聲提醒,并依次循環(huán)。上述更換過程中,每次綠燈與紅燈轉(zhuǎn)換之間都會有黃燈閃爍十次,而在每次黃燈變成紅燈時,蜂鳴器都會發(fā)出聲音提醒行人。
根據(jù)上述思想編寫的程序如下:
上述設計具體的執(zhí)行過程為:首先,根據(jù)設計思想,先編寫源程序,并在keil 軟件中存儲為.c 文件;將源程序書寫完畢后,點擊keil 軟件中的translate 按鈕編譯源程序,編譯信息顯示程序沒有錯誤,如圖7 所示[4]。接著,在Keil軟件內(nèi),最終會生成一個.hex 文件,將這個生成的.hex可執(zhí)行文件加載到proteus 軟件中的單片機內(nèi),并且點擊proteus 軟件中的運行按鈕,便能觀測設計系統(tǒng)的仿真結果。
圖7 程序編譯圖
附有蜂鳴器紅綠燈系統(tǒng)的東西向通行仿真效果如圖8所示。圖中,東西向為綠燈,南北向為紅燈,此時蜂鳴器發(fā)聲系統(tǒng)接高電平,蜂鳴器發(fā)聲。
附有蜂鳴器紅綠燈系統(tǒng)的東西向黃燈閃爍運行效果如圖9 所示,圖中,東西向黃燈閃爍,南北向紅燈點亮,此時蜂鳴器發(fā)聲系統(tǒng)未接高電平,蜂鳴器不發(fā)聲。
圖8 東西向通行模擬效果圖
圖9 東西向黃燈慢行模擬效果圖
附有蜂鳴器紅綠燈系統(tǒng)南北向通行模擬效果如圖10 所示。圖中,南北向綠燈點亮,東西向紅燈點亮,此時蜂鳴器發(fā)聲系統(tǒng)接高電平,蜂鳴器發(fā)聲。
圖10 南北向通行模擬效果圖
本文使用proteus 軟件設計了使用AT89C51 作為控制的核心的紅綠燈系統(tǒng),并且利用keil 軟件使用C 語言進行源代碼的編程,最后將其生成的.hex 文件加載到單片機上,實現(xiàn)了proteus 與keil 的聯(lián)合編程。再利用proteus 仿真成功,證明本設計是合理可行的。本設計具有性價比高、功能可靠、結構簡單的特點,對比傳統(tǒng)的紅綠燈多出了蜂鳴器,提高了行人在大霧天氣或者霧霾天氣駕車的安全系數(shù)。