摘要: 交通燈是交通安全的關鍵,它的有無作為交通安全檢查的重要依據,是交通秩序正常進行的有力保障。現代交通的發(fā)展,對技術也提出較高的要求,已成為一項社會課題。通過本次設計,掌握8086,8259,8255,7424等芯片的使用方法和編程方法,利用8086微處理器完成了8086交通燈設計。同時了解綜合問題的程序設計。 關鍵詞: 交通燈;8086; 軟硬件設計 目 錄 1概述.............................................................. 3 1.1課題背景.................................................... 3 1.2 研究意義.................................................... 3 2 硬件電路設計.................................................... 3 2.1相關芯片簡介................................................ 3 2.2 仿真電路總體設計............................................ 6 3 軟件編程設計.................................................... 8 3.1系統(tǒng)概述.................................................... 8 3.2 程序流程圖設計.............................................. 8 3.3 按鍵控制................................................. 10 3.4 字符動態(tài)顯示.............................................. 12 4 系統(tǒng)實現........................................................ 12 4.1 proteus仿真實驗.......................................... 12 5 結論............................................................ 13 5.1 收獲與體會................................................. 13 5.2 缺點與不足................................................. 13 參考文獻....................................................... 14 1概述1.1課題背景隨著社會經濟的發(fā)展,城市交通問題越來越引起人們的關注。人、車、路三者關系的協調,已經成為交通管理部門需要解決的重要問題之一。城市交通控制系統(tǒng)是用于城市交通數據監(jiān)測、交通信號燈控制與交通疏導的計算機綜合管理系統(tǒng)。如何采用合適的控制方法,最大限度利用好耗費巨資修建的城市道路,緩解城市道路壓力,越來越成為交通運輸管理和城市規(guī)劃部門有待解決的主要問題。人們希望通過增加技術含量的方法提高現有道路的利用率,提高道路交通的安全程度和道路使用的舒適性,所以對交通燈的設計和采納做了相關的研究和建模。 1.2 研究意義在安全行車方面,交通燈在安全行車過程中起著十分重要的作用,現在交通燈一般設在十字路口的醒目位置用紅、綠。黃三種顏色的指示燈。加一個倒計時的顯示計時器來控制行車。對于一般情況下的安全行車、車輛分流發(fā)揮著作用,但根據實際行車過程中出現的情況,主要有一下缺點:1、車道輪流放行時間相對固定,不能根據實際情況中兩個車道的車輛多少來設置改變通行時間;2、沒有考慮緊急車輛通過時,兩車道應采取的措施。如,有消防車通過執(zhí)行緊急任務時,兩車道都應停止,讓緊急車輛通過。因此如何合理高效利用交通燈指示交通情況,是一個需要解決的問題。 2 硬件電路設計2.1相關芯片簡介1. 8086 file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif Intel 8086擁有四個16位的通用寄存器,也能夠當作八個8位寄存器來存取,以及四個16位索引寄存器(包含了堆棧指標)。資料寄存器通常由指令隱含地使用,針對暫存值需要復雜的寄存器配置。它提供64K 8 位元的輸出輸入(或32K 16 位元),以及固定的向量中斷。大部分的指令只能夠存取一個內存位址,所以其中一個操作數必須是一個寄存器。運算結果會儲存在操作數中的一個寄存器。 2. 8255A
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif |
8255作為主機與外設的連接芯片,必須提供與主機相連的3個總線接口,即數據線、地址線、控制線接口。同時必須具有與外設連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內部結構分為3個部分:與CPU連接部分、與外設連接部分、控制部分。 3. 74273
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif |
由于8086運行速度過快,數碼管動態(tài)顯示出現顯示不全的現象,因此PC0,PC1輸出經過2-4譯碼器之后,再激活數碼管,起到緩沖作用。 4. 16位數碼管 16位數碼管的數碼管,由16個引腳控制,低電平有效,其中A-H控制外圈0,K-M控制內部, S1-s4是通道控制,高電平有效。
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif |
2.2 仿真電路總體設計
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
本實驗設計中,硬件部分涉及到了8086CPU、可編程并行接口8255A,并配合74LS373鎖存器、74LS245緩沖器、74LS138譯碼器等基本元器件,實現了設想的電子密碼鎖。 8255A:如圖2-6,8255A的D0~D7端口與CPU數據線ADO~AD7相接,CPU通過控制線的片選、讀、寫信號接口對8255A進行讀、寫與片選操作。外設接口端的A0-A7八個開關連接245的A0-A7端口,將外設信息傳送到245中,鍵入密碼輸入、密碼確定、修改密碼等多種功能。 file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif 圖2-6 開關功能 如圖2-7,A口的PA0-PA7端口通過鎖存器與數碼管相連用于外圈顯示,B口的PB0-PB7端口通過74LS373鎖存器與數碼管進行連接用于內部“米”字格的顯示。 3 軟件編程設計3.1系統(tǒng)概述密碼鎖是一種通過密碼輸入來控制電路或芯片工作,從而控制機械的開關和閉合,完成開鎖閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品。現在運用較廣的電子密碼鎖是以芯片為核心,通過編程來實現的,其性能和安全性已大大超過機械鎖。其特點是保密性好,隨機開鎖成功率幾乎為零。密碼可變,用戶可隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。無活動零件,不會磨損,壽命長。使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。 3.2 程序流程圖設計 密碼的輸入與判定
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif 位數+1
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gifN
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif |
Y
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif N
|
|
|
|
|
|
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif |
|
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif |
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif |
Y
|
|
|
|
|
| |
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif |
圖3-1 密碼的輸入與判定 密碼的更改
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif 位數+1
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gifN
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif |
Y
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif |
file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif N
|
|
|
|
|
|
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif |
|
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif |
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif |
Y
|
|
|
|
|
| |
|
| file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image029.gif |
圖3-2 密碼的更改 3.3 按鍵控制(1)、控制字 給8255A輸入端口控制字: void fun82531() { __asm { mov dx, 0x8006 mov al, 0x37 out dx, al } outp(GATE0,0x02); outp(GATE0,0x00); } void fun82532() { __asm { mov dx, 0x8006 mov al, 0x77 out dx, al } outp(GATE0,0x99); outp(GATE0,0x99); } (2)、密碼鍵入控制 整個過程中主要是對是否有按鍵信息輸入進行掃描判斷,并將所得信息與燈管編號進行比對,確定所選擇要鍵入數字的燈管。當目前的燈管數字被選出后,自動跳到下一個燈管,直到四位數字全部選擇完畢。 3.4 字符動態(tài)顯示四位密碼選出后,顯示四位選定數字,然后檢測密碼正確性,8255A通過端口A、B、C讀取指令,根據檢測結果,密碼正確則輸出代碼顯示*YES,錯誤則顯示ERRO。 見附錄:檢測密碼正確性 更改密碼,鍵入“更改密碼”控制字后,與輸入密碼的流程相同,先選擇燈管,待選定數字后跳至下一個,直到四位數字全部選定,然后鍵入“確認更改”指令,則密碼更改成功。 見附錄:密碼更改。 4 系統(tǒng)實現4.1 proteus仿真實驗file:///C:/Users/38221/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif 圖4-1 Proteus仿真圖 如圖4-1,為本實驗的Proteus仿真模擬圖,整個實驗共用到8086CPU一個、74LS245一個、可編程并行接口8255A一個,74LS273鎖存器三個、74LS138譯碼器一個、數碼管一個、與非門兩個、開關八個、電阻八個。 5 結論通過對電子密碼鎖的設計,從設計硬件電路到編寫代碼,再到對程序的調試,在整個的設計過程中學到了很多。例如,我們用到了8255A的并行接口,將二進制的控制信息傳入8086CPU中處理,選擇對密碼是否正確進行調整。與此同時,我們又通過這次產品的設計加深了對硬件知識的理解以及常用芯片功能的掌握。在使用8255A和8253的時候,要對其進行初始化,這初始化程序的編寫,有助于對這些接口芯片的工作原理的理解。總之,在實驗中自己動手,把理論知識用于實踐,從中能夠學到很多。 5.1 收獲與體會通過這一個多月以來對電子密碼鎖的硬件電路的設計,以及對軟件程序的編寫,我們又對計算機硬件技術基礎這門課程有了更深一層的理解。與此同時,我們還有如下收獲: 首先,我們能熟練掌握計算機硬件技術知識,其中包括硬件電路設計和軟件編程設計等內容。計算機硬件技術基礎是比較難學的科目,尤其是對那些沒有過編程基礎的學員來說,剛開始接觸時感覺力不從心。但是,通過設計這個電子密碼鎖,我組成員都能對硬件設計以及軟件編程熟練掌握,并且能實現原計劃的功能,效果比較顯著。 其次,增強了我們組員之間的團結協作的能力。通過實驗,我們明白了團隊力量的強大,只有一個團隊能夠齊心協力、合理分工,工作才能有條不紊的高效開展。 5.2 缺點與不足雖然在這次電子密碼鎖的制作中我們收獲了很多,但是也不乏問題存在。 首先,剛開始的時候分工不明確,導致制作進程比較緩慢。由于剛接觸一門全新的課程,再加上對程序的編寫不是很熟悉,所以大家都不知道從何入手,沒有明確的分工。隨著教員對硬件知識的講解,再結合平時的小組討論與自我學習,有主攻硬件設計的,有軟件編程的,也有PPT制作和論文編寫的,以此提高了我們的效率。 其次,由于我們知識積累不足,導致大家在制作中遇到很多困難,期出現厭煩心理,抱怨聲音較多,甚至出現了分歧與爭吵。當然,對于一個團隊來說,出現矛盾是在所難免的,這時候作為組長更應該起到穩(wěn)定軍心的作用。大家在一起,從頭來過,尋找解決問題的辦法,一起攻克難關。
|