紅外控制交通燈的設計與實現(xiàn)微機課程設計報告書_第1頁
紅外控制交通燈的設計與實現(xiàn)微機課程設計報告書_第2頁
紅外控制交通燈的設計與實現(xiàn)微機課程設計報告書_第3頁
紅外控制交通燈的設計與實現(xiàn)微機課程設計報告書_第4頁
紅外控制交通燈的設計與實現(xiàn)微機課程設計報告書_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學院計算機科學與技術系微機原理與接口技術課程設計報告20112012學年第1學期課程微機原理與接口技術課程設計名稱紅外控制交通燈的設計與實現(xiàn)學生玉學號0904012045專業(yè)班級計算機科學與技術專業(yè)(09計本2)指導教師龍夏,何立新2011 年 12 月紅外控制交通燈的設計與實現(xiàn)一、題義分析與解決方案1 題意需求分析本程序設計要求使用紅外發(fā)送裝置設計紅外控制交通燈裝置,通過紅外發(fā)送管,發(fā)出載波信號,根據(jù)接收到的載波信號,獲得紅外編碼,根據(jù)編碼,改變交通燈的控制模式。本程序設計需應用軟件控制并運行接口電路,使連接在該接口上的紅、綠、黃發(fā)光二極管按交通紅、綠、黃燈形式閃爍。并通過人機交互輸入1或2

2、來按照預先設定好的紅外編碼,最終得到紅外載波,并根據(jù)得到的低電平延時來判斷輸入的1還是2。如果輸入1則使用單行線無左轉模式,如果輸入的是2則使用雙行線帶左轉和右轉。 程序一開始,交通燈全熄滅,若接收到的數(shù)據(jù)為1則表示單行線,首先東西方向綠燈(1號燈)亮,南北方向紅燈(7號燈)亮持續(xù)5S;然后東西方向綠燈(1號燈)閃爍6次,延遲3S,南北方向繼續(xù)紅燈(7號燈);接著東西方向黃燈(2號燈)亮3秒,南北方向繼續(xù)紅燈(7號燈)。接著南北方向綠燈(5號燈)亮,東西方向紅燈(3號燈)亮持續(xù)5S;然后南北方向綠燈(5號燈)閃爍6次,延遲3S,東西方向繼續(xù)紅燈(3號燈);接著南北方向黃燈(6號燈)亮3秒,東西

3、方向繼續(xù)紅燈(3號燈),再跳到一開始,如此循環(huán)。若紅外接受到的數(shù)據(jù)為2,則表示選擇的模式為雙行線帶左轉模式。首先東西方向直行綠燈(1號燈)亮,左轉紅燈(4號燈)亮,南北方向直行紅燈(7號燈)亮,左轉紅燈(8號燈)亮5秒;然后東西方向直行綠燈(1號燈)閃爍6次,延遲3S,左轉紅燈(4號燈)亮,南北方向繼續(xù)紅燈(7號燈和8號燈);之后東西方向左轉綠燈(2號燈)亮5秒,直行紅燈(3號燈)亮,南北方向直行紅燈左轉紅燈亮(7號燈和8號燈);接著東西方向左轉綠燈(1號燈)閃爍6次,延遲3S,南北方向繼續(xù)紅燈(7號燈和8號燈)。接著南北方向直行綠燈(5號燈)亮,左轉紅燈(8號燈)亮,東西方向直行紅燈左轉紅燈

4、(3號燈和4號燈)亮,持續(xù)5秒;接著南北方向直行綠燈(5號燈)閃爍6次,延遲3S,東西方向繼續(xù)直行紅燈左轉紅燈(3號燈和4號燈)亮;接著南北方向左轉綠燈(6號燈)亮,東西方向直行紅燈左轉紅燈(3號燈和4號燈)亮,持續(xù)5秒;然后南北方向左轉綠燈(6號燈)閃爍6次,延遲3S,東西方向繼續(xù)直行紅燈左轉紅燈(3號燈和4號燈)亮,再跳到一開始,如此循環(huán)。2 解決方法與思路1) 硬件部分使用到STAR ES598PCI實驗儀的模塊包括:A3區(qū):CPU總線、片選區(qū)B2區(qū):邏輯筆、單脈沖、頻率發(fā)生器C1區(qū):電源區(qū)C5區(qū):8253、8251B4區(qū):8255電路D2區(qū):05V電壓輸出G2區(qū):紅外通訊G6區(qū):發(fā)光管

5、、按鍵、開關CPU 通過8251的TXD端口將紅外控制信息的發(fā)送到紅外通訊的IN端口,經過紅外無線通訊將控制信息輸出端口,然后將信息送到8251的RXD端口。送到CPU進行判斷,根據(jù)收到的信號選擇相應的模式。8255是用來控制交通燈的,通過8255的A口來控制。需要A3區(qū)的3個端口用來接8251、8255、8253。B2區(qū)提供脈沖頻率。D2區(qū)提供電源。G6區(qū)提供發(fā)光管用來模擬交通燈。2)軟件部分(匯編語言編寫程序)首先要對8255進行初始化設計,設置8255的工作方式并確定8255的端口地址。編寫發(fā)光二極管的編碼,交通燈控制程序,兩種模式的選擇。對8253進行初始化,定時器的選擇,工作方式的選

6、擇,以與編碼方式。對8251進行初始化,設置方式控制字與命令控制字。編寫紅外通訊設備的數(shù)據(jù)發(fā)送子程序。二、硬件設計1選擇芯片8255A1) 8255A在本設計中的作用8255用來并行的發(fā)送交通燈編碼,接發(fā)光二極管,用來控制程序所控制要求的交通燈閃爍2) 8255A的功能分析 CS: 片選信號,低電平有效;A0、A1: 地址信號。JP52: PC口;JP53: PB口;JP56: PA口。圖2-1 8255A的部框圖8255A是可編程并行接口,部有3個相互獨立的8位數(shù)據(jù)端口,即A口、口和口。三個端口都可以作為輸入端口或輸出端口??谟腥N工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而

7、口通常作為聯(lián)絡信號使用。8255A的工作只有當片選CS效時才能進行。而控制邏輯端口實現(xiàn)對其他端口的控制。8255A的操作功能表 A1 A0操作數(shù)據(jù)傳送方式0 0 1 0 0讀 A 口A口數(shù)據(jù)數(shù)據(jù)總線0 0 1 0 1讀 B 口B口數(shù)據(jù)數(shù)據(jù)總線0 0 1 1 0讀 C 口C口數(shù)據(jù)數(shù)據(jù)總線0 1 0 0 0寫 A 口數(shù)據(jù)總線數(shù)據(jù) A口0 1 0 0 1寫 B 口數(shù)據(jù)總線數(shù)據(jù) B口0 1 0 1 0寫 C 口數(shù)據(jù)總線數(shù)據(jù) C口0 1 0 1 1寫控制口數(shù)據(jù)總線數(shù)據(jù)控制口表2-1 8255A的操作功能表8255A有三種工作方式,用戶可以通過編程來設置。本設計用到工作方式0。3) 8255A的技術參數(shù)與

8、外設相連的PA7PA0:A口數(shù)據(jù)信號線。PB7PB0:B口數(shù)據(jù)信號線。PC7PC0:C口數(shù)據(jù)信號線。與CPU相連的RESET:復位信號。當此信號來時,所有寄存器都被清除。同時三個數(shù)據(jù)端口被自動置為輸入端口。D7D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。CS:片選信號。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配,若低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當這幾位地址組成某一個低電平,8255A被選中。只有當其有效時,讀信號寫才對8255A進行讀寫。RD:讀信號。當此信號有效時,CPU可從8255A中讀取數(shù)據(jù)。WR:寫信號。當此信號有效時,CPU可向8255A中寫入數(shù)據(jù)。A1、A0:端口

9、選擇信號。8255A部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定:A1、A0為00時,選中A端口;A1、A0為01時,選中B端口;A1、A0為10時,選中C端口;A1、A0為11時,選中控制口。參數(shù)說明:輸入最低電壓:min-0.5V,max0.8 V輸入最高電壓:2.0 V輸出最低電壓:0.45 V輸出最高電壓:2.4 V8255A的方式控制字D7 D6 D5 D4 D3 D2 D1 D0100010011:工作方式 A口方式0輸出 B口方式0輸出 C口高4位輸入 C口低4位輸入圖2-2 8255A的方式控制字表方式0的工作特點:這種方式通常不用聯(lián)絡信號,不使用中斷,三個通道中的每一個都

10、有可以由程序選定作為輸入或輸出。通道的功能為:兩個8位通道:通道A和B。兩個四位通道:通道C高4位和低四位,任何一個通道可以作輸入/輸出,輸入是不鎖存的,輸出是鎖存的,在方式0時各個通道的輸入/輸出可有16種不同的組合。D7 D6 D5 D4 D3 D2 D1 D00XXX寫入位編碼寫入容 寫入位 編碼 0寫入0 D0-D7 000-111 1寫入1圖2-3 8255A的置位/控制字表2選擇芯片82531) 8253 在本設計中的作用8253在本實驗中的用作方波發(fā)生器,可編程通信接口8251A串行發(fā)送和接受數(shù)據(jù)時需要脈沖時鐘,8253的作用是為8251提供收發(fā)時鐘。2) 8253 的功能分析C

11、S:片選信號,低電平有效;A0、A1:地址信號;1片8253部有3個計數(shù)器,分別稱計數(shù)器0、1、2,其結構完全一樣,互相之間工作完全獨立。每個計數(shù)器有三個引腳和外部聯(lián)系:CLK:計數(shù)脈沖輸入,計數(shù)器對該引腳出現(xiàn)信號進行計數(shù),最高計數(shù)速率為2.6MHZ。Gate:門控輸入,用于控制計數(shù)器是否對CLK計數(shù)。OUT:輸出信號端。每個計數(shù)器部都有1個8位的控制寄存器,三個控制寄存器使用同一端口地址,在編程結構圖中,畫為1個控制寄存器;每個計數(shù)器部還有1個計數(shù)初值寄存器、1個計數(shù)執(zhí)行部件,執(zhí)行部件(CE)是1個16位減法計數(shù)器,其起始值等于初值寄存器(CR)的值。CR的值通過程序設置。輸出寄存器(OL)

12、用來鎖存執(zhí)行部件(CE)的值,以便CPU讀出。(CE)和1個輸出鎖存器,它們都是16位的。計數(shù)器0,計數(shù)器1,計數(shù)器2 這3個計數(shù)器互相獨立,各自可按不同的方式工作。計數(shù)器的部結構如前面所述,每個計數(shù)器包含一個16位的初始寄存器,一個計數(shù)執(zhí)行部件和一個鎖存器。計數(shù)執(zhí)行部件從初始值寄存器中獲得計數(shù)初值,便進行減1計數(shù),此時,鎖存器跟隨記數(shù)執(zhí)行部件的容而變化,當有一個鎖存命令來到時,鎖存器便鎖定當前計數(shù),直到被讀走以后,又跟隨計數(shù)執(zhí)行部件的動作。各計數(shù)器的外部輸入輸出信號如圖所示。CSRDWRA1A0功能01000對計數(shù)器0設置計數(shù)初值01001對計數(shù)器1設置計數(shù)初值01010對計數(shù)器2設置計數(shù)初

13、值01011設置控制字或給一個命令00100從計數(shù)器0讀出計數(shù)值00101從計數(shù)器1讀出計數(shù)值00110從計數(shù)器2讀出計數(shù)值當A1A0=11時,通過讀/寫控制邏輯電路選中控制積存器,此時,CPU可以寫入控制字。左表是CPU對8253各積存器訪問時,信號和功能之間的對應關系。對左表,我們作兩點說明:(1)除了這七組組合外,其他組合下,數(shù)據(jù)總線為高阻抗狀態(tài)。(2)當A1=A0時,第一次寫入的一定作為控制字,此后寫入的作為命令。讀/寫電路從系統(tǒng)控制總線接收輸入信號,經過組合,產生對8253各部分的控制。具體為:A1、A0用來對3個計數(shù)器和控制積存器進行尋址。RD讀信號。當RD為低電平時有效,此時,表

14、示CPU正在對8253的一個計數(shù)器進行讀操作。WR寫信號。當WR為低電平時有效,此時,表示CPU正在對8253的幾個計數(shù)器進行寫操作。CS片選信號。只有在CS為持續(xù)低電平的情況下,RD和WR才會受到確認,否則會被忽略3) 8253的技術參數(shù)因為8253的控制積存器和3個計數(shù)器分別具有獨立的編程地址,并且控制字本身的容又確定了所控制的積存器序號,所以,隊8253的編程沒有太多嚴格的順序規(guī)定,可以非常靈活.但是,編程有兩條原則必須嚴格遵守:(1)對計數(shù)器設置初始值前必須先寫控制字.(2)初始值設置時,要符合控制字中的格式規(guī)定,即只寫低位字節(jié)還是寫高位字節(jié),或者高低位字節(jié)都寫,控制字中一旦規(guī)定,具體

15、初始值設定時就要一致.A1A0寫(WR)讀(RD)00計數(shù)器0, 初值寄存器(CR)輸出寄存器, ( 輸出鎖存器OL) 01計數(shù)器1, 初值寄存器(CR) 輸出寄存器, ( 輸出鎖存器OL)10計數(shù)器2, 初值寄存器(CR)輸出寄存器, ( 輸出鎖存器OL) 11控制寄存器 8253無狀態(tài)寄存器8253有兩根地址線A1A0,對應4個端口地址,各寄存器的端口地址分配如下:(PC機中口地址B0H-BFH)。初始化工作有2點: (1)寫入控制字;(2)按控制字的要求寫入計數(shù)初值。8253有六種工作模式(05),每種工作模式決定以下容:1. 計數(shù)初值何時起作用?2. 門控信號的影響。3. OUT信號的

16、狀態(tài)4. 計數(shù)操作是否可以重復,或稱計數(shù)初值是否可以自動裝入。 不可重復 自動重復 條件重復5. 計數(shù)器的工作模式:計數(shù)器在CLK的下降沿使計數(shù)值減1,計數(shù)值減至0時,“計數(shù)到”。寫入初值0時,代表最大初值65536。下面分別為8253在各種模式下的時序。模式0:計數(shù)結束產生中斷模式1:可重復觸發(fā)的單穩(wěn)態(tài)觸發(fā)器 模式2:分頻器, 模式3:方波發(fā)生器模式4:軟件觸發(fā)的選通信號發(fā)生器 模式5:硬件觸發(fā)的選通信號發(fā)生器3.選擇芯片82511) 8251 在本設計中的作用本實驗中選擇8251作為可編程串行接口,主要的作用的是將紅外編碼串行的發(fā)送出去,通過紅外的無線傳輸,在紅外的接收端再將數(shù)據(jù)串行的發(fā)送

17、回8251,8251將數(shù)據(jù)發(fā)回cpu進行判斷2) 8251 的功能分析 CS 片選信號,低電平有效RxC、TxC: 收發(fā)時鐘;C/D: 命令/數(shù)據(jù);RXD、TXD: 串行收發(fā)。CLK: 時鐘。8251A由7個模塊組成,這7個模塊為接收緩沖器、接收控制電路、發(fā)送緩沖器、發(fā)送控制電路、數(shù)據(jù)總線緩沖器、讀寫控制邏輯電路和調制解調控制電路。A.讀/寫控制邏輯:它用來配合數(shù)據(jù)總線緩沖器工作。即:a.接收寫信號WR,并將來自數(shù)據(jù)總線的數(shù)據(jù)和控制字寫入8251A;b.接收讀信號/RD,并將數(shù)據(jù)或狀態(tài)字從8251A讀往數(shù)據(jù)總線;c.接收控制數(shù)據(jù)信號C/-D,將此信號和讀寫信號合起來通知8251A,當前讀寫的是

18、數(shù)據(jù)還是控制字、狀態(tài)字;d.接收時鐘信號CLK,完成8251A的部定時;e.接收復位信號RESET,使8251A處于空閑狀態(tài)。B.接收緩沖器:對應于編程結構中的“接收移位寄存器”對外引腳為RxD。 功能:從RxD引腳上接收串行數(shù)據(jù),并按照相應的格式轉換為并行數(shù)據(jù)。 C.接收控制電路:配合接收緩沖器工作,管理有關接收的所有功能。即:a.在異步方式下,芯片復位后,先檢測輸入信號中的有效“1”,一旦檢測到,就接著尋找有效的低電平來確定啟動位。b.消除假起動干擾。c.對接收到的信息進行奇偶校驗,并根據(jù)校驗結果設置相應的狀態(tài)位。d.檢測停止位,并按檢測結果,設置狀態(tài)位。D.發(fā)送緩沖器:從功能上來看,它對

19、應于編程結構圖中的的“發(fā)送移位寄存器”。發(fā)送緩沖器把來自CPU的并行數(shù)據(jù),加上相應的控制信息,然后轉換為串行數(shù)據(jù),并從TXD引腳發(fā)出去。E.發(fā)送控制電路:它和發(fā)送緩沖器配合工作,它控制和管理所有與串行發(fā)送有關的功能。即:a.異步方式下,為數(shù)據(jù)加上起始位、校驗位和停止位;b.同步方式下,插入同步字符,在數(shù)據(jù)中插入校驗位。F.數(shù)據(jù)總線緩沖器:數(shù)據(jù)總線緩沖器用來把8251A和系統(tǒng)數(shù)據(jù)總線相連,在CPU執(zhí)行輸入/輸出指令期間,由數(shù)據(jù)總線緩沖器發(fā)送和接收數(shù)據(jù),此外,控制字、命令字和狀態(tài)信息也通過數(shù)據(jù)總線緩沖器傳輸。所以,從功能上看,數(shù)據(jù)總線緩沖器是編程結構中數(shù)據(jù)輸入緩沖器、數(shù)據(jù)輸出緩沖器、控制寄存器和命

20、令寄存器的綜合。G.調制/解調器控制電路:它用來簡化8251A和調制解調器的連接。在進行遠程通信時,要用調制器將串行接口送出的數(shù)據(jù)信號變?yōu)槟M信號,再發(fā)送出去,接收端則要用解調器將模擬信號變?yōu)閿?shù)字信號,再由串行接口送往計算機主機。在全雙工通信情況下,每個收發(fā)站都要連接調制解調器。有了調制解調控制電路,就提供了一組通用的控制信號,使得8251A可以直接和調制器連接。它為Modem提供一組通用控制信號(DSR、DTR、RTS、CTS)。注意:8251未提供DCD(數(shù)據(jù)載波檢測信號)和RI(振鈴信號),如需使用DCD和RI,必須另加接口電路來提供。3) 8251的技術參數(shù)1.8251與CPU之間的連

21、接信號 8251A和CPU之間的連接信號可以分為4類,具體如下: (1)片選信號 /CS片選信號/CS是CPU的地址信號通過譯碼后得到的。/CS為低電平時,8251A 被選種。反之,/CS為高電平時,8251A未被選中,這種情況下,8251A的數(shù)據(jù)線處于高阻狀態(tài),讀信號/RD和寫信號/WR對芯片不起作用。(2)數(shù)據(jù)信號 D7D08251A有8根數(shù)據(jù)線D7D0,通過它們,8251A與系統(tǒng)的數(shù)據(jù)總線相連。實際上,數(shù)據(jù)線上不止傳輸一般的數(shù)據(jù),而且也傳輸CPU對8251A的編程命令和8251A送往CPU的狀態(tài)信息。(3)讀/寫控制信號/RD讀信號/RD為低電平時,用來通知8251A,CPU當前正從82

22、51A讀取數(shù)據(jù)或者狀態(tài)信息。/WR寫信號WR為低電平時,用來通知8251A,CPU當前正在往8251A寫入數(shù)據(jù)或者控制信息。 C/-D控制數(shù)據(jù)信號C/-D也是CPU送往8251A的信號,用來區(qū)分當前讀寫的是數(shù)據(jù)還是控制信息或狀態(tài)信息。具體地說,CPU在讀操作時,如C/-D為低電平,則讀取的是數(shù)據(jù),如C/-D為高電平,則讀取的是8251A當前的狀態(tài)信息;CPU在寫操作時,如C/-D為低電平,則寫入的是數(shù)據(jù),如C/-D為高電平,則寫入的是CPU對8251A的控制命令。 歸納起來,/RD、/WR、C/-D這三個信號和讀寫操作之間的關系如下表所示:需要簡要說明一點,8251A只有兩個連續(xù)的端口地址,數(shù)

23、據(jù)輸入端口和數(shù)據(jù)輸出端口合用同一個偶地址,而狀態(tài)端口和控制端口合用同一個奇地址。在8086/8088系統(tǒng)中,利用地址線A1來區(qū)分奇地址端口和偶地址端口。于是,A1為低電平時,正好選中了偶地址端口,在與/RD或/WR配合,變實現(xiàn)了狀態(tài)信息的讀取和控制信息的寫入。這樣,地址線A1的電平變化正好符合了8251A對C/-D端的信號要求,因此,在8086/8088系統(tǒng)中,將地址線A1和8251A的C/-D端相連。(4)收發(fā)聯(lián)絡信號 TxRDY TxRDY發(fā)送器準備好信號TxRDY用來告訴CPU,8251A已經準備好發(fā)送一個字符。具體地講,當/CTS為低電平而TxEN為高電平,并且發(fā)送緩沖器為空時,TxR

24、DY為高電平,于是,CPU便得知,當前8251A已經作好發(fā)送準備,因而CPU可以往8251A傳輸一個數(shù)據(jù)。實際使用時,如果8251A和CPU之間采用中斷方式聯(lián)系,則TxRDY可以成為一個聯(lián)絡信號,CPU通過讀操作變能檢測TxRDY,從而了解8251A的當前狀態(tài),進一步決定是否可以往8251A輸送一個字符。不管是用中斷方式還是查詢方式,當8251A從CPU得到一個字符后,TxRDY變變?yōu)榈碗娖健?TxE TxE發(fā)送空信號TxE為高電平時有效,用來表示此時8251A發(fā)送器中并行到串行轉換器空,它實際上指示了一個發(fā)送動作的完成。當8251A從CPU得到一個字符時,TxE便成為低電平。需要指出一點,即

25、在同步方式時,不允許字符之間有空隙,但是CPU有時卻來不與往8251A輸送一個字符,此時TxE變?yōu)楦唠娖剑l(fā)送器在輸出線上插入同步字符,從而填補了傳輸空隙。 RxRDY RxRDY接收器準備好信號RxRDY用來表示當前8251A已經從外部設備或調制解調器接收到一個字符,正等待CPU取走。因此,在中斷方式時,RxRDY可用來作聯(lián)絡信號。當CPU從8251A讀取一個字符后,RxRDY便變?yōu)榈碗娖?,等到下一次接收到嚴格新的字符后,又升為高電平,即有效電平。SYNDET SYNDET同步檢測信號SYNDET只用于同步方式。SYNDET引腳可工作在輸入狀態(tài),也可工作在輸出狀態(tài),這決定于8251A工作在同

26、步狀態(tài)還是工作在外同步情況,而這兩種情況又決定于8251A的初始化程編程。當8251A工作在同步情況時SYNDET作為輸出端,如果8251A檢測到了所要求的同步字符,則SYNDET便變?yōu)楦唠娖剑脕肀砻?251A當前已經達到同步。在雙同步情況下,SYNDET信號會在第二個同步字符的最后一位被檢測到后,在這一位的中間變?yōu)楦唠娖剑瑥亩砻饕呀涍_到同步。當8251A工作在外同步情況時,SYNDET作為輸入端,從這個輸入端進入的一個正跳變,會使8251A在/RxC的下一個下降沿時開始裝配字符。這種情況下,SYNDET的高電平狀態(tài)最少要維持一個/RxC周期,以便遇上/RxC的下一個下降沿。在復位時,SY

27、NDET變?yōu)榈碗娖?。在同步情況下,SYNDET作為輸出端,會在CPU執(zhí)行依次讀操作后,變?yōu)榈碗娖剑辉谕馔角闆r下,SYNDET作為輸入端,它的電平狀況決定于外部信號。2.8251與外部設備之間的信號連接 收發(fā)聯(lián)絡信號 數(shù)據(jù)信號(1)收發(fā)聯(lián)絡信號DTR、DSR、RTS、CTS 注意,RS-232-C標準的對應信號是:DTR、DSR、RTS、CTS。/DTR數(shù)據(jù)終端準備好信號/DTR是由8251A送往外設的,CPU通過命令可以使/DTR變?yōu)榈碗娖郊从行У碗娖?,從而通知外部設備,CPU當前已經準備就緒。/DSR數(shù)據(jù)設備準備好信號/DSR是由外設送往8251A的,低電平時有效,它用來表示當前外設已經準

28、備好。當/DSR端出現(xiàn)低電平時,會在8251A的狀態(tài)寄存器第7位上反映出來,所以,CPU通過對狀態(tài)寄存器的讀取操作,便可以實現(xiàn)對/DSR信號的檢測。例如,數(shù)據(jù)通信設備(Modem)準備好,該信號是外部設備(數(shù)據(jù)通信設備Modem)送給8251的。8251收到該信號后,使狀態(tài)寄存器的DSR位置1。CPU可以查詢狀態(tài)寄存器的DSR位,以了解外部設備的狀態(tài)。RTS請求發(fā)送信號/RTS是8251A送往外設,低電平時有效,CPU可以通過編程命令使/RTS變?yōu)橛行щ娖?,以表示CPU已經準備好發(fā)送。CTS清除請求發(fā)送信號/CTS是對/RTS的響應信號,它是由外設送往8251A的,當/CTS為低電平時,825

29、1A才能執(zhí)行發(fā)送操作。數(shù)據(jù)信號TXD、RXDTxD發(fā)送數(shù)據(jù)信號端TxD用來輸出數(shù)據(jù)。CPU送往8251的并行數(shù)據(jù)被轉換為串行數(shù)據(jù)后,通過TxD送往外設。RXD接收器數(shù)據(jù)信號端RxD用來接收外設送來的串行數(shù)據(jù),數(shù)據(jù)進入8251A后被轉變?yōu)椴⑿蟹绞健?251A除了與CPU與外設的連接信號外,還有電源端、地端和3個時鐘端CLK、TXC、RXC。其中,時鐘端CLK用來產生8251A器件的部時序,要求CLK的頻率在同步方式下大于接收數(shù)據(jù)或發(fā)送數(shù)據(jù)的波特率的30倍,在異步方式下,則要大于數(shù)據(jù)波特率的4.5倍;發(fā)送器時鐘TxC控制發(fā)送字符的速度,在同步方式下,TxC的頻率等于字符傳輸?shù)牟ㄌ芈?,在異步方式下T

30、xC的頻率可以為字符傳輸波特率的1倍、16倍或者64倍,具體倍數(shù)決定于8251A編程時指定的波特率因子;接收器時鐘RxC控制接收字符的速度,和TxC一樣,在同步方式下RxC的頻率等于字符傳輸?shù)牟ㄌ芈?,在異步方式下,則可為波特率的1倍、16倍或者64倍。在實際使用時,RxC和TxC往往連在一起,由同一個外部時鐘來提供,CLK則由另一個頻率較高的外部時鐘來提供。4選擇發(fā)光二極管1) 發(fā)光二極管在本設計中的作用本設計利用二極管能發(fā)光的特性,用于模擬交通燈有規(guī)律的閃爍。2)發(fā)光二極管功能分析當在發(fā)光二極管PN結上加正向電壓時,PN結勢壘降低,載流子的擴散運動大于漂移運動,致使P區(qū)的空穴注入到N區(qū),N區(qū)

31、的電子注入到P區(qū),這樣相互注入的空穴與電子相遇后會產生復合,復合時產生的能量大部分以光的形式出現(xiàn)。3)發(fā)光二極管的控制邏輯:模式一:單行線模式,8個發(fā)光二極管的編碼設置如下。燈1燈2燈3燈4燈5燈6燈7燈8東西綠燈東西黃燈東西紅燈無用南北綠燈南北黃燈南北紅燈無用圖12 單行無左轉時二極管的設定二進制編碼交通燈亮滅情況01111101東西綠燈亮,南北紅燈亮11111101東西綠燈滅,南北紅燈亮10111101東西黃燈亮,南北紅燈亮11010111東西紅燈亮,南北綠燈亮11011111東西紅燈亮,南北綠燈滅11011011東西紅燈亮,南北黃燈亮圖13 單行無左轉時的編碼設置模式二:雙行線模式,8個

32、發(fā)光二極管編碼如下:燈1燈2燈3燈4燈5燈6燈7燈8東西直行綠燈東西左轉綠燈東西直行紅燈東西左轉紅燈南北直行綠燈南北左轉綠燈南北直行紅燈南北左轉紅燈圖14 雙行有左轉時二極管的設定二進制編碼交通燈亮滅情況01101100B東西直行綠燈亮,左轉紅燈亮;南北直行紅燈亮,左轉紅燈亮11101100B東西直行綠燈閃爍,左轉紅燈亮;南北直行紅燈亮,左轉紅燈亮10011100B東西左轉綠燈亮,直行紅燈亮;南北直行紅燈亮,左轉紅燈亮11011100B東西左轉綠燈閃爍,直行紅燈亮;南北直行紅燈亮,左轉紅燈亮11000110B東西直行紅燈亮,左轉紅燈亮;南北直行綠燈亮,左轉紅燈亮11001110B東西直行紅燈亮

33、,左轉紅燈亮;南北直行綠燈閃爍,左轉紅燈亮11001001B東西直行紅燈亮,左轉紅燈亮;南北左轉綠燈亮,直行紅燈亮11001101B東西直行紅燈亮,左轉紅燈亮;南北左轉綠燈閃爍,直行紅燈亮圖15 雙行有左轉時的編碼設置5.紅外通訊設備1) 紅外通訊設備在本設計中的作用在本設計中紅外通訊的作用是通過紅外接收器和紅外發(fā)送器,可以無線的發(fā)送數(shù)據(jù),準確的說是數(shù)據(jù)的編碼。2)紅外通訊設備功能分析紅外通信, 即以紅外線作為通信載體, 通過紅外光在空中的傳播來傳輸數(shù)據(jù)的通信方式, 它由發(fā)射端和接收端來完成。在發(fā)射端, 發(fā)送的數(shù)字信號經過適當?shù)恼{制編碼后, 送入電光變換電路, 經紅外發(fā)射管轉變?yōu)榧t外光脈沖發(fā)射

34、到空中; 在接收端, 紅外接收器對接收到的紅外光脈沖進行光電變換, 解調譯碼后恢復出原信號。紅外發(fā)射端發(fā)送數(shù)據(jù)時, 是將待發(fā)送的二進制數(shù)據(jù)調制成一系列的脈沖信號后發(fā)射出去。紅外載波為頻率38KHz (可調)的方波, 采用脈寬調制PWM方式發(fā)送, 通過待發(fā)送二進制數(shù)據(jù)的“0”或“1”控制兩個脈沖之間的時間間隔, 與PWM的占空比。紅外載波既可以通過外圍硬件電路實現(xiàn), 也可以使用CPU部的定時器的PWM功能實現(xiàn)。紅外接收端在收到38KHz 的載波信號時, 會輸出低電平, 否則輸出高電平, 從而可以將“時斷時續(xù)”的紅外光信號解調成一定周期的連續(xù)方波信號, 經處理, 便可以恢復出原數(shù)據(jù)信號。 3)紅外

35、通訊設備技術參數(shù)IN:串行數(shù)據(jù)輸入 OUT:串行數(shù)據(jù)輸出CLK:載波輸入,可接31250(B2區(qū))頻率輸出信號調制如下圖:圖7 信號調制波形先發(fā)一段前導碼, 以檢驗這組碼是否為想要的碼。前導碼由一個9ms 的高電平和一個4ms 的低電平組成。然后再發(fā)32 位數(shù)據(jù)代碼, 其中高電平為0.5ms, 低電平為0.5ms的一個周期為代碼“0”; 高電平為0.5ms, 低電平為1.5ms 的一個周期為代碼“1”HS0038B的典型信號傳輸關系如下圖圖5 HS0038B的信號傳輸6.硬件總邏輯圖與其說明8255A的PA口同發(fā)光二極管相連相連,即從PA口讀入交通燈信號編碼;8255的片選接CS1端口,所分配

36、的地址為00F000FF。8253輸出端口分別接8251的RxC、TxC 收發(fā)時鐘,接入的頻率為2MHz,經26分頻產生16*4800Hz的頻率,為8251提供收發(fā)脈沖時鐘;8253的片選端CS接CS3端口,所分配的端口地址為00D000DF;CPU的WR(非),RD(非)和RESET與8255A的相對應的WR(非),RD(非)和RESET相連,通過控制信號CS(非),A1,A0以與RD(非),WR(非)來實現(xiàn)對數(shù)據(jù)口PA和控制寄存器進行讀寫操作。8251的片選端接CS2,端口地址為00E000EF;CPU將模式選擇信息通過端口發(fā)送到8251,8251在脈沖的作用下將收到的信息發(fā)送到紅外通訊設

37、備的接收端,通過發(fā)射設備的SAL6200將數(shù)據(jù)發(fā)送出去,在一段距離后由接收設備的HS0038B將數(shù)據(jù)傳送到紅外通訊設備的OUT端,信息再有OUT端將數(shù)據(jù)傳送到8251的RXD端,再通過端口送往CPU,通過對接收到的數(shù)據(jù)進行分析,選擇相應的模式,然后再由CPU將相應模式的交通信號的編碼送往8255進行顯示。硬件總邏輯圖:實驗連線:C5區(qū):CS(8253) A3區(qū):CS3C5區(qū):A0ES-PCI:A0C5區(qū):A1ES-PCI:A0C5區(qū):OUT0 C5區(qū):RxC、TxCC5區(qū):GATE0B1區(qū):VccC5區(qū):CLK0B2區(qū):2MC5區(qū):C/DES-PCI:A0C5區(qū):CS(8251)A3區(qū):CS2

38、C5區(qū):CLKB2區(qū):4MC5區(qū):RxDG2區(qū):OUTC5區(qū):TxDG2區(qū):INB4區(qū):CS(8255)A3區(qū):CS1B4區(qū):A0ES-PCI:A0B4區(qū):A1ES-PCI:A1G2區(qū):CLKB2區(qū):31250B4區(qū):JP56(PA口)G6區(qū):JP65B4區(qū):JP53(PB口) G6區(qū);JP63三、控制程序設計1 .控制程序設計思路說明程序一開始對8255進行初始化設計,設置8255的工作方式并確定8255的端口地址。編寫發(fā)光二極管的編碼,交通燈控制程序,兩種模式的選擇。對8253進行初始化,定時器的選擇,工作方式的選擇,以與編碼方式。對8251進行初始化,設置方式控制字與命令控制字。編寫紅外

39、通訊設備的數(shù)據(jù)發(fā)送子程序。交通燈全熄滅,若接收到的數(shù)據(jù)為1則表示單行線,首先東西方向綠燈(1號燈)亮,南北方向紅燈(7號燈)亮持續(xù)5S;然后東西方向綠燈(1號燈)閃爍6次,延遲3S,南北方向繼續(xù)紅燈(7號燈);接著東西方向黃燈(2號燈)亮3秒,南北方向繼續(xù)紅燈(7號燈)。接著南北方向綠燈(5號燈)亮,東西方向紅燈(3號燈)亮持續(xù)5S;然后南北方向綠燈(5號燈)閃爍6次,延遲3S,東西方向繼續(xù)紅燈(3號燈);接著南北方向黃燈(6號燈)亮3秒,東西方向繼續(xù)紅燈(3號燈),再跳到一開始,此時判斷是否有鍵按下,若無再跳到一開始,執(zhí)行,若有鍵按下跳到模式選擇那里進行模式選擇,如此循環(huán)。若接受到的數(shù)據(jù)為2

40、,則表示選擇的模式為雙行線帶左轉模式。首先東西方向直行綠燈(1號燈)亮,左轉紅燈(4號燈)亮,南北方向直行紅燈(7號燈)亮,左轉紅燈(8號燈)亮5秒;然后東西方向直行綠燈(1號燈)閃爍6次,延遲3S,左轉紅燈(4號燈)亮,南北方向繼續(xù)紅燈(7號燈和8號燈);之后東西方向左轉綠燈(2號燈)亮5秒,直行紅燈(3號燈)亮,南北方向直行紅燈左轉紅燈亮(7號燈和8號燈);接著東西方向左轉綠燈(1號燈)閃爍6次,延遲3S,南北方向繼續(xù)紅燈(7號燈和8號燈)。接著南北方向直行綠燈(5號燈)亮,左轉紅燈(8號燈)亮,東西方向直行紅燈左轉紅燈(3號燈和4號燈)亮,持續(xù)5秒;接著南北方向直行綠燈(5號燈)閃爍6次

41、,延遲3S,東西方向繼續(xù)直行紅燈左轉紅燈(3號燈和4號燈)亮;接著南北方向左轉綠燈(6號燈)亮,東西方向直行紅燈左轉紅燈(3號燈和4號燈)亮,持續(xù)5秒;然后南北方向左轉綠燈(6號燈)閃爍6次,延遲3S,東西方向繼續(xù)直行紅燈左轉紅燈(3號燈和4號燈)亮,此時判斷是否有鍵按下,若無再跳到一開始,執(zhí)行,若有鍵按下跳到模式選擇那里進行模式選擇,如此循環(huán)。30 / 302 控制程序流程圖開始初始化8255、8251、8253設置開關編碼信號根據(jù)開關編碼,設置紅外編碼8251向紅外設備發(fā)紅外編碼紅外設備發(fā)回紅外編碼根據(jù)紅外編碼選擇交通燈運行子模式進入子模式運行3 控制程序.MODEL TINYPCIBAR

42、3EQU1CH;8位I/O空間基地址(它就是實驗儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;廠商ID號Device_IDEQU8376;設備ID號.STACK100.DATAIO_Bit8_BaseAddressDW?msg0DB'BIOS不支持訪問PCI $'msg1DB'找不到Star PCI9052板卡 $'msg2DB'讀8位I/O空間基地址時出錯$'msg3DB'紅外編碼未收到$'PA_ADDDW00F0H ;8255PA口偏移量PB_AD

43、DDW00F1H;8255PB口偏移量PC_ADDDW00F2H;8255PC口偏移量COM_ADDDW00F3H;8255控制口偏移(CS1:0F0H-0FFH)CTL_8251DW00E1H;8251控制字或狀態(tài)字(CS2:0E0H-0EFH)DATA_8251DW00E0H;8251讀寫數(shù)據(jù)W_8253_T0 DW 00D0H;計數(shù)器0地址W_8253_C DW 00D3H;8253控制字(CS3:0D0H-0DFH)LED_Data1DB01111101B;東西方向綠燈亮,南北方向紅燈亮DB11111101B;東西方向綠燈閃爍,南北方向紅燈亮DB10111101B;東西方向黃燈亮,南北

44、方向紅燈亮DB11010111B;東西方向紅燈亮,南北方向綠燈亮DB11011111B;東西方向紅燈亮,南北方向綠燈閃爍DB11011011B;東西方向紅燈亮,南北方向黃燈亮LED_Data2DB01101100B;東西方向直行綠燈亮,左轉紅燈亮;南北方向直行紅燈亮,左轉紅燈亮DB11101100B;東西方向直行綠燈閃爍,左轉紅燈亮;南北方向直行紅燈亮,左轉紅燈亮DB10011100B;東西方向左轉綠燈亮,直行紅燈亮;南北方向直行紅燈亮,左轉紅燈亮DB11011100B;東西方向左轉綠燈閃爍,直行紅燈亮;南北方向直行紅燈亮,左轉紅燈亮DB11000110B;東西方向直行紅燈亮,左轉紅燈亮;南北

45、方向直行綠燈亮,左轉紅燈亮DB11001110B;東西方向直行紅燈亮,左轉紅燈亮;南北方向直行綠燈閃爍,左轉紅燈亮DB11001001B;東西方向直行紅燈亮,左轉紅燈亮;南北方向左轉綠燈亮,直行紅燈亮DB11001101B;東西方向直行紅燈亮,左轉紅燈亮;南北方向左轉綠燈閃爍,直行紅燈亮.CODESTART:MOVAX,DATAMOVDS,AXNOPCALLInitPCICALLModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉化為實地址CALLINIT_8255CALLINIT_8253CALLINIT_8251MOV DX,PA_ADD;燈全熄滅MOV AL,0ffHOUT

46、DX,ALNONE:MOV DX,PC_ADD;判斷輸入的開關信號(高電平或低電平)IN AL,DXCALLSendoutCALLReceiveinCMP AL,00000001bJZ L1CMP AL,00000010bJZ L4JMP LOSTL1:MOV si,3JMP L_MODE1L_MODE1:CALLMODE1JMP NONEL4:MOV si,3JMP L_MODE2L_MODE2:CALLMODE2JMP NONELOST:LEA DI,msg3MOV AH,9INT 21HJMP NONESendoutPROCNEARPUSH AXMOV DX,CTL_8251Sendou

47、t1:IN AL,DXTEST AL,01H;允許數(shù)據(jù)發(fā)送嗎?JZ Sendout1DEC DX;發(fā)送POP AXOUT DX,AL;發(fā)送1給紅外通訊RETSendoutENDPReceiveinPROCNEARMOV DX,CTL_8251Receivein1:IN AL,DXTEST AL,02HJZReceivein1;有數(shù)據(jù)嗎?DEC DXIN AL,DXRETReceiveinENDPMODE1PROCNEARMOV DX,PA_ADDMOV BX,offset LED_Data1MOV AL,0XLATOUT DX,ALcall dl_5smov ah,1CALL sub_mode

48、 call dl_3sMOV AL,3XLATOUT DX,ALcall dl_5smov ah,4call sub_modecall dl_3sRETMODE1ENDPMODE2PROCNEARMOV DX,PA_ADDMOV BX,offset LED_Data2MOV AL,0XLATOUT DX,ALcall dl_5s mov ah,1call sub_mode MOV AL,2XLATOUT DX,ALcall dl_5smov ah,3call sub_modeMOV AL,4XLATOUT DX,ALcall dl_5smov ah,5call sub_mode MOV AL,

49、6XLATOUT DX,ALcall dl_5smov ah,7call sub_mode1RETMODE2ENDPsub_modeproc near;子程序,入口參數(shù)AHcall sub_mode1INC AHMOV AL,AH XLAT OUT DX,ALretendpsub_mode1proc nearMOV CX,SIsub_MODE_1:MOV AL,ahXLATOUT DX,ALCALL DL500msdec ahMOV AL,ahXLAT OUT DX,ALCALL DL500msinc ahLOOP sub_MODE_1retendpINIT_8255PROC NEARMOV DX,COM_ADDMOV AL,89h;A口方式0,輸出,C口輸入OUT DX,ALRETINIT_8255ENDPINIT_8253 PROC NEAR MOV DX,W_8253_C MOV AL,37H;定時器0,方式3 OUT DX,AL MOV DX,W_8253_T0 MOV AL,26H;BCD碼26(2000000/26)=16*4800 OUT DX,AL MOVAL,0 OUTDX,AL RETINIT_825

溫馨提示

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

評論

0/150

提交評論