基于單片機(jī)的交通信號燈控制系統(tǒng)的設(shè)計(jì)_第1頁
基于單片機(jī)的交通信號燈控制系統(tǒng)的設(shè)計(jì)_第2頁
基于單片機(jī)的交通信號燈控制系統(tǒng)的設(shè)計(jì)_第3頁
基于單片機(jī)的交通信號燈控制系統(tǒng)的設(shè)計(jì)_第4頁
基于單片機(jī)的交通信號燈控制系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

湖南工業(yè)大學(xué)本科生畢業(yè)設(shè)計(jì)(論文)湖南工業(yè)大學(xué)??粕厴I(yè)設(shè)計(jì)(論文)圖4.1主程序流程圖4.1.2延時(shí)方法可以有兩種一中是利用MCS-51內(nèi)部定時(shí)器才生溢出中斷來確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法[4]。4.1(1)計(jì)數(shù)器初值計(jì)算定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動產(chǎn)生溢出中斷請求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為TC可得到如下計(jì)算通式:TC=M-C式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213;在方式1時(shí)M的值為216;在方式2和3為28(2)計(jì)算公式T=(M-TC)T計(jì)數(shù)或TC=M-T/T計(jì)數(shù)T計(jì)數(shù)是單片機(jī)時(shí)鐘周期TCLK的12倍;TC為定時(shí)初值,如單片機(jī)的主脈沖頻率為TCLK12MHZ,經(jīng)過12分頻方式0TMAX=213*1微秒=8.192毫秒方式1TMAX=216*1微秒=65.536毫秒顯然1秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問題。(3)1秒的方法我們采用在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T0定時(shí)50毫秒。這樣每當(dāng)T0到50毫秒時(shí)CPU就響應(yīng)它的溢出中斷請求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為零表示1秒已到可以返回到輸出時(shí)間顯示程序。(4)相應(yīng)程序代碼①主程序定時(shí)器需定時(shí)50毫秒,故T0工作于方式1。初值:TC=M-T/T計(jì)數(shù)=216-50ms/1us=15536=3CBOHORG1000HSTART:MOVTMOD,#01H;令TO為定時(shí)器方式1MOVTH0,#3CH;裝入定時(shí)器初值MOVTL0,#BOHMOVIE,#82H;開T0中斷SEBTTRO;啟動TO計(jì)數(shù)器MOVRO,#14H;軟件計(jì)數(shù)器賦初值LOOP:SJMP$;等待中斷②中斷服務(wù)子程序ORG000BHAJMPBRT0ORG000BHBRT0:DJNZR0,NEXTAJMPTIME;跳轉(zhuǎn)到時(shí)間及信號燈顯示子程序DJNZMOV,R0,#14H;恢復(fù)R0值MOVTH0,#3CH;重裝入定時(shí)器初值MOVTL0,#BOHMOVIE,#82HRETIEND軟件延時(shí)MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機(jī)的工作頻率為6MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時(shí)間。具體的延時(shí)程序分析:DELAY:MOVR4,#08H延時(shí)1秒子程序DE2:LCALLDELAY1DJNZR4,DE2RETDELAY1:MOVR6,#0延時(shí)125ms子程序MOVR5,#0DE1:DJNZR5,$DJNZR6,DE1RETMOVRN,#DATA字節(jié)數(shù)數(shù)為2,機(jī)器周期數(shù)為1,所以此指令的執(zhí)行時(shí)間為2ms。DELAY1為一個(gè)雙重循壞循環(huán)次數(shù)為256*256=65536所以延時(shí)時(shí)間=65536*2=131072us約為125us。DELAYR4設(shè)置的初值為8,主延時(shí)程序循環(huán)8次,所以125us*8=1秒。由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。本系統(tǒng)采用硬件延時(shí)實(shí)現(xiàn)1S延時(shí)。4.2鍵盤掃描子程序4.2.1流程圖設(shè)計(jì)圖4.2鍵盤掃描流程圖4.2.2鍵盤中斷工作方式初始化時(shí),使鍵盤行輸出口全部置零。當(dāng)有按鍵按下時(shí),INT0(取反)端為負(fù)脈沖,向CPU發(fā)出中斷申請,若CPU開放外部中斷,則響應(yīng)中斷請求,進(jìn)入中斷服務(wù)程序。由于P1口的為雙向I/O口,可以采用一種稱為“線路反轉(zhuǎn)”的方法識別鍵值。步驟如下:(1)P1.0~P1.3輸出0,由P1.4~P1.7輸入并保存數(shù)據(jù)到A中;(2)P1.4~P1.7輸出0,由P1.0~P1.3輸入并保存數(shù)據(jù)到B中;(3)A的高4位與B的低4位組合成為鍵碼值;(4)查表求得鍵號。4.3顯示子程序4.3.1流程圖設(shè)計(jì)圖4.3顯示子程序流程圖4.3.2當(dāng)定時(shí)器定時(shí)為1秒,時(shí)程序跳轉(zhuǎn)到時(shí)間顯示及信號燈顯示子程序,它將依次顯示信號燈時(shí)間,同時(shí)一直顯示信號燈的顏色,這時(shí)在返回定時(shí)子程序定時(shí)一秒,在顯示黃燈的下一個(gè)時(shí)間,這樣依次把所有的燈色的時(shí)間顯示完后在重新給時(shí)間計(jì)數(shù)器賦初值,重新進(jìn)入循環(huán)。(1)8255PA口輸出信號接信號燈由于發(fā)光二極管為共陽極接法,輸出端口為低電平,對應(yīng)的二極管發(fā)光,所以可以用置位方法點(diǎn)亮紅、綠、黃發(fā)光二極管。(2)8255輸出信號與數(shù)碼管的連接LED燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點(diǎn)量而顯示不同的字形如SP,g,f,e,d,c,b,a管角上加上7FH所以SP上為0伏,不亮其余為TTL高電平,全亮則顯示為8[5]。采用共陰級連接:其中PC0\PB0-a,PC1\PB1-b,PC2\PB2-c,PC3\PB3-d,PC4\PB4-e,PC5\PB5-f,PC6\PB6-gPC7\PB7-SP接地表4.1驅(qū)動代碼表顯示數(shù)值dopgfedcba驅(qū)動代碼(16進(jìn)制)0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011006DH6011111007DH70000011107H8011111117FH4.4系統(tǒng)程序源代碼詳見附錄2第5章仿真與調(diào)試經(jīng)過軟件和硬件的設(shè)計(jì)后完成了本設(shè)計(jì),利用KeilC51對系統(tǒng)進(jìn)行了軟件仿真,達(dá)到了設(shè)計(jì)要求。在KeiluVision3中,通過“文件\新建文件”,新建匯編語言源程序文件,編寫相應(yīng)的程序產(chǎn)生以“.ASM”的后綴文件。在“文件\新建項(xiàng)目”的菜單中,新建項(xiàng)目并將匯編語言源程序文件包括在項(xiàng)目文件中。在“項(xiàng)目\編譯”菜單中將匯編源文件編譯,檢查語法錯(cuò)誤及邏輯錯(cuò)誤。在編譯成功后,產(chǎn)生以“*.hex”和“*.bin”后綴的目標(biāo)文件。并在“調(diào)試”菜單中選擇“啟動/停止調(diào)試”對程序進(jìn)行運(yùn)行調(diào)試。相關(guān)結(jié)果如下表。表5.1一個(gè)周期發(fā)光二極管與四位數(shù)碼管狀態(tài)狀態(tài)一A紅B綠A60-0B60-0正常狀態(tài)二A綠B黃A5-0B5-0正常狀態(tài)三A綠B紅A80-0B80-0正常狀態(tài)四A黃B紅A5-0B5-0正常緊急狀態(tài)A紅B紅不顯示正常復(fù)位狀態(tài)全滅A00B00正常結(jié)論本系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)Intel8051和可編程并行I/O接口芯片8255A、鎖存器74HC373為中心器件來設(shè)計(jì)交通燈控制器。充分利用了8051和8255芯片的I/O引腳,實(shí)現(xiàn)了紅、黃、綠、黃循環(huán)點(diǎn)亮,東西方向通行80秒、南北方向通行60秒、倒計(jì)時(shí)5秒時(shí)黃燈閃爍;交通燈信號與顯示時(shí)間經(jīng)鎖存器74HC373分別通過8255A的PB、PA口,8051P0口的低四位控制四位共陰數(shù)碼管的輸出狀態(tài)。系統(tǒng)不足之處不能控制車的左、右轉(zhuǎn)、以及自動根據(jù)車流改變紅綠燈時(shí)間等。這是由于本身地理位子以及車流量情況所定,如果有需要可以設(shè)計(jì)擴(kuò)充原系統(tǒng)來實(shí)現(xiàn)。經(jīng)過三個(gè)多月的努力,論文基本完成。從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對思路逐漸的清晰,整個(gè)寫作過程難以用語言來表達(dá)。論文設(shè)計(jì)的過程中,遇到了許多困難,但每次我都會積極主動的向老師、同學(xué)請教,同時(shí)自己也努力思考經(jīng)過多方努力,問題最終會解決,在解決問題的過程中,自己學(xué)到了許多。問題的解決,又讓自己的思路進(jìn)一步的清晰,當(dāng)論文經(jīng)過一次次的修改,基本成形的時(shí)候,我覺得很有成就感。通過這次畢業(yè)設(shè)計(jì),使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計(jì)思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。參考文獻(xiàn)[1]張迎新等.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2009.1[2]WWW.21部分資料.[3]雷麗文等.微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,1997.2[4]張毅坤.單片微型計(jì)算機(jī)原理及應(yīng)用[M].西安:電子科技大學(xué)出版社,1998[5]余錫存曹國華.單片機(jī)原理及接口技術(shù)[M].陜西:西安電子科技大學(xué)出版社,2000.7致謝肖老師全程指導(dǎo)了本次設(shè)計(jì),他在百忙之中審查了本設(shè)計(jì)的全部內(nèi)容,從設(shè)計(jì)方案的選擇到系統(tǒng)的軟件與硬件設(shè)計(jì),并對設(shè)計(jì)內(nèi)容進(jìn)行了認(rèn)真的指導(dǎo)和提出了許多好的建議;肖老師深厚的專業(yè)知識、嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和求實(shí)創(chuàng)新的工作作風(fēng)深深的影響著我。在此,謹(jǐn)向肖老師致以我最崇高的敬意和真摯的感謝!感謝我的家人和朋友對我生活上的關(guān)心,學(xué)習(xí)和工作的支持,這些使得我能夠安心的完成我的設(shè)計(jì)工作。最后,對在我的學(xué)習(xí)和成長道路上給予幫助的所有老師和朋友們表示深深地感謝,對評閱該論文的所有老師表示最崇高的敬意和真摯的感謝!學(xué)生簽名:日期:2011年6月附錄1附錄2程序源代碼ORG0000H;主程序的入口地址LJMPMAIN;跳轉(zhuǎn)到主程序的開始處ORG0003H;外部中斷0的中斷程序入口地址ORG000BH;定時(shí)器0的中斷程序入口地址LJMPT0_INT;跳轉(zhuǎn)到中斷服務(wù)程序處ORG0013H;外部中斷1的中斷程序入口地址MAIN:MOVSP,#50HMOVIE,#8EH;CPU開中斷,允許T0中斷,T1中斷和外部中斷1中斷MOVTMOD,#51H;設(shè)置T1為計(jì)數(shù)方式,T0為定時(shí)方式,且都工作于模式1MOVTH1,#00H;T1計(jì)數(shù)器清零MOVTL1,#00HSETBTR1;啟動T1計(jì)時(shí)器SETBEX1;允許INT1中斷SETBIT1;選擇邊沿觸發(fā)方式MOVDPTR,#003HMOVA,#80H;給8255賦初值,8255工作于方式0MOVX@DPTR,ALJMPFZH;轉(zhuǎn)讀鍵值程序 ORG0080HFZH:SETBRS0;保護(hù)第0組工作寄存器MOVP1,#0F0H;設(shè)P1.0~P1.3輸出0MOVA,P1;讀P1口ANLA,#0F0H;屏蔽低4位,保留高4位MOVB,A;將P1.4~P1.7的值存入BMOVP1,#0FH;反轉(zhuǎn)設(shè)置,設(shè)P1.4~P1.7輸出0MOVA,P1ANLA,#0F0H;屏蔽高4位,保留低4位ORLA,B;與P1.4~P1.7的值相或,形成鍵碼MOVB,AMOVR0,#00H;置鍵號初值MOVDPTR,#TAB;LOOP:MOVA,R0MOVCA,@A+DPTR;取鍵碼值CJNEA,B,NEXT2;與按鍵值相比較,如果不相等,繼續(xù)SJMPRR0;相等返回,鍵碼值在A中NEXT2:INCR0;鍵值加1CJNER0,#10H,LOOPRR0:CLRRS0;恢復(fù)第0組工作寄存器RETI;N0:SETBTR0;啟動T0計(jì)時(shí)器MOV76H,R7;紅燈時(shí)間存入76HN00:MOVA,76H;東西方向禁止,南北方向通行MOVR3,AMOVDPTR,#0000H;置8255A口,東西方向紅燈亮,南北方向綠燈亮MOVA,#0DDHMOVX@DPTR,A;黃燈閃爍5秒程序N1:SETBP3.0MOVR3,#05HMOVDPTR,#0000H;置8255A口,東西、南北方向黃燈亮MOVA,#0D4HMOVX@DPTR,AN11:MOVR4,#00HN12:CJNER4,#7DH,$;黃燈持續(xù)亮0.5秒N13:MOVDPTR,#0000H;置8255A口,東西、南北方向黃燈滅MOVA,#0DDHMOVX@DPTR,AN14:MOVR4,#00HCJNER4,#7DH,$;黃燈持續(xù)滅0.5秒CJNER3,#00H,N1;閃爍時(shí)間達(dá)5秒則退出;N2:MOVR7,#00HMOVA,R0;東西通行,南北禁止MOVR3,AMOVDPTR,#0000H;置8255A口,東西方向綠燈亮,南北方向紅燈亮MOVA,#0EBHMOVX@DPTR,A;黃燈閃爍5秒程序N3:MOVR3,#05HMOVDPTR,#0000H;置8255A口,東西,南北方向黃燈亮MOVA,#0E2HMOVX@DPTR,AN31:MOVR4,#00HCJNER4,#7DH,$;黃燈持續(xù)亮0.5秒N32:MOVDPTR,#0000H;置8255A口,南北方向黃燈滅MOVA,#0EBHMOVX@DPTR,AN33:MOVR4,#00HCJNER4,#7DH,$;黃燈持續(xù)滅0.5秒CJNER3,#00H,N3;閃爍時(shí)間達(dá)5秒則退出SJMPN00;1秒延時(shí)子程序N7:RETIT0_INT:MOVTL0,#9AH;給定時(shí)器T0送定時(shí)10ms的初值MOVTH0,#0F1HINCR4INCR5CJNER5,#0FAH,T01;判斷延時(shí)是否夠一秒,不夠則調(diào)用顯示子程序MOVR5,#00H;R5清零DECR3;倒計(jì)時(shí)初值減一T01:ACALLDISP1;調(diào)用顯示子程序RETI;中斷返回;顯示子程序DISP1:MOVB,#0AHMOVA,R3;R3中值二轉(zhuǎn)十顯示轉(zhuǎ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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論