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

下載本文檔

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

文檔簡介

1、專業(yè)課程設(shè)計基于51單片機的交通燈設(shè)計 組員: 蔡余敏 、覃珍 、李海浪、于小艷 (按字母順序) 學(xué)院: 電氣工程學(xué)院 班級: 10自動化3班 指導(dǎo)教師: 王彩霞摘 要交通信號燈是城市交通安全、有序、快速運行的重要保障。本文提出了一種基于單片機的交通信號燈控制系統(tǒng)的設(shè)計方案。該系統(tǒng)模擬現(xiàn)實中十字路口的通行指示,倒計時和緊急車輛強行通過等功能。采用stc89c52芯片為中心器件來設(shè)計交通燈控制電路,結(jié)合七段共陰極數(shù)碼管顯示時間的模塊,交通燈顯示模塊,晶振電路,復(fù)位電路以及按鍵電路等模塊組成。通過軟件仿真與硬件調(diào)試,實現(xiàn)紅、黃、綠燈燃亮?xí)r間以及雙位數(shù)碼管顯示倒計時,三種顏色燈交替點亮以及緊急情況下

2、的中斷處理功能。本系統(tǒng)性價比高,實用性強,操作簡單,功能全面,有廣泛的應(yīng)用前景。關(guān)鍵詞:交通信號燈;stc89c52單片機;緊急通行;中斷處理 abstractthe traffic lights are an important guarantee of city traffic safety, order and rapid running. this paper presents a design scheme of traffic signal lamps control system, which is based on mcu. the system simulates the f

3、unctions of the traffic indication, counting down and emergency vehicles passing at real crossroads. stc89c52 chip device is used as the center device to design the traffic lights control circuit, combined with common cathode seven segments digital tube display time module, traffic lights display mo

4、dule, crystals circuit, reset circuit and key circuit modules. by software simulation and hardware debugging, the functions have been achieved, which include red, yellow, and green lights brightening, on-off digital tube displaying time countdown, as well as 3 kinds of color lamps lightening alterna

5、tely and interrupt processing function of emergencies. this system is cost-effective, strong practicability, simple operation, fully functional. it has a broad application prospect.key words: traffic signal lamp; mcu stc89c52; emergency access; interrupt processing目 錄摘要- 1 -(一)總體設(shè)計思路- 4 -1.1設(shè)計背景- 4

6、-1.2 設(shè)計目的及思路- 6 -1.2.1 設(shè)計目的- 6 -1.2.2 設(shè)計思路- 6 -1.3 交通燈顯示時序及狀態(tài)轉(zhuǎn)換的理論分析- 7 -(二)方案比較、設(shè)計與論證- 7 -2.1 總體設(shè)計方案- 7 -2.2 控制模塊選擇方案- 8 -2.3 電源模塊方案- 9 -2.4顯示界面方案- 9 -2.4.1 倒計時顯示界面方案- 9 -2.4.2 狀態(tài)燈顯示- 9 -(三)硬件設(shè)計- 10 -3.1系統(tǒng)總體硬件方案論證- 10 -3.2 stc89c52rc單片機簡介- 11 -3.3單片機最小系統(tǒng)- 15 -3.3.1 時鐘電路- 15 -3.3.2.復(fù)位電路- 16 -3.4 顯示電

7、路- 17 -3.5緊急通車電路模塊- 18 -3.6 總電路圖- 19 -3.7各元器件選擇及其功能介紹- 21 -(四)軟件設(shè)計- 22 -4.1 程序流程圖- 22 -4.1.1程序總流程圖- 22 -4.2具體程序- 23 -(五)結(jié)果分析- 35 -5.1軟件仿真與結(jié)果分析- 35 -5.1.1.proteus的仿真結(jié)果- 35 -5.1.2各狀態(tài)仿真結(jié)果- 36 -5.1.3.紅綠燈狀態(tài)轉(zhuǎn)換過程:- 39 -5.2硬件調(diào)試與結(jié)果分析- 41 -(六)總結(jié)- 43 -(七)參考文獻- 44 -(八)附錄- 46 -(一)總體設(shè)計思路1.1設(shè)計背景自從1858年英國人,發(fā)明了原始的機械

8、扳手交通燈之后,隨后的一百多年里,交通燈改變了交通路況,也在人們?nèi)粘I钪姓紦?jù)了重要地位,隨著人們社會活動日益增加,經(jīng)濟發(fā)展,汽車數(shù)量急劇增加,城市道路日漸擁擠,交通燈更加顯示出了它的功能,使得交通得到有效管制,對于交通疏導(dǎo),提高道路導(dǎo)通能力,減少交通事故有顯著的效果。今天,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍兩色的機械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩塊以旋轉(zhuǎn)式方形玻璃

9、提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。1914年,電氣啟動的紅綠燈出現(xiàn)在美國。這種紅綠燈由紅綠黃三色圓形的投光器組成,安裝在紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,當車輛接近時,紅燈便變?yōu)榫G燈;另一種是用擴音器來啟動紅綠燈,司機遇紅燈時按一下喇叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發(fā)生交通事故。信號燈的出現(xiàn)

10、,使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國道路交通和道路標志信號協(xié)定對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進入交叉路口。隨著經(jīng)濟的發(fā)展,交通運輸中出現(xiàn)了一些傳統(tǒng)方法難以解決的問題。道路擁擠現(xiàn)象日趨嚴重,造成的經(jīng)濟損失越來越大,并一直保持大比例的

11、增長。現(xiàn)在交通系統(tǒng)已不能滿足經(jīng)濟發(fā)展的需求。由于生活水平的提高,人們對交通運輸?shù)陌踩约胺?wù)水平提出了更高的要求。在交通中管理引入單片機交通燈控制代替交管人員在交叉路口服務(wù),有助于提高交通運輸?shù)陌踩?、提高交通管理的服?wù)質(zhì)量。并在一定程度上盡可能的降低由道路擁擠造成的經(jīng)濟損失,同時也減小了工作人員的勞動強度。 中國車輛數(shù)量不斷增加,交通控制在未來的交通管理中起著越來越重要的作用。智能交通燈的管理比重修一條馬路無論在經(jīng)濟、交通運行速率上都有很好的效益、更加節(jié)約資源。使交管人員有更多的精力投入到管理整個城市交通控制,帶來更大的經(jīng)濟和社會效益,為創(chuàng)造美好的城市交通形象發(fā)揮更多的作用。1.2 設(shè)計目的

12、及思路1.2.1 設(shè)計目的了解交通燈管理的基本工作原理,熟練掌握stc89c52的工作原理,熟悉stc89c52單片機并行接口的各種工作方式和應(yīng)用,并了解計數(shù)器/定時器的工作方式,掌握多位led顯示問題的解決。1.2.2 設(shè)計思路(1)分析目前交通路口的基本控制技術(shù)以及各種通行方案,并以此為基礎(chǔ)提出自己的交通控制的初步方案。(2)確定系統(tǒng)交通控制的總體設(shè)計,包括,十字路口具體的通行方案設(shè)計以及系統(tǒng)應(yīng)擁有的各項功能,在這里,本設(shè)計除了有信號燈狀態(tài)控制能實現(xiàn)基本的交通功能,還增加了倒計時顯示提示。(3)進行顯示電路,燈狀態(tài)電路的設(shè)計和對各器件的選擇及連接,大體分配各個器件及模塊的基本功能要求。(4

13、)進行軟件系統(tǒng)的設(shè)計,對于本系統(tǒng),本人采用c語言編寫程序,對單片機內(nèi)部結(jié)構(gòu)和工作情況做了充足的研究,了解定時器,中斷以及延時原理,總體上完成了軟件的編寫。1.3 交通燈顯示時序及狀態(tài)轉(zhuǎn)換的理論分析圖1所示為紅綠燈轉(zhuǎn)換的狀態(tài)圖。s2s1s4s3圖1 紅綠燈狀態(tài)轉(zhuǎn)換圖東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換。(二)方案比較、設(shè)計與論證2.1 總體設(shè)計方案 根據(jù)十字路口交通燈的要求,可將本系統(tǒng)分為三個模塊,第一模塊是控制模塊,主要負責(zé)整個系統(tǒng)的控制和運算,從而使各模塊正常工作

14、,第二個模塊式顯示模塊包括led燈和數(shù)碼管;第三是電源模塊,給各模塊提供電源,讓各模塊工作。其系統(tǒng)設(shè)計結(jié)構(gòu)如圖:圖2系統(tǒng)設(shè)計結(jié)構(gòu)圖2.2 控制模塊選擇方案方案一:由計數(shù)器74ls161級聯(lián)組成,配合譯碼器和秒脈沖信號發(fā)生器等器件組成交通燈系統(tǒng),整個系統(tǒng)簡單,控制簡單,調(diào)試容易等優(yōu)點。 方案二:采用單片機stc89c52作為控制器。單片機運算能力強,軟件編程靈活,自由度大。在指令系統(tǒng)、硬件結(jié)構(gòu)和片內(nèi)資源上與標準8052單片機完全兼容,使用時容易掌握;采用stc89c52單片機穩(wěn)定可靠、應(yīng)用廣泛、通用性強。方案比較:采用方案一來實現(xiàn)十字路口交通燈控制系統(tǒng)非常方便,電路結(jié)構(gòu)簡單,控制單一,但整個系統(tǒng)

15、性能不是很高,倒計時不是非常精確,如果要求系統(tǒng)能設(shè)置不同工作時間不容易,因而對于完成題目較困難,而方案二完全能實現(xiàn)設(shè)計要求,容易掌握,利于編程,易控制,i/o接口很多,易于擴展外圍電路,價格便宜,故選擇方案二。23 電源模塊方案為使模塊穩(wěn)定工作,須有可靠電源。因此考慮了兩種電源方案:方案一:采用獨立的穩(wěn)壓電源。此方案的優(yōu)點是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統(tǒng)復(fù)雜,且可能影響電路電平。方案二:采用單片機控制模塊提供電源,使用電池盒供電。該方案的優(yōu)點是系統(tǒng)簡明扼要,節(jié)約成本;缺點是輸出功率不高。綜上所述,我選擇第二種方案。24顯示界面方案2.4.1 倒計時顯示

16、界面方案該系統(tǒng)要求完成倒計時功能。只需顯示數(shù)字,基于上述原因,我考慮了二種方案:方案一:采用全數(shù)碼管顯示。這種方案只顯示有限的符號和數(shù)碼字符,簡單,方便。方案二:采用點陣式led 顯示。這種方案雖然功能強大,并可方便的顯示各種英文字符,漢字,圖形等,但實現(xiàn)復(fù)雜,且須完成大量的軟件工作。綜上所述,我選擇第一種方案,四個路口采用兩個二位共陰極數(shù)碼管。2.4.2 狀態(tài)燈顯示該系統(tǒng)要求完成狀態(tài)燈顯示的功能。求于要求簡單,我們把各個路口的紅燈、綠燈和黃燈設(shè)成直行和左拐兩個通行方式所共有,也就是說,一個路口只需三個狀態(tài)燈,一個共有的綠燈,一個共有的紅燈,一個共有的黃燈。如下圖3所示。北 b a a b 圖

17、3狀態(tài)燈顯示 (三)硬件設(shè)計3.1系統(tǒng)總體硬件方案論證本設(shè)計以單片機為控制中心,采用模塊化設(shè)計,共分以下幾個功能模塊:單片機控制系統(tǒng)、狀態(tài)顯示模塊、倒計時模塊、電源模塊。經(jīng)上述各模塊的方案選擇與論證,十字路口交通燈控制系統(tǒng)的控制芯片選用單片機stc89c52作為整個系統(tǒng)的核心控制器件,主要負責(zé)整個系統(tǒng)工作的控制和運算,從而使各模塊正常工作;采用七段led數(shù)碼管和led燈作為顯示器件,用七段led數(shù)碼管完成倒計時顯示,用led燈作為狀態(tài)燈指示功能;以電池組供電作為系統(tǒng)電源部分,可對各個模塊供電且便于演示。單片機作為整個硬件系統(tǒng)的核心,它既是協(xié)調(diào)整機工作的控制器,又是數(shù)據(jù)處理器。它由按鍵電路、復(fù)位

18、電路、晶振電路等組成。具體硬件框圖,如下圖所示。按鍵電路鍵盤led數(shù)碼管顯示 led指示燈 復(fù)位電路 晶振電路 單片機 電源電路 圖4 硬件設(shè)計框圖3.2 stc89c52rc單片機簡介stc89c52rc是stc89系列單片機中應(yīng)用較為廣泛的一種型號,芯片內(nèi)部有8kb的閃速存儲器flash rom。內(nèi)部的8kb存儲器用于存放可編程控制器監(jiān)控程序。 stc89c52rc單片機的40條引腳按功能來分,可以分為3部分,電源及時鐘引腳、控制引腳和輸入/輸出引腳。 圖5 89c52單片機引腳圖89c52單片機引腳功能介紹: 主電源及時鐘引腳 此類引腳包括電源引腳vcc、vss、時鐘引腳xtal1、xt

19、al2。 (1)vcc(40腳):接+5v電源,為單片機芯片提供電能。 (2)vss(20腳)接地。 (3)xtal1(18腳)在單片機內(nèi)部,它是一個反向放大器的輸入端,該放大 器構(gòu)成了片內(nèi)的振蕩器,可提供單片機的時鐘控制信號。 (4)xtal2(19腳)在單片機內(nèi)部,接至上述振蕩器的反向輸出端。控制引腳 此類引腳包括reset(即rsr/vpd)、ale、psen、ea,可以提供控制信號,有些具有復(fù)用功能。 (1)rsr/ vpd(9腳):復(fù)位信號輸入端,高電平有效,當振蕩器運行時,在此引腳加上兩個機器周期的高電平將使單片機復(fù)位(rest)。復(fù)位后應(yīng)使此引腳電平保持為不高于0.5v的低電平,

20、以保證單片機正常工作。 掉電期間,此引腳可接上備用電源(vpd),以保持內(nèi)部ram中的數(shù)據(jù)不丟失。當vcc下降到低于規(guī)定值,而vpd在其規(guī)定的電壓范圍內(nèi)(5±0.5v)時,vpd就向內(nèi)部ram提供備用電源。 (2)ale/prog(30腳):ale為地址鎖存允許信號。當單片機訪問外部存儲器時,ale(地址鎖存允許)輸出脈沖的下降沿用于鎖存16位地址的低8位。即使不訪問外部存儲器,ale端仍有周期性正脈沖輸出,其頻率為振蕩器頻率的1/6。但是每當訪問外部數(shù)據(jù)存儲器時,在兩個機器周期中ale只出現(xiàn)一次,即丟失一個ale脈沖。ale端可以驅(qū)動8個lsttl負載。 (3)psen(29腳):

21、程序存儲器允許輸出控制端。此輸出為單片內(nèi)訪問外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或取常數(shù))期間,每個機器周期均psen兩次有效。但在此期間,每當訪問外部數(shù)據(jù)存儲器時,這兩次有效的psen信號將不會出現(xiàn)。psen同樣可以驅(qū)動8個lsttl負載。 (4)ea(31腳):ea功能為內(nèi)外程序存儲器選擇控制端。當ea端保持高電平時,單片機訪問內(nèi)部程序存儲器,但在pc(程序計數(shù)器)值超過0fffh時將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序。 輸入/輸出引腳 此類引腳包括p0口、p1口、p2口和p3口。 (1)p0(p0.0p0.7)是一個8位三態(tài)雙向i/o口,在不訪積壓處部存儲器時,做通用i

22、/o口使用,用于傳送cpu的輸入/輸出數(shù)據(jù),當訪問外部存儲器時,此口為地址總路線低8位及數(shù)據(jù)總路線分時復(fù)用口,可帶8個lsttl負載。 (2)p1(p1.0p2.7)是一個8位準雙向i/o口(作為輸入時,口鎖存器置1),帶有內(nèi)部上拉電阻,可帶4個lsttl負載。 (3)p2(p2.0p2.7)是一個8位準雙向i/o口,與地址總路線高8位復(fù)用,可驅(qū)動4個lsttl負載。 (4)p3(p3.0p3.7)是一個8位準雙向i/o口,除此之外每位還具有第二功能。p3口功能表:表1 p3口功能表p3口各個位的第二功能p3口的位第二功能說明p3.0rxd串行數(shù)據(jù)接收口p3.1txd串行數(shù)據(jù)發(fā)射口p3.2in

23、t0外部中斷0輸入p3.3int1外部中斷1輸入p3.4t0計數(shù)器0計數(shù)輸入p3.5t1計數(shù)器1計數(shù)輸入p3.6wr外部ram寫信號p3.7rd外部ram讀信號stc89c52內(nèi)部結(jié)構(gòu)圖:圖6 stc89c52內(nèi)部結(jié)構(gòu)圖 3.3單片機最小系統(tǒng)3.3.1 時鐘電路圖7 時鐘電路圖 xtal1是片內(nèi)振蕩器的反相放大器輸入端,xtal2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到xtal1,而xtal2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12mhz,時鐘頻率就為6mhz。晶振的頻率可以在1mhz-24mhz內(nèi)選擇。電容取30pf左右。系統(tǒng)的時鐘電路設(shè)計是采用的內(nèi)部方式,即利

24、用芯片內(nèi)部的振蕩電路。at89單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器。引腳xtal1和xtal2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個自激振蕩器。外接晶體諧振器以及電容c1和c2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。對外接電容的值雖然沒有嚴格的要求,但電容的大小會影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為11mhz,電容應(yīng)盡可能的選擇陶瓷電容,電容值約為30f。在焊接刷電路板時,晶體振蕩器和電容應(yīng)盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。3

25、.3.2.復(fù)位電路 在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現(xiàn)在此引腿時,將使單片機復(fù)位,只要這個腳保持高電平,芯片便循環(huán)復(fù)位。復(fù)位后p0p3口均置1引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器sfr全部清零。復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳rst通過一個斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機器周期的s5p2,由復(fù)位電路采樣一次。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復(fù)位電路。復(fù)位電路如下圖所示: 圖8 復(fù)位電路圖3.4 顯示電路顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)的運行狀態(tài)和工作數(shù)

26、據(jù),點亮顯示器的方法有靜態(tài)和動態(tài)兩種。我們的用的是動態(tài),所謂動態(tài)顯示,就是輪流點亮各位顯示器,該方法只需一個8位段輸出口和一個8位掃描輸出,后者的作用是依次接通各位led。動態(tài)顯示需要較大驅(qū)動電流,故在輸出口尚需接加驅(qū)動器。顯示器的亮度既同驅(qū)動電流有關(guān),也同點亮?xí)r間與間隔時間的比例有關(guān)。調(diào)整電流和時間參數(shù),可實現(xiàn)亮度較高且較穩(wěn)定的顯示。顯示器(led數(shù)碼管)由7條線段圍成8字型,每一段包含一個發(fā)光二極管。外加正向電壓時二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號。led數(shù)碼管有共陽、共陰之分。本系統(tǒng)采用的是兩位共陰極數(shù)碼管。dp a b c d e f g

27、dp a b c d e f g c dp e d g a b d1 d2 f 1 2 3 4 5 10 9 8 7 6 p0.0 p0.1 p0.2 p0.3 p0.4 p0.5 p0.6 圖9 兩位共陰極數(shù)碼管引腳圖3.5緊急通車電路模塊 為了實現(xiàn)此功能,利用單片機中斷達到目的。利用一個手動按鈕開關(guān)接至單片機外部中斷0,同時在軟件設(shè)計時將其設(shè)定為最高優(yōu)先級,當其按下時,四方全為紅燈,當其計時完了之后,回到原來的位置進行執(zhí)行。再利用一個手動按鈕接至單片機外部中斷1當其按下時,如果是東西道是紅燈,而南北道是綠燈,則將其置為東西是綠燈,南北是紅燈;如果是東西道是綠燈,而南北道是紅燈,則將其置為東

28、西是紅燈,南北是綠燈。兩種情況都是執(zhí)行完后,回到斷點處繼續(xù)執(zhí)行。3.6 總電路圖 圖10 交通燈總原理圖(multisim軟件圖)總體接線說明:1. 交通信號燈指示電路部分,stc89c52芯片的p1.0p1.5(引腳16)接6個470的限流電阻,然后在依次分別接到南北方向的綠(上左下右)、黃(上中下中)、紅(上右下左),東西方向的綠(左下右上)、黃(左中右中)、紅(左上右下)色的led指示燈(共陽級接法); 2. stc89c52芯片的rst(引腳9)接復(fù)位電路; 3. 按鍵電路部分,stc89c52芯片的p3.0(rxd)、p3.1(txd)、p3.2()即引腳10、11、12分別接3個微

29、動開關(guān); 4. stc89c52芯片的xtal2、xtal1、vss,即引腳18、19、20接晶振電路; 5. stc89c52芯片的p2.0p2.3(引腳2124)接4個1k的電阻,然后分別接到4個三極管的基極b,集電極c均接地,4個發(fā)射極e分別依次接到東西方向數(shù)碼顯示器d1(引腳8)、d2(引腳7)和南北方向的數(shù)碼顯示器的d1(引腳8)、d2(引腳7); 6. stc89c52芯片的(引腳31)和復(fù)位電路的vcc相連; 7. 倒計時顯示部分,stc89c52芯片的p0.0p0.6(引腳3933)接7個470的電阻,然后均接到vcc電源端,同時stc89c52芯片的p0.0p0.6(引腳39

30、33)分別依次直接接到所有數(shù)碼顯示器的a、b、c、d、e、f、g(即引腳10、9、1、4、3、6、5),dp(引腳2)置空; 8. stc89c52芯片的vcc (引腳40)接電源正極,所有接地。3.7各元器件選擇及其功能介紹表2:元器件列表 序號 元件名稱 型號 數(shù)量/個 用途 1 單片機 89c52 1 控制核心2晶振 11mhz 1 晶振電路 3 電容 30pf 2 晶振電路 4 電解電容 10uf 1 復(fù)位電路 5 電阻 10k 1 復(fù)位電路 6 發(fā)光二極管 led 12 紅、黃、綠燈 7 usb數(shù)據(jù)線 1 接入電源 8 電阻 470 6 led 9 電阻 470 7 數(shù)碼管電路 10

31、 電阻 1k 4數(shù)碼管驅(qū)動 11數(shù)碼管 gc-3461bs 2 顯示電路 12 按鍵 4 按鍵電路 13 三極管pnp 8550 4 數(shù)碼管驅(qū)動電路 14 電池盒 5#干電池 3 提供電源(四)軟件設(shè)計開始 初始化初值函數(shù) init () 鍵盤掃描keys can() 顯示程序 display () y tr00, tr10 p0table 9, p20 key! =0 key=1 y n y key=2 南北方向 p10xf3 n y key!=0 鍵盤掃描keys can() t0400 y p10xde y y p10xdd n n 400t0460 tr01 tr11 460t0920

32、0 n y y p10xeb t1>860 p10xf3 n 東西方向 p10xde 4.1 程序流程圖4.1.1程序總流程圖圖11 交通燈程序總流程圖本設(shè)計采用c語言進行軟件編程。文件中包含了初始化函數(shù)init()、顯示函數(shù)display()、鍵盤掃描keys can()、中斷處理timer0() interrupt 1和延時delay()等子程序塊;主函數(shù)通過直接或間接的調(diào)用各個子程序塊,使整個交通信號燈控制系統(tǒng)實現(xiàn)紅、黃、綠燈燃亮?xí)r間以及雙位數(shù)碼管顯示倒計時,三種顏色燈交替點亮以及緊急情況下的中斷處理功能。各個子程序塊見附錄。4.2具體程序#include<reg52.h&g

33、t;#define uint unsigned int#define uchar unsigned char#define on 0#define off 1sbit g1=p10;sbit y1=p11;sbit l1=p12;sbit g2=p13;sbit y2=p14;sbit l2=p15;uchar num,num1,key,a,b,c,d;uint t0,t1;/*t0,t1,要大于255!*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x

34、71,0;/*uchar code table=0xf9,0xdb,0xa4,0xb0,0x80,0x90,0x88,0x83, 0x99,0x92,0x82,0xf8,0xc6,0xa1,0x86,0x8e,0xff;*/void init(); /初值函數(shù)void display(uchar a,uchar b,uchar c,uchar d);/顯示程序void keyscan();void delay (uint z) /延時函數(shù)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void main()init();while(1)displ

35、ay(a,b,c,d);keyscan();if(key) /如果有按鍵按下,tr0=0;tr1=0; /不計時p0=table9; /顯示99p2=0; /全部顯示if(key=1) /東西方向p1=0xde; /led狀態(tài)if(key=2) /南北方向p1=0xf3;/led狀態(tài)while(key)keyscan(); /等待按下正常if(t0<=400)p1=0xde;/11 01 1 110綠紅else if(t0>400&&t0<=460)p1=0xdd;/11 01 1 101 黃紅else if(t0>460&&t0<

36、=920)if(t1>860) /南北為黃燈p1=0xeb;/11 10 1 011elsep1=0xf3; /11 11 0 011tr0=1;tr1=1;void keyscan()uchar temp;temp=p3;while(temp!=0xff)delay(5);/延時,消抖temp=p3;/再次確認是否有健按下temp=temp&0xff;while(temp!=0xff)temp=p3;switch(temp)case 0xfe:key=1; /break;case 0xfd:key=2;break;case 0xfb:key=0;break;while(temp

37、!=0xff)/松手檢測temp=p3;temp=temp&0xff; void init() /初值函數(shù)g1=on;y1=off;l1=off;g2=off;y2=off;l2=on;num=20;num1=23;a=num/10;b=num%10;c=num1/10;d=num1%10;tmod=0x11;th0=(65536-50000)/256;tl0=(65536-50000)%256;th1=(65536-50000)/256;tl1=(65536-50000)%256;ea=1;et0=1;et1=1;tr0=1;tr1=1;void timer0() interrupt

38、 1 /定時器0中斷th0=(65536-50000)/256;tl0=(65536-50000)%256;t0+;if(t0%20=0) /每一秒進入 一次if(t0<=400) /綠燈時間num-;if(num=0) /綠燈結(jié)束,開黃燈num=3;g1=off;y1=on;l1=off;if(t0>400&&t0<=460) /黃燈時間num-;if(num=0) /黃燈結(jié)束,開紅燈num=23;g1=off;y1=off;l1=on;if(t0>460&&t0<=920) /紅燈時間num-;if(num=0)/紅燈結(jié)束,開綠

39、燈num=20;g1=on;y1=off;l1=off;if(t0=920)t0=0;a=num/10;b=num%10;void timer1() interrupt 3 /定時器1中斷th1=(65536-50000)/256;tl1=(65536-50000)%256;t1+;if(t1%20=0)if(t1<=460)num1-;if(num1=0)num1=20;g2=on;y2=off;l2=off;if(t1>460&&t1<=860)num1-;if(num1=0)num1=3;g2=off;y2=on;l2=off;if(t1>860&

40、amp;&t1<=920)num1-;if(num1=0)num1=23;g2=off;y2=off;l2=on;if(t1=920)t1=0;c=num1/10;d=num1%10;/*void display(uchar a,uchar b,uchar c,uchar d)/顯示程序 p0=tablea;p2=1;delay(1);p2=255;p0=tableb;p2=2;delay(1);p2=255;p0=tablec;p2=4;delay(1);p2=255;p0=tabled;p2=8;delay(1);p2=255;*/void display(uchar a,u

41、char b,uchar c,uchar d)/顯示程序 p0=tablea;p2=0xfe;delay(1);p2=0xff;p0=tableb;p2=0xfd;delay(1);p2=0xff;p0=tablec;p2=0xfb;delay(1);p2=0xff;p0=tabled;p2=0xf7;delay(1);p2=0xff; (五)結(jié)果分析 5.1軟件仿真與結(jié)果分析5.1.1.proteus的仿真結(jié)果 圖12 proteus的仿真結(jié)果5.1.2各狀態(tài)仿真結(jié)果(1) 復(fù)位狀態(tài) 輕按【復(fù)位】按鈕后,東西方向通行(綠燈亮),數(shù)碼管顯示從20秒開始倒計時;同時,南北方向禁行(紅燈亮),數(shù)碼

42、管顯示從23秒開始倒計時,如下圖13所示。 圖13 復(fù)位狀態(tài)顯示結(jié)果(2)正常通行狀態(tài) 輕按【正常通行】按鈕后,交通信號燈正常工作,即按交通信號燈的狀態(tài)轉(zhuǎn)換規(guī)律進行變換。若中間發(fā)生過緊急情況,則按緊急處理之前繼續(xù)運行,如下圖14所示。 圖14 正常通行狀態(tài)顯示結(jié)果(3)南北通行狀態(tài) 輕按【南北通行】按鈕后,表示發(fā)生a類緊急情況需進行應(yīng)急處理,交通信號燈東西方向強制禁行(亮紅燈),南北方向強制通行(綠燈亮)疏通車流,四個方向倒計時一直顯示99秒,如下圖15。 圖15 南北通行狀態(tài)顯示結(jié)果(4)東西通行狀態(tài) 輕按【東西通行】按鈕后,表示發(fā)生b類緊急情況需進行應(yīng)急處理,交通信號燈南北方向強制禁行(亮

43、紅燈),東西方向強制通行(綠燈亮)疏通車流,四個方向倒計時一直顯示99秒,如下圖16。 圖16 南北通行狀態(tài)顯示結(jié)果5.1.3.紅綠燈狀態(tài)轉(zhuǎn)換過程: s1: 東西通行,南北禁行 s2: 東西等待,南北禁行 s4: 東西禁行,南北等待 s3: 東西禁行,南北通行 圖17 紅綠燈狀態(tài)轉(zhuǎn)換圖 東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時間、指示燈燃亮的方案如下表。表3 十字路口指示燈燃亮方案狀態(tài)s1s2s3s4時間20s3s20s3s

44、南北道紅燈亮紅燈亮綠燈亮黃燈亮東西道綠燈亮黃燈亮紅燈亮紅燈亮表3說明:1 當南北方向為紅燈,此道車輛禁止通行,南北道行人可通過;東西道為綠燈,此道車輛通過,行人禁止通行,時間為20秒。 2 東西方向黃燈點亮3秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。 3 當南北方向為綠燈,此道車輛通行;東西方向為紅燈,東西道車輛禁止通過,行人通行,時間為20秒。 4 這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。 5 此表可根據(jù)車流量動態(tài)設(shè)定紅綠燈初始值。6 共四種狀態(tài),分別設(shè)定為s1、s2、s3、s4,交通燈以這四種狀態(tài)為一個周期,循環(huán)執(zhí)行如圖1所示。7 程序就是在上述四種

45、狀態(tài)下循環(huán)轉(zhuǎn)化的。一個周期四個狀態(tài),在正常模式下共花費46秒。5.2硬件調(diào)試與結(jié)果分析 1.復(fù)位 2.正常通行 3.緊急東西通行 4.緊急南北通行 圖18 硬件調(diào)試結(jié)果 1. 輕按【復(fù)位】按鈕后,東西方向通行(綠燈亮),數(shù)碼管顯示從20秒開始倒計時;同時,南北方向禁行(紅燈亮),數(shù)碼管顯示從23秒開始倒計時。 2. 輕按【正常通行】按鈕后,交通信號燈正常工作,即按交通信號燈的狀態(tài)轉(zhuǎn)換規(guī)律進行變換。若中間發(fā)生過緊急情況,則按緊急處理之前繼續(xù)運行。 3. 輕按【南北通行】按鈕后,表示發(fā)生a類緊急情況需進行應(yīng)急處理,交通信號燈東西方向強制禁行(亮紅燈),南北方向強制通行(綠燈亮)疏通車流,四個方向倒

46、計時一直顯示99秒。 4. 輕按【東西通行】按鈕后,表示發(fā)生b類緊急情況需進行應(yīng)急處理,交通信號燈南北方向強制禁行(亮紅燈),東西方向強制通行(綠燈亮)疏通車流,四個方向倒計時一直顯示99秒。 5.紅綠燈轉(zhuǎn)換的過渡期間,黃燈亮3秒。 6.經(jīng)過硬件調(diào)試可知,硬件的設(shè)計能夠達到本次設(shè)計的要求;但是,沒有掉電保護,即掉電后,沒有記憶功能,再次通電后將按復(fù)位后的情況運行。 (六)總結(jié)通過這次交通燈的課程設(shè)計,使我們得到了一次用專業(yè)知識、專業(yè)技能分析和解決現(xiàn)實問題的能力。使我們在單片機的基本原理、單片機應(yīng)用學(xué)習(xí)過程中,以及在常用編程設(shè)計思路技巧的掌握方面都能向前邁了一大步,為日后成為一名合格的應(yīng)用型人才打下良好的基礎(chǔ)。綜合課程設(shè)計讓我們把以前學(xué)習(xí)到的知識得到鞏固和進一步的提高認識,對已有知識有了更深層次的理解和認識。在此,由于自身能力有限,在課程設(shè)計中碰到了很多的問題,我們通過查閱相關(guān)書籍、

溫馨提示

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

評論

0/150

提交評論