交通燈課程設計---交通控制系統(tǒng)設計_第1頁
已閱讀1頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《計算機原理及接口技術》 課程設計報告</p><p>  題 目 交通控制系統(tǒng)設計 </p><p>  學院(部) 電子與控制工程學院 </p><p>  專 業(yè) 建筑設施智能技術 </p><p>  班 級

2、 </p><p>  學生姓名 </p><p>  學 號 </p><p>  2011年12 月 18日至2011年 12 月 29日 </p><p><b>  前 言</b&

3、gt;</p><p>  隨著社會經(jīng)濟的發(fā)展,城市問題越來越引起人們的關注。人、車、路三者關系的協(xié)調(diào),已成為交通管理部門需要解決的重要問題之一。城市交通控制系統(tǒng)是用于城市交通數(shù)據(jù)檢測、交通信號燈控制與交通疏通的計算機綜合管理系統(tǒng),它是現(xiàn)代城市交通監(jiān)控指揮系統(tǒng)中最重要的組成部分。</p><p>  隨著城市機動車量的不斷增加,組多大城市如北京、上海、南京等出現(xiàn)了交通超負荷運行的情況,因此

4、,自80年代后期,這些城市紛紛修建城市高速通道,在高速道路建設完成的初期,它們也曾有效地改善了交通狀況。然而,隨著交通量的快速增長和缺乏對高速道路的系統(tǒng)研究和控制,高速道路沒有充分發(fā)揮出預期的作用。而城市高速道路在構造上的特點,也決定了城市高速道路的交通狀況必然受高速道路與普通道路耦合處交通狀況的制約。所以,如何采用合適的控制方法,最大限度利用好耗費巨資修建的城市高速通道,緩解主干道與匝道、城市同周邊地區(qū)的交通擁堵狀況,越來越成為交通運

5、輸管理和城市規(guī)劃部門亟待解決的主要問題。</p><p>  十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通燈的控制方式很多,本系統(tǒng)采用Intel8086為中心器件來設計交通燈控制器,實現(xiàn)本系統(tǒng)的各種功能。同時,本系統(tǒng)實用性強,操作簡單。</p><p><b>  關鍵字:交通燈</b>

6、</p><p><b>  目 錄</b></p><p>  前 言………………………………………………………………… 1</p><p>  關鍵字……………………………………………………………………1</p><p>  設計任務…………………………………………………………………3</p>

7、<p>  第一章 系統(tǒng)概述………………………………………………………4</p><p>  第二章 單元方案選擇與論證…………………………………………5</p><p>  硬件設計………………………………………………………5</p><p>  軟件設計………………………………………………………12</p><p>  第三

8、章 交通燈控制系統(tǒng)總電路圖……………………………………15</p><p>  第四章 源程序 ………………………………………………………16</p><p>  心得與體會………………………………………………………………26</p><p>  參考文獻…………………………………………………………………26</p><p>  指導教

9、師評語……………………………………………………………27</p><p><b>  一、設計任務:</b></p><p><b>  (一)設計要求:</b></p><p> ?。?)設A道為東西方向,B道為南北方向。A道和B道上均有車輛要求通過時,A、B道輪流放行。A道放行X分鐘),B道放行Y分鐘 。</p&

10、gt;<p> ?。?)一道有車而另一道無車時,交通燈控制系統(tǒng)應能立即讓有車道放行。</p><p> ?。?)交通燈的變化狀態(tài)如表1所示。A車道與B車道之間的切換時間為2秒(即:黃燈閃的時間)。</p><p>  表1 交通燈狀態(tài)表</p><p> ?。?)當有急救車和消防車時,A、B道紅燈亮,以禁止普通車輛通過并讓其穿紅燈而過。只有當其通過

11、后,交通燈才恢復到正常的狀態(tài)。(用中斷技術實現(xiàn))</p><p> ?。?)顯示燈控時間,當時間到時或剩余若干秒時,聲報警提示</p><p><b> ?。ǘU充功能</b></p><p>  (1)轉(zhuǎn)彎道的路燈控制</p><p> ?。?)分時區(qū)控制功能:如6:00~22:00正常路燈控制,22:00~次日6:

12、00, 黃燈閃爍控制模式。</p><p><b>  系統(tǒng)概述</b></p><p>  1.1設計步驟與思路</p><p>  1.1.1 總框圖設計構思</p><p>  在通過對題目以及要求的分析和思考,明確了設計任務的功能后,我們將設計過程分為五大模塊,并分析各個模塊之間的工作關系,最后將各模塊組合在一起

13、畫出總體功能模塊圖,并完成實現(xiàn)整體的電路圖,最終使用Proteus模擬器模擬其實際功能,最終完成設計書。</p><p>  1.1.2 各單元的構思 </p><p>  對于不通的實驗要求對各模塊進行分析,這個題目是一個硬件與軟件相結(jié)合的系統(tǒng),通過研究,我們根據(jù)總電路的功能的劃分,結(jié)合我們所學習過的知識對該系統(tǒng)進行具體的構思設計各單元模塊

14、,在實現(xiàn)各模塊構思設計時,從要實現(xiàn)的功能及如何實現(xiàn)等方面著手,從熟悉的芯片與原件入手,選擇相應的元器件及芯片,再進行細節(jié)設計,最后使用Proteus對其進行仿真與測試。</p><p>  1.1.3 總電路圖的構思</p><p> ?。?)在以上步驟中設計好單元模塊后,再從各個單元功能模塊間的控制關系著手,選擇最優(yōu)方案,分別對各單元功能模塊進行檢驗論證,在保證各個模塊間無沖突,均能正常

15、運行。</p><p>  (2)在仿真無誤后,對整體電路進行誤差分析,確定符合要求后,對模塊間進行連接時電路圖完整。而本設計的應重點分析部分。</p><p>  (3)根據(jù)整體的電路的分布進行分劃,設計好各個元件之間的連接以及位置,最后完成總的電路圖。</p><p>  第二章 單元電路設計與分析</p><p><b> 

16、 一、硬件設計</b></p><p><b>  1.譯碼電路設計</b></p><p>  通過分析8259、8253、8255各端口地址,設計合理的地址譯碼電路。8259的地址為00H、01H、8253的地址為30H、31H、33H,8255的端口地址為70H、71H、72H、73H。采用獨立編址的部分譯碼電路,具體見下圖所示:</p>

17、<p><b>  2.計時中斷模式</b></p><p>  2.1 8253級聯(lián)方式</p><p>  本設計中采用計數(shù)器0的輸出做計數(shù)器1的輸入做級聯(lián),計數(shù)器0的時鐘頻率為1.19MHZ,其中計數(shù)器0和1都采用方式2工作</p><p>  8259與8253連接</p><p><b&g

18、t;  3.中斷模塊</b></p><p><b>  4.并行通信模塊</b></p><p><b>  5.主電路模塊</b></p><p><b>  3.芯片介紹</b></p><p>  3.1 計時器/定時器8253</p>&

19、lt;p><b>  (1)內(nèi)部結(jié)構</b></p><p>  8253是Intel公司生產(chǎn)的三通道16位的可編程定時/計時器,24引腳雙列直插封裝。8253的內(nèi)部結(jié)構由數(shù)據(jù)總線緩沖器,讀、寫控制邏輯,3個獨立的計數(shù)器三部分組成。 </p><p><b>  1)數(shù)據(jù)總線緩沖器</b></p&

20、gt;<p>  這是一個三態(tài)8位雙向緩沖器,D7—D0同系統(tǒng)數(shù)據(jù)總線相連。CPU通過執(zhí)行輸入/輸出指令來實現(xiàn)對緩沖器發(fā)送或接受數(shù)據(jù)。8253的控制字也是通過該緩沖器傳送的。</p><p><b>  2)讀、寫控制邏輯</b></p><p>  讀、寫控制邏輯用來管理數(shù)據(jù)信息和控制字的傳送,它接收來自CPU地址總線和控制總線的有關信號,向3個獨立的

21、計數(shù)器的控制部件發(fā)送命令。對8253進行控制的信號有:</p><p>  A1,A0:片內(nèi)寄存器選擇信號;</p><p>  CS:片選信號,低電平有效;</p><p>  RD:讀信號,低電平有效;</p><p>  WR:寫信號,低電平有效。</p><p>  控制信號CS,RD,WR以及A1,A0的組合

22、可以實現(xiàn)對三個計數(shù)器和控制寄存器的讀寫操作。</p><p><b>  3)計數(shù)器</b></p><p>  三個計數(shù)器中每一個都有三條信號線:</p><p>  CLK:計數(shù)輸入,用于輸入定時基準脈沖或計數(shù)脈沖;</p><p>  OUT:輸出信號,以相應的電平指示計數(shù)的完成或輸出脈沖波形;</p>

23、<p>  GATE:選通輸入,用于啟動或禁止計數(shù)器的操作,以使計數(shù)器和計數(shù)器輸入信號同步。</p><p>  每個計數(shù)器中有四個寄存器:</p><p>  a.6位的控制寄存器,初始化時,將控制字寫入該寄存器;</p><p>  b.16位的計數(shù)初值寄存器,初始化時寫入該計數(shù)器的初始值,其最大初始值為0000H;</p><

24、p>  c.16位的減計數(shù)器,計數(shù)初值由計數(shù)初值寄存器送入減計數(shù)寄存器,當計數(shù)輸入端輸入一個計數(shù)脈沖時,減計數(shù)寄存器內(nèi)容減一;</p><p>  d.16位的輸出鎖存器用來鎖存計數(shù)執(zhí)行部件的內(nèi)容,從而使CPU可以對此進行讀操作.</p><p><b>  (2) 工作方式</b></p><p>  8253有六種工作方式:</

25、p><p> ?。?)方式0:計數(shù)結(jié)束中斷</p><p> ?。?)方式1:復觸發(fā)的單穩(wěn)態(tài)觸發(fā)器</p><p> ?。?)方式2:頻率發(fā)生器</p><p> ?。?)方式3:方波發(fā)生器</p><p> ?。?)方式4:軟件觸發(fā)選通信號</p><p> ?。?)方式5:硬件觸發(fā)選通信號<

26、;/p><p><b>  計數(shù)啟動方式:</b></p><p>  a.軟件啟動:GATE端為高電平,置入計數(shù)初值后的第2個CLK脈沖的下降沿。</p><p>  b.硬件啟動:GATE端有一個上升沿,對應CLK脈沖的下降沿</p><p>  計數(shù)過程中,可用門控脈沖GATE重新啟動計數(shù)。當GATE變低時,現(xiàn)行計數(shù)暫

27、停,變高后,下一個CLK輸入脈沖使減一計數(shù)器恢復計數(shù)初值重新開始計數(shù),所以可用一個外部控制邏輯來控制GATE,從而達到同步計數(shù)的作用</p><p><b>  (3) 控制字</b></p><p>  8253只有一個控制字,其格式和含義如圖3-2-1所示</p><p>  圖3-2-1 8253控制字</p><

28、p>  8253的控制寄存器和3個計數(shù)器分別具有獨立的編程地址,并且控制字本身的內(nèi)容又確定了所控制的寄存器序號,所以對8253的編程沒有太多嚴格的順序規(guī)定,使用非常靈活。但是,編程有3條原則必須嚴格遵守:</p><p>  1)在選擇任何一種工作方式下,都必須先向8253寫入控制字,控制字還起復位作用,它使OUT端變?yōu)楣ぷ鞣绞街幸?guī)定的狀態(tài)和對計數(shù)初值寄存器清零。</p><p> 

29、 2)對計數(shù)器設置初值前必須先寫控制字,在設置計數(shù)初值時,要符合控制字中的格式規(guī)定,控制字中一旦規(guī)定,具體初始值設定時就要與之一致。</p><p>  3)讀取當前計數(shù)值時,必須設置鎖存操作控制字。由于8253對外的數(shù)據(jù)線只有8根,對16位計數(shù)器進行寫入或讀取當前計數(shù)值時,需要分兩次進行;由于兩次讀/寫之間存在時間間隔,這期間可能恰好有計數(shù)脈沖,所以讀出的值帶有隨機性,為了使CPU能獲得計數(shù)器某一時刻準確的值,

30、8253設置了鎖存操作。當控制字的D5,D4位為00時,表示鎖存。當鎖存命令到來時,減一計數(shù)器記到某一個值,因為鎖存器是跟隨減一計數(shù)器工作的,所以,鎖存器中為同一個值,此時,這一數(shù)值被鎖住,當CPU將此鎖定值置后,鎖存器自動失鎖,于是又跟隨計數(shù)器變化。</p><p>  3.2 中段控制器8259A</p><p>  8259A是一種可由軟件進行控制的中斷控制器,可以使用于各種不同

31、環(huán)境,具有很強的中斷管理功能。</p><p>  8259A主要功能有:</p><p>  a.每片8259A可管理8級優(yōu)先權中斷源,在基于不增加其他電路的情況下,通過8259A的級聯(lián),最多可管理64級優(yōu)先級的中斷源;</p><p>  b對任何一個級別的中斷源都可以單獨進行屏蔽,使該級中斷請求暫時被禁止,直到取消屏蔽時為止;</p><p

32、>  c.向CPU提供可編程的標識碼,對于8086-Pentium的CPU來說就是中斷類型碼。</p><p>  d.具有六種中斷優(yōu)先權管理方式,即全嵌套方式、特殊全嵌套方式、自動循環(huán)方式、特殊循環(huán)方式、特殊屏蔽方式、中斷查詢方式,這些管理方式均可通過程序動態(tài)的進行變化;</p><p>  e.具有三種中斷結(jié)束方式,即自動中斷結(jié)束方式,一般的中斷結(jié)束方式和特殊的中斷結(jié)束方式;&l

33、t;/p><p>  f.8259A用NMOS工藝制作,只需要一組+5V電源。</p><p>  3.3可編程并行接口8255 </p><p><b>  (1)內(nèi)部結(jié)構</b></p><p>  8255為可編程的并行接口芯片,具有40個引腳,雙列直插DIP封裝,+5V供電,全部信號與TTL電平兼容。</p&g

34、t;<p><b>  8255的特點有:</b></p><p>  a.具有三個并行數(shù)據(jù)傳輸端口:A端口、B端口、C端口;</p><p>  b.每個端口擁有不同的工作方式:A口具有3種工作方式;B口具有2種工作方式;C口只有1種工作方式;</p><p>  c.每個端口工作在輸出方式時,具有鎖存功能;</p>

35、<p>  d.可以通過編程設置成4位端口,8位端口,12位端口,16位端口,20位端口或24位端口;</p><p>  8255由四部分組成,如下圖3-2-2所示</p><p>  圖3-2-2 8255A 結(jié)構圖</p><p><b>  (2)工作方式</b></p><p>  8255有三種

36、工作方式(方式0,方式1,方式2)可供選擇使用,而且三個端口可以同時按照各自選擇的工作方式工作,當然8255各端口在正常工作開始前,必須進行初始化設計,確定每個端口按哪種工作方式工作。</p><p>  方式0:基本輸入或輸出方式,為單向8位端口。多用于同步數(shù)據(jù)傳輸場合,無需握手線進行傳輸,也可用于查詢方式,此時往往用C口的某些信號線作為自定義狀態(tài)線和控制線。8255的三個端口都可工作于方式0。</p&g

37、t;<p>  方式1:選通輸入或輸出方式,為單向的8位端口。只有A口和B口可以工作在方式1狀態(tài),而此時C口的某些信號線一定作為A口或B口的聯(lián)絡線,其他非聯(lián)絡線仍可以工作在方式0 輸入或輸出狀態(tài)。</p><p>  方式2:雙向傳輸方式,既可以輸入又可輸出。只有A口可以采用方式2 工作,此時C口中的5根信號線作為A口的聯(lián)絡線,而其余的3根信號線可以做B口方式1時的聯(lián)絡線,或者與B口一起工作在方式0

38、狀態(tài)。</p><p><b>  (3)控制字</b></p><p>  8255在正常工作之前必須進行初始化設置,對所用到的每個端口都要設置具體的工作方式。8255具有2個控制字:方式控制字和C口位控控制字。2個控制字均需要送入控制寄存器口地址中,其區(qū)別在于:方式控制字中的D7=1,C口位控控制字中的D7=0。</p><p><b

39、>  1)方式控制字</b></p><p>  其中D7為方式控制字標志位,用來區(qū)別C口位控控制字。D6D5設置A口的工作方式,D4 設置A口處于方式0或者方式1時的傳輸方向,當處于方式2時此位無效,D3設置C口的高4位傳輸方向,由于C口只有一種工作方式,因此不需要設置方式,D2設置B口的工作方式,D1設置B口的傳輸方向,D0設置C口的低4位傳輸方向。當C 口的信號線作為A口或 B口的聯(lián)絡線時

40、,設置無效。</p><p><b>  2)C口位控控制字</b></p><p>  C口位控控制字用于將C口中的某一位清0或置1。C口位控控制字格式定義如下:</p><p>  其中D7為方式控制字標志位,用來區(qū)別方式控制字,D6D5D4為無效位,D3D2D1用來選擇PC7—PC0中之一,D0為0表示清0,為1表示置1。</p&g

41、t;<p><b>  二、軟件設計</b></p><p>  主程序流程圖如下所示:</p><p>  0定時中斷流程圖如下:</p><p><b>  1號外部中斷如圖:</b></p><p>  第三章 交通燈控制系統(tǒng)電路圖</p><p>&l

42、t;b>  第四章 源程序</b></p><p>  ;**************數(shù)據(jù)段初始化*****************</p><p>  DATA SEGMENT</p><p>  A_ICW1_8259 EQU 00H</p><p>  A_ICW2_8259 EQ

43、U 01H</p><p>  A_ICW4_8259 EQU 01H</p><p>  A_OCW2_8259 EQU 00H</p><p>  D_ICW1_8259 EQU 13H ;ICW1 上升沿,單片,寫ICW4</p><p>  D_ICW2_8259 E

44、QU 08H ;IR0中斷向量碼為08H</p><p>  D_ICW4_8259 EQU 01H ;非自動EOI方式</p><p>  A_CNT0_8253 EQU 30H</p><p>  A_CNT1_8253 EQU 31H </p><p>  A_CONL_

45、8253 EQU 33H </p><p>  D_CNT0_8253 EQU 2000 ;CNT0為2000,主頻2MHZ時定時為1ms</p><p>  D_CNT1_8253 EQU 500 ;CNT1為500,主頻1KHZ時定時為0.5s</p><p>  D_CONL0_8253 EQU

46、 34H ;CNT0為16位數(shù)據(jù),工作方式2,二進制</p><p>  D_CONL1_8253 EQU 74H ;CNT1為16位數(shù)據(jù),工作方式2,二進制</p><p>  A_PA_8255 EQU 70H </p><p>  A_PB_8255 EQU 71H</p>

47、<p>  A_PC_8255 EQU 72H</p><p>  A_CONL_8255 EQU 73H </p><p>  D_CONL_8255 EQU 88H ;A口方式0輸出,B口方式0輸出,C口低4位輸出</p><p>  MARK1 DB 00H

48、 ;0.5s計數(shù)</p><p>  MARK2 DW 0000H ;1min計數(shù)</p><p>  MK DB 00H ;特殊情況標志位</p><p>  MK1 DB 00H</p><p>  MK2 DB

49、 00H</p><p>  DATA ENDS </p><p>  ;***************堆棧段初始化***************</p><p>  STACK SEGMENT</p><p>  DW 64 DUP(?)</p><p>  S

50、TACK ENDS</p><p>  ;***************代碼段**********************</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA</p><p>  START: MOV AX,DA

51、TA ;段寄存器初始化</p><p>  MOV DS,AX</p><p>  PUSH DS;當前用戶DS段入棧保存</p><p>  MOV AX,0000H</p><p>  MOV DS,AX;修改DS=0000H,指向中斷矢量表所在段</p><

52、;p>  MOV AX,OFFSET IRQ0 ;取出中斷處理子程序的入口偏移地址(以0為基準)</p><p>  ADD AX,2000H ;修正,實際地址=裝入地址的偏移量+相對于0起始的偏移量</p><p>  MOV SI,0020H;IR0中斷矢量號為08H,處于矢量表的20H~23H&

53、lt;/p><p>  MOV [SI],AX;將偏移地址裝入矢量表</p><p>  MOV AX,0000H</p><p>  MOV SI,0022H</p><p>  MOV [SI],AX;將段地址(0000H)裝入矢量表 </p><p>  MOV

54、 AX,OFFSET IRQ1 ;取出中斷處理子程序的入口偏移地址(以0為基準)</p><p>  ADD AX,2000H ;修正,實際地址=裝入地址的偏移量+相對于0起始的偏移量</p><p>  MOV SI,0024H;IR1中斷矢量號為09H,處于矢量表的24H~27H</p>&l

55、t;p>  MOV [SI],AX;將偏移地址裝入矢量表</p><p>  MOV AX,0000H</p><p>  MOV SI,0026H</p><p>  MOV [SI],AX;將段地址(0000H)裝入矢量表</p><p>  POP DS;恢復用戶

56、數(shù)據(jù)段DS</p><p>  ;----------------初始化8259--------------------</p><p>  MOV AL,D_ICW1_8259 ;寫入ICW1,上升沿觸發(fā),寫ICW4</p><p>  MOV DX,A_ICW1_8259</p><p>  

57、OUT DX,AL</p><p>  MOV AL,D_ICW2_8259 ;寫入ICW2,設置IR0的中斷向量碼為08H,IR7中斷向量碼為0FH</p><p>  MOV DX,A_ICW2_8259</p><p>  OUT DX,AL</p><p>  MOV

58、 AL,D_ICW4_8259 ;寫入ICW4,非自動EOI</p><p>  MOV DX,A_ICW4_8259</p><p>  OUT DX,AL</p><p>  ;-----------------初始化8253--------------------</p><p> 

59、 MOV DX,A_CONL_8253</p><p>  MOV AL,D_CONL0_8253</p><p>  OUT DX,AL</p><p>  MOV AL,D_CONL1_8253</p><p>  OUT DX,AL</p><p>  MOV

60、 DX,A_CNT0_8253</p><p>  MOV AX,D_CNT0_8253</p><p>  OUT DX,AL</p><p>  MOV AL,AH</p><p>  OUT DX,AL</p><p>  MOV DX,A_CNT1_825

61、3</p><p>  MOV AX,D_CNT1_8253</p><p>  OUT DX,AL</p><p>  MOV AL,AH</p><p>  OUT DX,AL</p><p>  STI ;開中斷

62、</p><p>  ;------------------初始化8255---------------------</p><p>  MOV AL,D_CONL_8255 ;寫入8255方式控制字,A口方式0輸出,C口高4位輸入,B口方式0輸出,C口低4位輸出</p><p>  MOV DX,A_CONL_8255&l

63、t;/p><p>  OUT DX,AL</p><p>  ;**************主函數(shù)體死循環(huán)******************</p><p>  ;//////////////////////////////////////////</p><p>  MAIN: MOV AL,MK

64、 ;判斷MK是否為1,為1為特殊情況,為0為普通情況</p><p>  CMP AL,0</p><p>  JZ NORMAL</p><p>  JMP SPECIAL</p><p>  SPECIAL: MOV AL,10001000B ;東西紅,南北紅</p&g

65、t;<p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  JMP MAIN </p><p>  NORMAL: MOV AX,MARK2</p><p>  CMP AX,360 ;判斷MARK2是否>

66、=6:00</p><p>  JAE JUDGE ;是則繼續(xù)判斷</p><p>  JMP T22_0_6 ;否則進入22_0_6執(zhí)行</p><p>  JUDGE: CMP AX,1320 ;判斷MARK2是否<=22:00</p><p>  JBE

67、T6_22 ;是則進入T6_22執(zhí)行</p><p>  JMP T22_0_6 ;否則進入T22_0_6執(zhí)行</p><p>  ;///////////////////-------//////////////////////// </p><p>  T6_22: N

68、OP</p><p>  JUDGE_MT: MOV DX,A_PC_8255</p><p>  IN AL,DX ;讀PC口</p><p>  AND AL,11110000B ;保留高4位</p><p>  CMP AL,10H ;東西判斷<

69、/p><p>  JZ EAST</p><p>  CMP AL,20H ;南北判斷</p><p>  JZ WEST</p><p>  JMP JUDGE_MK1</p><p>  EAST: MOV AL,00101000B ;

70、東西綠,南北紅</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  JMP MAIN</p><p>  WEST: MOV AL,10000010B ;東西紅,南北綠 </p><

71、;p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL </p><p>  JMP MAIN </p><p>  JUDGE_MK1: CALL WARNING</p><p>  MOV AL,MK1</p><p>  CMP

72、 AL,0</p><p>  JZ GG1</p><p>  JNZ GG2</p><p>  GG1: NOP</p><p>  G1: MOV AL,MARK1 </p><p>  CMP AL,115

73、;58s</p><p>  JBE R_G ;如果小于等于115則執(zhí)行R_G</p><p>  JMP G2 </p><p>  R_G: MOV AL,10000010B ;東西紅,南北綠</p><p>  MOV DX,A_PA_8255</p>

74、;<p>  OUT DX,AL</p><p>  G2: MOV AL,MARK1</p><p>  CMP AL,116</p><p>  JZ R_YH ;如果MARK1等于116則執(zhí)行R_YH </p><p>  CMP AL,11

75、8</p><p>  JZ R_YH ;如果MARK1等于118則執(zhí)行R_YH </p><p>  JMP G3</p><p>  R_YH: MOV AL,10000100B ;東西紅,南北黃亮</p><p>  MOV DX,A_PA_8255</p

76、><p>  OUT DX,AL</p><p>  G3: MOV AL,MARK1</p><p>  CMP AL,117</p><p>  JZ R_YL ;如果MARK1等于117則執(zhí)行R_YL</p><p>  CMP AL,

77、119 </p><p>  JZ R_YL ;如果MARK1等于119則執(zhí)行R_YL</p><p>  JMP CX1_CX </p><p>  R_YL: MOV AL,10000000B ;東西紅,南北黃滅</p><p>  MOV

78、 DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  CX1_CX: JMP MAIN</p><p>  ;///////////////////////////////////////////</p><p>  GG2: NOP</p>&l

79、t;p>  G11: MOV AL,MARK1 </p><p>  CMP AL,115 ;58s</p><p>  JBE G_R ;如果小于等于115則執(zhí)行G_R</p><p>  JMP G22 </p><p>  G_R:

80、 MOV AL,00101000B ;東西綠,南北紅</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  G22: MOV AL,MARK1</p><p>  CMP AL,116</p><

81、;p>  JZ YH_R ;如果MARK1等于116則執(zhí)行YH_R</p><p>  CMP AL,118</p><p>  JZ YH_R ;如果MAKR1等于118則執(zhí)行YH_R</p><p>  JMP G33</p><p>  YH_R:

82、MOV AL,01001000B ;東西黃亮,南北紅</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  G33: MOV AL,MARK1</p><p>  CMP AL,117 </p>

83、<p>  JZ YL_R ;如果MARK1等于117則執(zhí)行YL_R</p><p>  CMP AL,119</p><p>  JZ YL_R ;如果MARK1等于119則執(zhí)行YL_R</p><p>  JMP CX2_CX</p><p>  YL_R:

84、 MOV AL,00001000B ;東西黃滅,南北紅</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  CX2_CX: JMP MAIN ;返回程序開始進行判斷</p><p>  ;///////

85、////////////-------////////////////////////</p><p>  T22_0_6: NOP</p><p>  G111: MOV AL,MK2</p><p>  CMP AL,0</p><p>  JZ YH_YH ;如果MK2等

86、于0即0,5s則執(zhí)行YH_YH</p><p>  JMP G222</p><p>  YH_YH: MOV AL,01000100B ;東西黃亮,南北黃亮</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL

87、 </p><p>  G222: MOV AL,MK2</p><p>  CMP AL,1</p><p>  JZ YL_YL ;如果MK2等于1即1s則執(zhí)行YL_YL</p><p>  JMP ONCE </p><p

88、>  YL_YL: MOV AL,00000000B ;東西黃滅,南北黃滅</p><p>  MOV DX,A_PA_8255</p><p>  OUT DX,AL</p><p>  ONCE: JMP MAIN ;返回程序開始進行判斷</p><p

89、>  ;***************報警子函數(shù)*****************</p><p>  WARNING PROC</p><p>  PUSH AX</p><p>  PUSH DX </p><p>  MOV AL,MARK1</p><p>  CMP

90、 AL,110 ;55s,即剩余5s</p><p>  JAE SOUND ;>=55s,即剩余不足5s時報警</p><p>  JB SILENT ;<55s則停止報警</p><p>  SOUND: MOV AL,01H ;C口按位操作

91、,C0口置1</p><p>  MOV DX,A_CONL_8255</p><p>  OUT DX,AL </p><p>  SILENT: MOV AL,00H ;C口按位操作,C0口置0</p><p>  MOV DX,A_CONL_8255</p>

92、<p>  OUT DX,AL </p><p>  POP AX</p><p>  POP DX</p><p><b>  RET</b></p><p>  WARNING ENDP </p><p>  ;****

93、************數(shù)碼管顯示子函數(shù)***************</p><p>  DISPLAY PROC</p><p>  PUSH AX</p><p>  PUSH DX </p><p>  PUSH BX</p><p>  MOV AL,MARK1

94、 </p><p>  CBW ;AL擴展成AX</p><p>  AND AX,00FFH ;AX高位清零</p><p>  MOV BL,2 </p><p>  DIV BL ;AX/BL傳到AL 即秒值</p>

95、<p>  MOV BL,60 </p><p>  SUB BL,AL ;60-AL傳到BL</p><p>  MOV AL,BL</p><p>  CBW </p><p>  AND AX,00FFH</p><p>  

96、MOV BL,10</p><p>  DIV BL ;AL中存放商,AH中存放余數(shù)</p><p>  MOV BH,AH</p><p>  MOV BL,16 </p><p>  MUL BL ;AL中的數(shù)乘以16即左移4位放入AX中 &

97、lt;/p><p>  MOV AH,BH</p><p>  OR AL,AH ;將AH中的余數(shù)與AL中移位后的整數(shù)相或</p><p>  MOV DX,A_PB_8255</p><p>  OUT DX,AL ;顯示轉(zhuǎn)換為BCD碼的整數(shù)</p><p

98、>  POP AX</p><p>  POP DX</p><p>  POP BX</p><p><b>  RET</b></p><p>  DISPLAY ENDP </p><p>  ;**************IRQ0中斷服務

99、子程序(定時)**************</p><p>  IRQ0: PUSH AX</p><p>  PUSH DX</p><p>  XOR AX,AX</p><p>  MOV AL,MK2 ;MK2每0.5s翻轉(zhuǎn)一次</p><p>  

100、CMP AL,0</p><p>  JZ MRH2</p><p>  JNZ MRL2</p><p>  MRH2: MOV AL,1</p><p>  MOV MK2,AL</p><p>  JMP OK2</p>&

101、lt;p>  MRL2: MOV AL,0</p><p>  MOV MK2,AL </p><p>  CALL DISPLAY ;MK2每兩次翻轉(zhuǎn)即1s則調(diào)用一次數(shù)碼管顯示函數(shù)</p><p>  JMP OK2 </p><

102、;p>  OK2: MOV AL,MARK1 </p><p>  INC AL</p><p>  MOV MARK1,AL</p><p>  CMP AL,120 ;判斷MARK1是否為1min</p><p>  JZ T1

103、MIN </p><p>  JMP OVER0</p><p>  ;//////////////////////////////////////</p><p>  T1MIN: MOV AL,MK1 ;MK1每1min翻轉(zhuǎn)一次</p><p>  CMP

104、 AL,0</p><p>  JZ MRH1</p><p>  JNZ MRL1</p><p>  MRH1: MOV AL,1</p><p>  MOV MK1,AL</p><p>  JMP OK</p><p> 

105、 MRL1: MOV AL,0</p><p>  MOV MK1,AL</p><p>  JMP OK </p><p>  OK: MOV AL,00H ;MARK1清零</p><p>  MOV MARK1,AL&l

106、t;/p><p>  MOV AX,MARK2</p><p>  INC AX</p><p>  MOV MARK2,AX</p><p>  CMP AX,1440 ;判斷MARK2是否為1day</p><p>  JZ T1D</p>&

107、lt;p>  JMP OVER0</p><p>  ;/////////////////////////////////////////</p><p>  T1D: MOV AX,0 ;MARK2清零</p><p>  MOV MARK2,AX</p><p>  OV

108、ER0: MOV AL,20H ;一般EOI命令,全嵌套方式,IR0復位 </p><p>  MOV DX,A_OCW2_8259</p><p>  OUT DX,AL </p><p>  POP DX</p><p>  POP AX</p><p

109、><b>  IRET</b></p><p>  ;**************IRQ1中斷服務子程序(特殊情況)**************</p><p>  IRQ1: PUSH AX </p><p>  PUSH DX</p><p>  MOV AL,MK<

110、;/p><p>  CMP AL,0 ;判斷MK為0還是1</p><p>  JZ MRH</p><p>  JNZ MRL</p><p>  MRH: MOV AL,1 ;如果MK為0則將MK置1</p><p>  MOV MK,

111、AL</p><p>  JMP OVER1</p><p>  MRL: MOV AL,0 ;如果MK為1則將MK置0</p><p>  MOV MK,AL</p><p>  JMP OVER1 </p><p>  OVER

112、1: MOV AL,20H ;一般EOI命令,全嵌套方式,IR1復位 </p><p>  MOV DX,A_OCW2_8259</p><p>  OUT DX,AL</p><p>  POP DX </p><p>  POP AX</p><p&g

113、t;  IRET </p><p>  CODE ENDS</p><p>  END START</p><p><b>  心得及體會</b></p><p>  通過此次課程設計讓我能夠親身參與電子產(chǎn)品的設計使我更加深深地體會到:現(xiàn)代

114、的社會是信息的社會,很多與人們生活緊密相關的產(chǎn)品都是電子產(chǎn)品。要熟練地掌握單片機的基本知識,這樣才能對試驗中出現(xiàn)的問題進行分析解決。通過這次對交通燈系統(tǒng)的設計,我們掌握了設計一個實用裝置電路的基本方法和基本步驟,掌握了實用裝置工作的基本原理,實際解決了設計中出現(xiàn)的問題,增強了尋找問題,解決問題的能力。此次電子設計的成功不僅幫助我們更好地掌握書本知識,尤其重要的是增強了我們的自信,培養(yǎng)了我們獨立思考的能力!</p><

115、p>  通過這周緊張而充實的課程設計,我學到了很多東西,讓我重新認識自己,收益匪淺,并對我以后所要做的畢業(yè)設計有了一個初步的了解。做好一個課程設計或畢業(yè)設計不僅要具備扎實的書本知識并會善于應用,還要學會查閱資料,對以前學過的知識不清楚的地方還要進行復習,實在搞不明白的地方要向老師或同學請教,這樣才可能做出一個比較不錯的課程設計。在這里我要感謝我們的指導老師,非常感謝老師和同學的指導和幫助。希望以后還能參加這樣的課程設計。我想我會做

116、的更好的。</p><p><b>  參考文獻</b></p><p>  1.戴梅萼,史嘉權編著.微型計算機技術及應用(第三版).北京,清華大學出版社,2003</p><p>  2.李順增,吳國東,趙何明等,微機原理與接口技術,北京,機械工業(yè)出版社,2006</p><p>  3.孫德文,微型計算機技術,高等教

溫馨提示

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

評論

0/150

提交評論