




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
基于單片機的五岔路口交通燈方案設計關(guān)鍵詞:AT89S52交通燈倒計時LED
目錄TOC\o"1-3"\h\u摘要 IAbstract II1課題研究的背景 IV1.1交通信號燈的發(fā)展及研究意義 11.2現(xiàn)在城市路口交通燈控制技術(shù)現(xiàn)狀 21.3單片機概述 21.4方案的設計與論證 31.4.1電源提供方案 31.4.2顯示界面方案 31.4.3輸入方案 42系統(tǒng)總體設計 42.1總體設計 52.2單片機的選擇 112.3單片機的基本結(jié)構(gòu) 72.4單片機外圍電路設計 102.4.1復位電路設計 102.2.2外部晶振時鐘電路設計 102.2.3顯示模塊電路設計 113交通信號燈控制系統(tǒng)的設計 143.1十字路口交通信號燈具體的控制要求 143.2五岔路口交通信號燈示意圖 143.3五岔路口交通燈工作情況 153.4路口交通燈時間處理函數(shù)模塊 154交通信號燈控制系統(tǒng)程序編制 194.1軟件設計應用環(huán)境 194.2軟件設計流程 194.3交通燈定時器模塊 204.4定時器初值模塊設計 21結(jié)論 22主要參考文獻 25附錄一:源程序代碼 261課題研究的背景1.1交通信號燈的發(fā)展及研究意義現(xiàn)如今,安裝在各個路口上的紅綠燈,已經(jīng)成為疏導交通車輛最常見以及有效的工具,這一技術(shù)的發(fā)展已經(jīng)有了相當長的歷史。1858年,世界上最早的交通信號燈在英國倫敦出現(xiàn)。他是通過在其主要街頭安裝了紅,藍兩色的信號燈。這些信號燈是機械扳手式的,它由燃煤氣提供光源,用以指揮馬車通行。1868年,在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,英國機械工程師納伊特安裝了世界上最早的一盞煤氣紅綠燈。它是紅綠兩個旋轉(zhuǎn)式方形玻璃提燈組成的,紅色表示“停止”,綠色表示“注意”。1869年1月2日,因為煤氣燈爆炸,造成警察受傷,于是被取消了。而后,在美國出現(xiàn)了電氣啟動的紅綠燈,這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年始就安裝在了紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1918年,出現(xiàn)了新式的帶控制的紅綠燈以及紅外線紅綠燈。帶控制的紅綠燈有兩種類型,一種是用擴音器來控制紅綠燈,司機遇紅燈時按一下嗽叭,就使紅燈變?yōu)榫G燈。另一種是把壓力探測器裝在地下,當車輛一接近紅燈便變?yōu)榫G燈;紅外線紅綠燈則是當行人踏上對壓力敏感的路面時,壓力感應器就能察覺到有人要過馬路,繼而紅外光束將延長紅燈時間,推遲汽車放行,避免發(fā)生交通事故。目前,我國平均每一分鐘就有一個人因交通事故受傷,平均每五分鐘就有一個人因交通事故而死亡。同時,交通的阻塞以及不便,給全球的經(jīng)濟甚至也帶來了很大的影響。英國大約有100個城市是屬于平面交叉口的,因為車輛延誤造成的經(jīng)濟損失每年就可以達到1400萬英鎊左右。我國百萬人以上的大城市因為交通擁擠造成的經(jīng)濟損失每年估計為1600億人民幣,相當于我國國內(nèi)生產(chǎn)總值的3.2%。不僅如此,城市交通問題還產(chǎn)生量其他一些城市問題。例如,城市生態(tài)環(huán)境狀況就十分不樂觀,交通工具排放廢氣,這己經(jīng)成了破壞大氣的重要污染源頭之一。嚴重的大氣污染不僅導致了環(huán)境變差,也會導致經(jīng)濟損失,不僅僅對公眾健康造成損害。而且因為交通設施建設,更是加重了環(huán)境破壞的嚴重程度,土地資源正在以每年2%-3%的速度不斷減少著。合理的交通控制方法能有效的減少尾氣排放及能源消耗、緩解交通擁擠、縮短出行延時,改善我國獨有的交通問題。平面交叉口是城市交通改善的一個重點,它是整個城市道路的瓶頸帶,對其進行的交通信號控制方法的研究具有重大意義。交通信號燈的出現(xiàn),使得交通狀況可以被有效管制成為可能,對于提高道路通行能力、疏導交通流量以及減少交通事故的發(fā)生有著明顯效果,更減輕了交警輪流指揮的辛苦和危險,實現(xiàn)了人,車,路三者的同步協(xié)調(diào)。現(xiàn)階段,已經(jīng)有一些先進的創(chuàng)意,它們體現(xiàn)出了更多智能化、自動化、數(shù)字化等更先進的交通燈控制方案,這讓我們更加方便地對城市交通進行維護管理,并讓我們可以在更加便利和安全的交通環(huán)境下生活。1.2現(xiàn)在城市路口交通燈控制技術(shù)現(xiàn)狀城市機動車數(shù)量正在不斷地增加,在許多大城市中,也出現(xiàn)了交通超負荷運行的狀況。所以,從80年代后期開始,這些城市紛紛開始修建高速道路,在高速道路建設完成之初,也確實有效地改善了交通狀況。然而,隨著交通量的快速增長和對高速路的系統(tǒng)控制以及研究意識的缺乏,高速道路沒有如預期充分發(fā)揮出其作用。而在構(gòu)造上城市高速道路的特點,也決定了必然城市高速道路的交通狀況會受到普通道路與高速道路藕合處交通狀況的制約。所以,采用什么樣的控制方法才合適,才能最大限度地利用好耗費巨資修建的城市高速道路,緩解主干道車流量繁忙的交通擁堵狀況這一問題,已經(jīng)慢慢成為城市規(guī)劃以及交通運輸管理部門需要解決的主要問題。1.3單片機概述目前,計算機系統(tǒng)的開發(fā)方向分為三個,這三個方向分別是:網(wǎng)絡化,巨型化,單片化。高速數(shù)據(jù)處理的超級計算機以及解決復雜的計算系統(tǒng)仍然在工作,因此,超級計算機朝向電流以及高速方向的處理能力也在不斷努力。供應鏈管理的最明顯的好處是,你可以嵌入到各種儀器,設備。這是不可能的超級計算機以及網(wǎng)絡[1]單片機在目前的發(fā)展情況來看,呈現(xiàn)出幾個趨勢:
(1)高可靠性。提高應用以及互聯(lián)網(wǎng)連接的水平是一個明顯的趨勢。
(2)越來越多的集成組件。NS(美國國家半導體)公司宜巴單片機語音,視頻組件也被集成到設備中,也就是單片機的意義只在于一個單片集成電路,而不在其功能;如果它可以從功能的角度講是萬能機。因為用于各種應用其內(nèi)部集成電路。
(3)低功耗。而在越來越多的模擬電路中,隨著半導體工藝技術(shù)的發(fā)展以及系統(tǒng)設計水平的提高,單片機將繼續(xù)產(chǎn)生新的變化以及進步,人們最終可能會發(fā)現(xiàn):微控制器以及微處理器系統(tǒng)之間的距離越來越小,甚至難以辨認。1.4方案的設計與論證設計單片機為核心,倒計時用LED數(shù)碼來指示,根據(jù)設計要求,我們考慮的功能模塊,最佳解決方案的多種設計方案,以實現(xiàn)各種實時顯示系統(tǒng)狀態(tài),系統(tǒng)還創(chuàng)建根據(jù)交通擁堵的運輸時間可分別公路以及二級公路設置,以提高工作效率,緩解交通擁堵。系統(tǒng)總體設計框圖如圖所示。交通燈控制的框圖如下圖1-1所示,主要有控制電路、按鍵電路、晶振電路、復位電路、顯示電路、電源電路等電路組成。數(shù)碼管顯示電路電源電路單片數(shù)碼管顯示電路電源電路單片機時鐘電路時鐘電路Led信號燈控制電路復位電路Led信號燈控制電路復位電路按鍵電路按鍵電路圖1-1交通燈控制框圖1.4.1電源提供方案為了模塊的穩(wěn)定性,它必須有一個可靠的電源。設計考慮到了兩種動力選擇:方案一:使用單獨的電源。這個方案的優(yōu)勢是穩(wěn)定以及可靠,并且有多種成熟電路可用;缺點是,每個模塊使用獨立的電源,會使系統(tǒng)變得復雜,可能影響電路的整體穩(wěn)定性。
方案二:用單片機控制模塊來提供電力。這個方案的優(yōu)勢是,該系統(tǒng)簡潔,節(jié)約成本;缺點是輸出功率不高。
綜上所述,選擇第二個方案。1.4.2顯示界面方案該系統(tǒng)要求完成倒計時功能。因為上述原因,這次設計考慮了兩種選擇:方案一:完整的LED點陣顯示屏。這個功能強大的程序,它可以很容易地顯示各種中國文字,英文字符和圖形等;但復雜,必須做大量的軟件工作。
方案二:完全采用數(shù)字顯示。這個方案的優(yōu)勢是簡單,是可以做到的倒計時功能。但缺點是,更少的特征只能顯示有限的符號以及數(shù)字的字符。根據(jù)設計要求,方案二較為滿足要求,所以這種設計使用了方案二來實現(xiàn)顯示功能。1.4.3輸入方案這里同樣給出了兩種可用方案:方案一:8155擴展I/O端口,鍵盤以及顯示器。這一方案的優(yōu)勢是使用的靈活可編程的,并且有RAM以及計數(shù)器。如果選用這個當個可以給我們提供更多的I/O端口,但是操作稍微復雜一些。方案二:在I/O端口線直接連接按鈕開關(guān)。因為流線型以及優(yōu)化電路的設計,所以端口資源還更的其余部分。因為該系統(tǒng)是一個交通燈以及數(shù)字控制,只需使用微控制器本身的I/O端口,可實現(xiàn)的,以及自己的計數(shù)器以及RAM已經(jīng)足夠,所以選擇方案二。2系統(tǒng)總體設計在硬件計劃的全部體系的基礎上還要斟酌許多方面,例如要達成交通燈的基本功能,除此之外,還重要思考如下要素:①體系的穩(wěn)定性,設備的通用性②容易購買;③軟件編程易于實施;④其他系統(tǒng)功能以及性能。因此,至關(guān)硬件設計很重要?,F(xiàn)在,一個個從實現(xiàn)各功能模塊的討論以及分析。2.1總體設計該計劃以單片機為中心,選用模塊化來進行分模塊設計,分別為了實現(xiàn)如下功效模塊:單片機控制體系,鍵盤以及狀態(tài)體現(xiàn),模塊倒計時。單片機作為硬件系統(tǒng)的核心,既作為協(xié)調(diào)作業(yè)機械控制器以及數(shù)據(jù)處理器。她是有單片機的振蕩電路和復位電路。該體系選用雙數(shù)字倒計時計數(shù)功效,最大體現(xiàn)數(shù)為99。界面設計方便,控制簡單,本設計的最大特點是優(yōu)化物理結(jié)構(gòu)。2.2單片機的選擇在微型計算機的重要分支中單片機占有一席之地,它是可行性很強的模式。單片機的全稱是單片微型計算機,尤其是在控制領域,通常也稱為微控制器。一般設備構(gòu)成一個單芯片。具備和計算機相同的基本功能:CPU,存儲器以及I/O接口電路。所以,微型控制器只需要軟硬件之間組合適當,就可以是組成一個單芯片的控制系統(tǒng)。單片機從一代開始發(fā)展到如今的第四代,正朝著功能多樣化,性能高級化,功耗低消耗,價格低廉,存儲容量大等良好的相容性結(jié)構(gòu)的方向發(fā)展。僅限于以下幾個方面的發(fā)展趨勢:功能將單片機所需要的存儲器以及I/O端口集成在一個芯片上,從而形成可以實現(xiàn)更多的微控制器。例如,A/D,PWM,PCA(可編程計數(shù)器陣列),WDT(看門狗定時器看門狗),高速I/O端口以及計數(shù)器捕捉/比較邏輯。[2]一些微控制器,用于在一定的應用領域,集成相關(guān)聯(lián)的控制設備,以降低芯片的應用的數(shù)目。例如,少許以51內(nèi)核芯片為中心,集成USB控制器,智能卡接口,MP3解碼器,CAN或I*I*C總線控制器,LED,LCD或VFD顯示驅(qū)動器開始被集成在八個MCU。(2)高效率以及高性能單片機采用RISC功能,來提高執(zhí)行速度以及效率處理,為了控制器的性能得到顯著改善,提出了流水線以及DSP設計技術(shù),MCU時鐘頻率提高;單片機的運行效率相同的頻率已經(jīng)大大提升;因為增加了集成技術(shù),供應鏈管理的尋址能力以及片上ROM(FLASH)、RAM容量突破了以往的限制。因為系統(tǒng)具有很強的復雜性,開始采用如C語言的高級語言開發(fā)的單芯片方案。降低了開發(fā)難度,縮短了開發(fā)周期,減少了開發(fā)成本,改善了軟件的可塑性,增加了軟件的使用壽命。低電壓以及低功耗低電壓以及低功耗對于單片機來說是最基本的一項重要指標。由于CMOS技術(shù)的廣泛使用,很多這些設備都已經(jīng)在在較低的電壓(1.2V或0.9V)下工作,功率消耗已經(jīng)降低到微安級。這些特性使單片機系統(tǒng)可以支持根據(jù)功率較小的工作時間更長。[3](4)低價格普遍的微控制器應用中,使用了大量的單片機系統(tǒng)直接的益處便是降低成本。當前世界各大公司為了進步競爭力,同時加強MCU技能,高度重視,通過削減其產(chǎn)品的價格來實現(xiàn)。這里介紹大致SCM主要應用領域以及功能:(1)家用電器領域現(xiàn)在更新家電,銷售等環(huán)節(jié),應用越來越廣泛,如電子玩具以及先進的視頻游戲單片機,單片機將應用其控制功能;以及衣物的洗滌機可用于識別微控制器以及臟污染程度,從而自動選擇洗滌強度以及洗滌時間的類型;在冰柜冷藏室選用單片機控制食物的種類和保存食品標識可以自動選擇制冷溫度和貯藏時間;微波加熱也可以通過微控制器確定自動識別食物的溫度以及加熱時間,在等芯片技術(shù)的應用,這些家電的類型,兩者相比傳統(tǒng)技術(shù)的性能以及功能方面取得了很大的進步。(2)辦公自動化領域單片機被廣泛應用于計算機鍵盤,磁盤驅(qū)動器,打印機,復印機,電話以及傳真機等。商業(yè)應用領域商業(yè)應用類似于家庭和辦公應用,而是著眼于穩(wěn)定,設備的可靠性和安全性。電子測量儀器廣泛應用于商業(yè)系統(tǒng),收銀,條碼閱讀器,安防監(jiān)控系統(tǒng),空調(diào)系統(tǒng)以及制冷保鮮系統(tǒng),全部采用專用系統(tǒng)芯片微處理器。與通用計算機比擬,因為這些體系相對關(guān)閉,病毒能夠更有效地防備電磁干預,升高可靠性。(4)工業(yè)自動化事實上,它是從最初單芯片產(chǎn)業(yè)開始興起,是因為它在工業(yè)控制領域的應用非常廣泛,單片機技術(shù),構(gòu)成了各種各樣的數(shù)據(jù)采集系統(tǒng)以及智能控制系統(tǒng),如工廠流水線智能管理,智能電梯,報警系統(tǒng)等,都通過單片機技術(shù)以及計算機匯集形成二級控制體系。(5)智能儀表與集成智能傳感器MCU具有集成度高,體積小,強大的控制功能以及靈活擴展等特點,處理速度快,可靠性高,所以應用程序的智能儀器儀表等領域是非常廣泛的。在某方面上來說,微控制器驅(qū)動的基礎衡量,保持儀表技巧的一場革命,通過單片機技巧實現(xiàn)了儀表技術(shù)數(shù)字化,智能化,綜合性,多功能的,與傳統(tǒng)的或數(shù)字電子電路電路相比,功能更強大,集成而更為突出。(6)現(xiàn)代交通與航空航天領域通常用在電子綜合顯示系統(tǒng),電力監(jiān)控系統(tǒng),自動駕駛系統(tǒng),通訊系統(tǒng)以及運營監(jiān)控系統(tǒng)。尺寸,功耗,穩(wěn)定性,以及實時性請求的這些區(qū)域每每比商業(yè)系統(tǒng)甚至更高,因此,使用該SCM體系是更重要的。2.3單片機的基本結(jié)構(gòu)AT89S52單片機是一種低功耗,低電壓,高性能CMOS8位微控制器,具有8KB(可承受1000年擦除周期)可擦寫閃存可編程只讀程序存儲器(EPROM),該器件采用ATMEL高密度CMOS技術(shù)以及公司的非易失性存儲器(NURAM)技術(shù)制造,輸出引腳以及指令集兼容的MCS-51,快閃存儲器芯片允許可再編程系統(tǒng)內(nèi),或通過常規(guī)的非易失性存儲器編程到程序。因此,AT89C52是一款功能強大,高靈活性以及低成本的單芯片,可在各控制區(qū)很容易地應用。AT89S52具有以下主要特性:(1)8KB可改編流程FLASH存儲器;全表態(tài)工作:0~24HZ;(3)256X8字節(jié)內(nèi)部RAM;(4)32個外部雙向輸入,輸出(I、O)口;引腳說明如圖2-1。圖2-1AT89S52引腳說明引腳功能如下:VCC:電源電壓。GND:地面。P0口:設定時間線端口地址轉(zhuǎn)換(低8位)以及數(shù)據(jù)總線復用,激活內(nèi)部上拉電阻。當FLASH編程,P0口回收指令字節(jié),而在流程校驗輸出目標字節(jié),當檢查需求外部上拉電阻。在拜訪外部數(shù)據(jù)儲存器或流程儲存器時,這組口線分時轉(zhuǎn)換地址(低8位)以及數(shù)據(jù)總線復用,在訪問期間激活內(nèi)部上拉電阻。FLASH編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻[15]。P1口:內(nèi)部的上拉電阻I/O口包括一個8位雙向P1,P1的硬件輸出緩沖器可啟動(吸收或輸出電流)4個TTL邏輯門。端口寫“1”拉通的端口內(nèi)部拉高,此時可以作為輸入。行為輸入端口利用,由于內(nèi)部上拉電阻的存在,一個引腳被拉低時,當前的外部信號的輸出。在FLASH編程以及驗證,P1接收低8位地址。P2口:8位雙向IP2是一個內(nèi)部的上拉電阻/O口,P2輸出緩沖器可驅(qū)動(吸收或輸出電流)4個TTL邏輯門。端口寫“1”拉通的端口內(nèi)部拉高,此時可以作為輸入。作為輸入端口使用,因為內(nèi)部上拉電阻的存在,一個引腳被拉低時,當前的外部信號的輸出。要訪問外部程序存儲器或16位外部數(shù)據(jù)存儲器地址(如執(zhí)行MOVX@DPTR指令),P2口送出高8位地址數(shù)據(jù)。P3口:8位雙向IP3是一個內(nèi)部的上拉電阻/O口,P3輸出緩沖器可驅(qū)動(吸收或輸出電流)4個TTL邏輯門。端口寫“1”拉通的端口內(nèi)部拉高,此時可以作為輸入。作為輸入端口使用,因為內(nèi)部上拉電阻的存在,一個引腳被拉低時,當前的外部信號的輸出[9]。P3除了作為通用I/O口線,但更重要的用途是它的第二個功能,表2-1中所述的具體特征。P3口還接收了閃存FLASH編程以及學校一些控制信號。表2-1P3口的第二功能表端口引腳第二功能P3.0RXD(穿行輸出口)P3.1TXD(穿行輸入口)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(定時/計數(shù)器0)P3.5T1(定時/計數(shù)器0)P3.6WR(外部數(shù)據(jù)寫選通)P3.7RD(外部數(shù)據(jù)讀選通)RST:復位輸入。當振蕩器RST引腳為高電平兩個機器周期以上的復位裝置。ALE/PROG:訪問外部程序存儲器以及數(shù)據(jù)存儲器,當ALE(地址鎖存使能)輸出脈沖用于鎖存低8個字節(jié)的地址。無論是否會訪問外部存儲器,ALE輸出的時鐘振蕩頻率都是固定值,為正脈沖信號的1/6,所以他可能或外部輸出時鐘定時的目的。應當指出的是:ALE脈沖會在訪問外部存儲器是跳過一個脈沖。在FLASH存儲器編程,該引腳還可以應用于輸入編程脈沖(PROG)。即使有需要,經(jīng)過特別功效寄存器(SFR)地區(qū)D0位8EH單位ALE操作能夠禁止。這一點,ALE惟有被一個MOVX以及MOVC指令激活。另外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE失效。PSEN:外部程序存儲器讀選通信號循序的一個信號,當AT80C51取從外部程序存儲器指令(或數(shù)據(jù)),PSEN被激活兩次,每臺機器在每個周期內(nèi)可以激活兩次。在此期間,訪問外部數(shù)據(jù)存儲器時,兩個有效PSEN信號不出現(xiàn)。EA/VPP:外部訪問允許。為了使CPU僅訪問外部程序存儲器(尋址空間0000H-FFFFH),EA端必須保持低(地)。作為EA的高端(Vcc的一側(cè)),CPU的指令執(zhí)行的內(nèi)部程序存儲器。當FLASH存儲器編程,該引腳與+12V的編程許可電源Vpp的,這務必利用編程電壓12V的器件。XTAL1:反相振蕩放大器以及內(nèi)部時鐘發(fā)生器的輸入。XTAL2:振蕩器反相放大器的輸出端2.4單片機外圍電路設計2.4.1復位電路設計MCS-51RST復位輸入引腳MCS-51提供了技術(shù)措施來初始化,您可以使程序從指定位置開始,只要RST引腳發(fā)生在兩個機器周期以上高的時候,它可以產(chǎn)生復位操作,只要RST居高不下,MCS-51周期復位[5],從高級別只有一個RET低電平后,MCS-51開始從地址0000H該系統(tǒng)程序執(zhí)行使用復位按鈕復位電路,如圖2-2所示。圖2-2按鍵復位方式復位電圖2.2.2外部晶振時鐘電路設計時鐘MCS-51可以用兩種方式來生產(chǎn),一個是內(nèi)部的方式,與芯片振蕩器電路;另一個是外部的方式,本文根據(jù)實際需求以及簡單,使用內(nèi)部振蕩模式中,內(nèi)部的MCS-51具有一個放大器,引腳XTAL1以及XTAL2是的輸入以及輸出放大器,該放大器芯片是晶體或陶瓷諧振器的反饋元件,兩個放大器芯片一起構(gòu)成一個自激振蕩裝置。MCS-51,雖然也有內(nèi)部振蕩電路,而是形成時鐘,必須添加成分,所以振蕩時鐘電路,外部晶體振蕩器以及電容器C1以及C2的實際組合物形成的并聯(lián)諧振電路連接到反饋回路,電容器的尺寸將影響振蕩器的振蕩頻率穩(wěn)定的水平,因為振動速度以及溫度的穩(wěn)定性。晶體頻率可以是1.2MHZ?12MHZ任選之間,電容器C1以及C2是20PF之間的典型值?100pF的選擇,因為該系統(tǒng)使用一個計時器,為了便于計算,使用12MHZ晶體,選擇電容30pF的。如圖2-3。圖2-3外部晶振時鐘電路2.2.3顯示模塊電路設計該模塊由共陽極LED數(shù)碼管,采用數(shù)字化控制的動態(tài)掃描基本思路,由晶體管,當控制數(shù)字IO端口P20以及P21低(以及晶體管基數(shù)很低),晶體管導通,VCC電源鎖通過晶體管數(shù)字電源,數(shù)碼管點亮,采用數(shù)碼管點亮余輝以及人眼視覺基本思路的持久性的,它看起來像數(shù)碼管被同時點亮。如圖2-4。圖2-4顯示模塊電路從設計的角度要求,表示時間的流逝,必須是兩位LED,從節(jié)省硬件資源的角度考慮,可用于掃描處理,對7段的方式,占據(jù)7的微控制器I/O口,并分別在兩個顯示復雜的兩個電子開關(guān)占用兩個I/O端口,共四組紅綠燈十字路口,有黃色的轉(zhuǎn)換,共有12燈應與12端口以及應急交通控制按鈕在兩個方向,占兩個I/O端口,所以單片機的I/O端口是24的實際占領,因此,我們可以在ATAT89S52使用51臺計算機的中央處理器。單片機的I/O口作為輸出,以更大的能力來吸收電流,所以我們可以使用常見的數(shù)碼顯示管,所以I/O端口可以直接啟動,可以簡化硬件設計[10]以下為數(shù)碼管的相關(guān)定義函數(shù)[8]:ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,// A B C D EF 不顯示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼 uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=4;//顯示數(shù)碼管的個位數(shù)//數(shù)碼管位選定義sbitsmg_we1=P2^0; //數(shù)碼管位選定義sbitsmg_we2=P2^1;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;chardx_s=0; //東西南北倒計時變量sbitdx_red=P2^4; //東西紅燈sbitdx_green=P2^3; //東西綠燈sbitdx_yellow=P2^2; //東西黃燈sbitnb_red=P2^7; //南北紅燈sbitnb_green=P2^6; //南北綠燈sbitnb_yellow=P2^5; //南北黃燈 ucharflag_jtd_mode;//交通燈的模式根據(jù)時間bitflag_1s=0;bitflag_500ms;bitflag_dx_nb; //東西南北模式ucharflag_5m_value;uchari;ucharflag_alarm; //模式uchardx_time=30,nb_time=20;//東西、南北的時間ucharflag_jdgz;//交通管制3交通信號燈控制系統(tǒng)的設計交通燈由紅,綠,黃燈組成。紅色光以指示流量,它允許綠光通過,黃燈表示警告。機動車信號燈,非機動車信號燈,行人信號燈,車道燈,方向燈,警燈,道路以及鐵路穿越燈都是交通信號燈的一部分。交通燈十字路口的道路,通過發(fā)出旅游或停止指揮車輛,行人,讓誰在同一時間到達所有的人,車輛通行流量,保證平穩(wěn)安全道口。因此,在主要道路路口必須正確設計的系統(tǒng)。3.1十字路口交通信號燈具體的控制要求(1)交通信號燈位于卡車和一個較小的分支道路交通量,每個有三個。青綠色的南北方向以及東西方向不能亮;如果你光,應立即關(guān)閉自動信號系統(tǒng),并立即發(fā)出報警信號。系統(tǒng)工作后,第南北紅燈亮并保持30秒;與此同時,一些綠色的光,并維持25秒的時候25歲,東西綠燈熄滅。當當西方向上的綠燈時間到熄滅時,東西方向上的黃燈亮并保持5秒,然后將黃色的東西了,東西紅燈,紅燈熄滅,而南北,南北綠燈;東西紅燈并維持30秒;同時,南北以及綠燈25秒保持;那么,南北綠燈熄滅時,綠燈熄滅南北,南北黃燈熄滅保持5秒后;而紅光南北,東西向綠燈。因此,工作周期結(jié)束時,如下圖3-1交通信號燈變化表:圖3-1交通燈循環(huán)過程示意圖(2)在交通燈以及閃光的同時,兩個七段顯示器與一個倒計時的交點,這樣,車輛以及行人可以清楚地知道多久燈將在另一個變化。司機以及行人,以能夠準確地傳遞在有限的時間。3.2五岔路口交通信號燈示意圖五岔路口可簡化為圖3-2如下顯示,圖中道路部分分為五個岔口,我分別將五個岔口進行編號,以方便在下文中進行循環(huán)描述。在實際情況中,可根據(jù)各個路口的實際車流量大小來進行編號。圖3-2五岔路口示意圖3.3五岔路口交通燈工作情況一個循環(huán)兩分半鐘:1->4,1->3,3->130秒1->2,3->5,3->430秒2->5,2->4,4->230秒2->3,4->1,4->530秒5->1,5->2,5->330秒3.4路口交通燈時間處理函數(shù)模塊voidjiaotongdeng_dis(){if(flag_1s==1) { flag_1s=0; if(dx_s==0) { if(flag_dx_nb==1) dx_s=nb_time; //南北時間 else dx_s=dx_time; //東西時間 flag_dx_nb=~flag_dx_nb; } dx_s--; } dis_smg[0]=smg_du[dx_s%10]; dis_smg[1]=smg_du[dx_s/10]; dis_smg[2]=smg_du[dx_s%10]; dis_smg[3]=smg_du[dx_s/10];/***********************南北時間*********************************/ if(flag_dx_nb==0) { if(dx_s>5) { dx_red=1;//滅 dx_green= 0; //亮 dx_yellow=1; //滅 nb_red=0;//亮 nb_green= 1; //滅 nb_yellow=1; //滅 flag_5m_value=0; }elseif(dx_s<=5) //當小于5秒時黃燈要閃了 { dx_red=1;//滅 dx_green= 1; //滅 nb_red=0;//亮 nb_green= 1; //滅 nb_yellow=1; //滅 if(flag_500ms==0) { dx_yellow=0;//亮 } else { dx_yellow=1;//滅 } } }/***********************東西時間*********************************/ if(flag_dx_nb==1) { if(dx_s>5) { dx_red=0;//亮 dx_green= 1; //滅 dx_yellow=1; //滅 nb_red=1;//滅 nb_green= 0; //亮 nb_yellow=1; //滅 flag_5m_value=0; }elseif(dx_s<=5) //當小于5秒時黃燈要閃了 { dx_red=0;//滅 dx_green= 1; //滅 dx_yellow=1; //滅 nb_red=1;//滅 nb_green= 1; //滅 if(flag_500ms==0) //黃燈閃爍 { nb_yellow=0; //亮 } else { nb_yellow=1; //滅 } } } }4交通信號燈控制系統(tǒng)程序編制4.1軟件設計應用環(huán)境本計劃軟件的計劃是在KeilC51的環(huán)境下編譯的。KeilC51單片機兼容凱爾軟件公司在美國發(fā)布的51系列單片機C語言軟件開發(fā)系統(tǒng),軟件提供了一個豐富的庫函數(shù)和強大的開發(fā)和調(diào)試工具的集成,所有的Windows界面。另一個重要的點,只要看一下編譯后生成的匯編代碼,可以實現(xiàn)我們的C51單片機生成的目標代碼效率非常高,大部分的語句生成的匯編代碼非常緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。C語言有以下特點:(1)語言簡潔、緊湊、使用方便、靈活。C語言一共只有32個字,9種控制語句,程序書寫自由,主要在小寫字母,壓縮不必要的成分。(2)運算符豐富。C操作符包含范圍很廣,共有34種運營商,使C操作類型非常豐富,表達類型多樣化,靈活使用不同的運營商在其他高級語言很難實現(xiàn)。(3)數(shù)據(jù)結(jié)構(gòu)豐富,各種現(xiàn)代語言的數(shù)據(jù)結(jié)構(gòu),可以用于操作來實現(xiàn)各種復雜的數(shù)據(jù)結(jié)構(gòu)。(4)結(jié)構(gòu)化控制語句作為一個方便的程序的程序模塊的實現(xiàn)功能的模塊單元。(5)語法要求不多,可自由發(fā)揮程序構(gòu)想。(6)C語言可以執(zhí)行一個操作[2],可以實現(xiàn)大部分的匯編語言功能,可以直接對硬件。因此,C高級語言的功能,但也有許多低級語言的功能,可以用來編寫系統(tǒng)軟件。C語言的二元性,使它不僅是成功的系統(tǒng)描述語言,和泛型編程語言。(7)用C語言寫的程序可移植性好。基本沒有修改就可以用于計算機和各種操作系統(tǒng)的各種模型用C語言來對操作系統(tǒng)進行系統(tǒng)實用程序設計以及需求對硬件進行操作的場合,明顯地優(yōu)勢于其他高級語言,有的大型應用軟件也用C語言來編寫。4.2軟件設計流程軟件總體設計主要完成各部分的軟件控制以及協(xié)調(diào)。本系統(tǒng)主程序模塊主要完成系統(tǒng)的初始化、發(fā)送數(shù)據(jù)顯示和鍵盤掃描,同時等待外部中斷,并根據(jù)功能的要求相應的操作。交通燈根據(jù)其顯示情況可以分為四個狀態(tài),可以通過定時來控制每個狀態(tài)的時間。其流程圖如圖4-1所示。設置定時,顯示初始化設置定時,顯示初始化南北綠燈亮,東西紅燈亮,延時南北黃燈閃爍,東西紅燈亮,延時南北紅燈亮,東西綠燈亮,延時南北紅燈亮,東西黃燈閃爍,延時開始圖4-1軟件流程設計4.3交通燈定時器模塊AT89S52單片機內(nèi)部的3個定時器分別是T0,T1和T2,本次設計中使用T0工作方式1,在16位定時器,定時50ms,每秒信號產(chǎn)生20次中斷,來控制紅綠燈的亮滅時間。T0、T1的工作方式由工作方式寄存器TMOD來設置。這次設置TMOD=0x01,即T0工作于方式0(16位定時器)。內(nèi)部定時器用來當作定時器時,是對機器周期計數(shù),每個機器周期的長度是12個振蕩周期。定時常數(shù)的設置可用一下方式計算:機器周期=12/12MHz=1us(65536-定時常數(shù))*1.0us=50ms所以定時常數(shù)是50000。定時器T0,定時器T1初始化相關(guān)程序:voidtime0_init() {EA=1;//開總中斷TMOD=0X11;//定時器0、定時器1工作方式1ET0=1;//開定時器0中斷TR0=1;//允許定時器0定時ET1=1;//開定時器1中斷TR1=1;//允許定時器1定時} 4.4定時器初值模塊設計定時器工作時要事先給計數(shù)器假設一個初始值,將這個值送到TH以及TL中。它是用加法運算法則來存儲數(shù)字的,并能當出現(xiàn)全1到全0時自動產(chǎn)生中斷請求。因此工作于方式1,定時器為16位計數(shù)器其定時時間由下式計算:定時時間=(216-X)×振蕩周期×12(或)X=216-定時時間/振蕩周期×12式中X為T0的初始值,該值以及計數(shù)器工作方式有關(guān)。方式0定時時間=213×1微秒=8.192毫秒方式1定時時間=216×1微秒=65.536毫秒18秒鐘仍舊高處了計數(shù)器的最大按時,因此咱們只有采納定時器以及軟件相結(jié)合的舉措才氣辦理這個問題,定時器需定時50毫秒,故T0工作于方式1,定時20次,就可定時一秒。相應程序代碼(1)主程序定時器需定時50毫秒,故T0工作于方式1。振蕩周期×12=1微秒初值:X=216-50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令T0為定時器方式1MOVTH0,#3CH;裝入定時器初值MOVTL0,#BOH;MOVIE,#82H;開T0中斷SEBTTR0;啟動T0計數(shù)器MOVRO,#14H;軟件計數(shù)器賦初值LOOP:SJMP$;等待中斷(2)中斷服務子程序ORG000BHAJMPBRT0ORG00BHBRT0:DJNZR0,NEXTAJMPTIME;跳轉(zhuǎn)到時間及信號燈顯示子程序DJNZ:MOVR0,#14H;;恢復R0值MOVTH0,#3CH;重裝入定時器初值MOVTL0,#BOH;MOVIE,#82H;開T0中斷RET1END結(jié)論本論文介紹了基于AT89S52單片機的交通燈的設計方法,我在這次論文中完成了基本的硬件和軟件兩方面的設計與制作,詳細介紹了系統(tǒng)硬件的背景知識以及硬件的選擇方案,還介紹了硬件設計的全部過程,并結(jié)合相關(guān)軟件知識完成了整個系統(tǒng)的軟、硬件調(diào)試,系統(tǒng)工作正常,實現(xiàn)了基本功能,完成了最初的目標。通過這次畢業(yè)設計,加強了我對于學習過的專業(yè)知識的了解,真正意義上的把理論知識運用在了實際實踐當中。在完成設計的過程中,我通過在互聯(lián)網(wǎng)上查找相關(guān)資料,詢問老師,在圖書館查找有關(guān)書籍等方法將不懂不理解的地方一一擊破。在這短時間中,也認識到了自己的不足和短板,在日后的學習工作過程中要不斷改進和提高。通過這次畢業(yè)設計,我不僅在專業(yè)知識上進一步的鞏固了,而且還與同學和老師建立了良好的奮斗伙伴。鍛煉了自己獨立思考和團隊協(xié)作能力,讓自己在步入社會之前,又一次成熟了一次。再遇到不懂的地方我首先自己在網(wǎng)上查找相關(guān)資料,先自己努力了解一點,對于再不懂的點我會去詢問專業(yè)知識比較扎實的同學或者找自己的導師去尋求幫助。提高了自己的應用能力也提高了自己的動手能力。主要參考文獻[1]秦志強.C51單片機應用與C語言程序設計(第2版).電子工業(yè)出版社[2]譚浩強.C語言程序設計(第三版).清華大學出版社,2005[3]蘭吉昌.51單片機應用設計例.北京化學工業(yè)出版社,2009[4]周荷琴,吳秀清.微型計算機基本思路與接口技術(shù)(第四版).中國科學技術(shù)大學出社,2008.[5]康華光.電子技術(shù)基礎(第五版).華中科技大學出版社,2005[6]胡壽松.自動控制基本思路(第五版).科學出版社,2007[7]實用電子電路設計制作300例[M].中國電力出版社,2005[8]彭偉.單片機C語言程序設計實訓100例:基于8051+Proteus仿真(第2版)北京:電子工業(yè)出版社,2012,(10).[9]朱定華.數(shù)字電路與邏輯設計.北京:清華大學出版社,2011.[10]趙建玲.51系列單片機開發(fā)寶典[M].電子工業(yè)出版社,2007.[11]郭天祥.新概念51單片機C語言教程.北京:電子工業(yè)出版社,2012.[12]陳毅,許飛,王學飛.基于單片機的交通燈智能控制系統(tǒng)[J].中國高新技術(shù)企業(yè),2009年第15期.[13]CharlesBlandRadcliffe.Proteus.NabuPress,2012,(02).[14]MeehanJoanne,MuirLindsey.SCMinMerseysideSMEs:Benefitsandbarriers[J]..TQMJournal.20082~5[15]B.A.Artwick,MicrocomputerInterfacing,Prentice-Hall,Inc,1980..附錄一:源程序代碼#include<reg52.h> //調(diào)用單片機頭文件#defineucharunsignedchar//宏定義"uchar"代替"unsignedchar"。#defineuintunsignedint //宏定義"uint"用來定義無符號整型數(shù)。#include"eeprom52.h"http://數(shù)碼管段選定義0123 4 5 6 7 8 9 ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,// A B C D EF 不顯示 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼 uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=4;//顯示數(shù)碼管的個位數(shù)//數(shù)碼管位選定義sbitsmg_we1=P2^0; //數(shù)碼管位選定義sbitsmg_we2=P2^1;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;chardx_s=0; //東西南北倒計時變量sbitdx_red=P2^4; //東西紅燈sbitdx_green=P2^3; //東西綠燈sbitdx_yellow=P2^2; //東西黃燈sbitnb_red=P2^7; //南北紅燈sbitnb_green=P2^6; //南北綠燈sbitnb_yellow=P2^5; //南北黃燈 ucharflag_jtd_mode;//交通燈的模式根據(jù)時間bitflag_1s=0;bitflag_500ms;bitflag_dx_nb; //東西南北模式ucharflag_5m_value;uchari;ucharflag_alarm; //模式uchardx_time=30,nb_time=20;//東西、南北的時間ucharflag_jdgz;//交通管制/***********************數(shù)碼位選函數(shù)*****************************/voidsmg_we_switch(uchari){ switch(i) { case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break; case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break; case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_we4=1;break; case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break; } }/******************把數(shù)據(jù)保存到單片機內(nèi)部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,dx_time); byte_write(0x2001,nb_time); byte_write(0x2058,a_a); }/******************把數(shù)據(jù)從單片機內(nèi)部eeprom中讀出來*****************/voidread_eeprom(){ dx_time=byte_read(0x2000); nb_time=byte_read(0x2001); a_a=byte_read(0x2058);}/**************開機自檢eeprom初始化*****************/voidinit_eeprom() ///開機自檢eeprom初始化{ read_eeprom(); //先讀 if(a_a!=1) //新的單片機初始單片機內(nèi)問eeprom { a_a=1; dx_time=30; nb_time=20;//東西、南北的時間 write_eeprom(); //保存數(shù)據(jù) } }/*********************************************************************名稱:delay_1ms()*功能:延時1ms函數(shù)*輸入:q*輸出:無***********************************************************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<110;j++);}/*********************************************************************名稱:display()*功能:數(shù)碼管顯示*輸入:無*輸出:無***********************************************************************/voiddisplay(){ uchari; for(i=0;i<smg_i;i++) { P0=0xff; //消隱 smg_we_switch(i); //位選 P0=dis_smg[i]; //段選 delay_1ms(3); }}/*********************定時器0、定時器1初始化******************/voidtime0_init() { EA=1; //開總中斷 TMOD=0X11; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時// ET1=1; //開定時器1中斷// TR1=1; //允許定時器1定時 }/*********************交通燈處理函數(shù)*********************************/voidjiaotongdeng_dis(){ if(flag_1s==1) { flag_1s=0; if(dx_s==0) { if(flag_dx_nb==1) dx_s=nb_time; //南北時間 else dx_s=dx_time; //東西時間 flag_dx_nb=~flag_dx_nb; } dx_s--; } dis_smg[0]=smg_du[dx_s%10]; dis_smg[1]=smg_du[dx_s/10]; dis_smg[2]=smg_du[dx_s%10]; dis_smg[3]=smg_du[dx_s/10];/***********************南北時間*********************************/ if(flag_dx_nb==0) { if(dx_s>5) { dx_red=1;//滅 dx_green= 0; //亮 dx_yellow=1; //滅 nb_red=0;//亮 nb_green= 1; //滅 nb_yellow=1; //滅 flag_5m_value=0; }elseif(dx_s<=5) //當小于5秒時黃燈要閃了 { dx_red=1;//滅 dx_green= 1; //滅 nb_red=0;//亮 nb_green= 1; //滅 nb_yellow=1; //滅 if(flag_500ms==0) { dx_yellow=0;//亮 } else { dx_yellow=1;//滅 } } }/***********************東西時間*********************************/ if(flag_dx_nb==1) { if(dx_s>5) { dx_red=0;//亮 dx_green= 1; //滅 dx_yellow=1; //滅 nb_red=1;//滅 nb_green= 0; //亮 nb_yellow=1; //滅 flag_5m_value=0; }elseif(dx_s<=5) //當小于5秒時黃燈要閃了 { dx_red=0;//滅 dx_green= 1; //滅 dx_yellow=1; //滅 nb_red=1;//滅 nb_green= 1; //滅 if(flag_500ms==0) //黃燈閃爍 { nb_yellow=0; //亮 } else { nb_yellow=1; //滅 } } } }/********************獨立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨立按鍵程序{ staticucharkey_new; key_can=20;//按鍵值還原 P1|=0x1f; if((P1&0x1f)!=0x1f) //按鍵按下 { delay_1ms(1); //按鍵消抖動 if(((P1&0x1f)!=0x1f)&&(key_new==1)) { //確認是按鍵按下 key_new=0; switch(P1&0x1f) { case0x1e:key_can=1;break; //得到按鍵值 case0x1d:key_can=2;break; //得到按鍵值 case0x1b:key_can=3;break; //得到按鍵值 case0x17:key_can=4;break; //得到按鍵值 } } } else key_new=1; }ucharmenu_1,flag_s;/********************設置函數(shù)*****************/voidkey_with(){ if(key_can==4)//交通管制按鍵 { flag_jdgz++; if(flag_jdgz>5) flag_jdgz=0; if(flag_jdgz==1) //全部亮紅燈 { dx_red=0;//亮 dx_green= 1; //滅 dx_yellow=1; //滅 nb_red=0;//亮 nb_green= 1; //滅 nb_yellow=1; //滅 } if(flag_jdgz==2) //東西紅燈南北綠燈 { dx_red=0;//亮 dx_gr
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB36-T1780-2023-離子吸附型廢棄稀土礦區(qū)土壤質(zhì)量調(diào)查評價技術(shù)規(guī)范-江西省
- DB36-T1722-2022-晚稻常規(guī)粳稻栽培技術(shù)規(guī)程-江西省
- DB36-T1566-2021-紅花油茶造林技術(shù)規(guī)程-江西省
- 安徽省亳州地區(qū)重點達標名校2024-2025年中考四模數(shù)學試題含解析
- C++調(diào)查外包項目試題及答案
- 2025年醫(yī)保支付方式改革政策實施試題試卷
- 企業(yè)管理培訓體系構(gòu)建
- 醫(yī)學皮膚護理課件
- 2025年消防行業(yè)消防安全知識培訓考試題庫:職業(yè)道德知識測試
- 2025年高考化學沖刺卷:化學反應速率與平衡圖像深度解析與應用題
- 無機化學說課
- 2022-2023學年天津市河西區(qū)部編版三年級下冊期末考試語文試卷
- 吊裝施工記錄
- 波浪理論基礎圖解
- 風力發(fā)電居間合作協(xié)議書范本
- 角的度量說課PPT
- 2023污水處理用復合碳源技術(shù)規(guī)范
- 肥皂盒模具畢業(yè)設計
- 4-6歲一盤粽子-超輕粘土課件
- 承插型盤扣式鋼管腳手架典型產(chǎn)品構(gòu)配件種類及規(guī)格
- 馬鈴薯(土豆)深加工項目可行性研究報告
評論
0/150
提交評論