1. 需求分析
本系統(tǒng)的設(shè)計(jì)首先必須了解交通路燈的亮滅規(guī)律,。設(shè)有一個(gè)十字路口,1,、3 為南,,北方向, 2,、4 為東,,西方向,初始態(tài)為4 個(gè)路口的紅燈全亮,。之后,, 1、3 路口的綠燈亮,,2,、4 路口的紅燈亮, 1,、3 路口方向通車(chē),。延遲一段時(shí)間后, 1,、3 路口的綠燈熄滅,,而1、3 路口的黃燈開(kāi)始閃爍,。閃爍若干次后,, 1,、3 路口的紅燈亮, 同時(shí) 2,、4 路口的綠燈亮,, 2、4 路口方向開(kāi)始通車(chē),。延遲一段時(shí)間后,, 2、4 路口的綠燈熄滅,,而黃燈開(kāi)始閃爍,。閃爍若干次后,再切換到1,、3 路口方向,。之后,重復(fù)上述過(guò)程,。對(duì)于各組燈的亮滅,,我們運(yùn)用的是8255A 的輸入輸出功能。
2. 對(duì)于各組燈亮滅的時(shí)間控制方案
A 利用軟件 –程序來(lái)完成對(duì)時(shí)間延時(shí)的控制,。
此方案特點(diǎn):軟件定時(shí)是最簡(jiǎn)單的定時(shí)方法,,它不需要硬件支持,只要讓機(jī)器循環(huán)執(zhí)行某一條或一系列指令,,這些指令本身并沒(méi)有具體的執(zhí)行目的,,但由于執(zhí)行每條指令都需要一定的時(shí)間,重復(fù)執(zhí)行這些指令就會(huì)占用一段固定的時(shí)間,。因此,習(xí)慣上將這種延時(shí)方法稱(chēng)為軟件延時(shí),。通過(guò)正確的選取指令和改變定時(shí)時(shí)間,,靈活方便,而且節(jié)省費(fèi)用,。這種方法的缺點(diǎn)明顯就是CPU 的利用律太低,,在指定的循環(huán)期,CPU 不能去做任何其他有用的工作,,而僅僅是在反復(fù)的循環(huán),,等待預(yù)定的定時(shí)時(shí)間到來(lái),在許多情況下這樣是不允許的[1],。比如,,對(duì)動(dòng)態(tài)存儲(chǔ)器的定時(shí)刷新操作,只要處于開(kāi)機(jī)狀態(tài),,就需要一直不停地進(jìn)行下去,,顯然不能采用軟件延時(shí),。
B.利用芯片8253 芯片定時(shí)控制紅綠燈的亮滅時(shí)間。
此方案特點(diǎn):可編程定時(shí)器/計(jì)數(shù)器利用硬件電路和中斷的方法控制定時(shí),,定時(shí)時(shí)間和范圍完全有軟件來(lái)確定和改變,,并有微處理器的時(shí)鐘信號(hào)提供時(shí)間基準(zhǔn),因這種時(shí)鐘信號(hào)由晶體震蕩器產(chǎn)生,,故計(jì)時(shí)精確穩(wěn)定,。但該時(shí)鐘信號(hào)頻率太高,所以要把它送到專(zhuān)門(mén)的計(jì)數(shù)器/定時(shí)器芯片進(jìn)行分頻后,,才能產(chǎn)生個(gè)中所需要的定時(shí)信號(hào),。用可編程定時(shí)器/計(jì)數(shù)器電路進(jìn)行定時(shí)時(shí),先要根據(jù)預(yù)定的定時(shí)時(shí)間,,用指令對(duì)計(jì)數(shù)器/定時(shí)器芯片設(shè)定計(jì)算初值,,然后啟動(dòng)芯片進(jìn)行工作。計(jì)數(shù)器一旦開(kāi)使工作后,,CPU 就可以去做別的工作了,,等計(jì)數(shù)器到了預(yù)定的時(shí)間,變自動(dòng)形成一個(gè)輸出信號(hào),,該信號(hào)可以向CPU 提出中斷請(qǐng)求,,通CPU 定時(shí)時(shí)間已到,使CPU 做相應(yīng)的處理[2],?;蛘咧苯虞敵鲂盘?hào)啟動(dòng)設(shè)備去工作。這種方法不但顯著提高了CPU 的利用率,,而且定時(shí)時(shí)間由軟件來(lái)設(shè)置,,使用起來(lái)十分的靈活方便,加上定時(shí)時(shí)間又很精確,,所以獲得了廣泛的應(yīng)用,。
由上可知,該模擬系統(tǒng)設(shè)計(jì)的目的是控制車(chē)輛的有序流動(dòng),,CPU 在程序執(zhí)行過(guò)程中并沒(méi)有其他的工作要做只是單一的使程序正常運(yùn)行,,所以也就不用考慮其利用率的問(wèn)題的,在從節(jié)省資金的方面考慮第一種方案比第二種少用一個(gè)8253,,而且第一種方案只用一個(gè)芯片在維修方面也比第二種方案方便,。綜合這些因素,我們最終選擇第一種方案作為我們的設(shè)計(jì)方案,。
3. 電路設(shè)計(jì)及功能
3.1 8255 原理及接線圖
8255 是一種通用可編程并行輸入輸出接口芯片,,通過(guò)對(duì)它進(jìn)行編程,芯片可工作于不同的工作方式,,用8255 作接口時(shí),,通常不需要附加外部邏輯電路就可直接為CPU 與外設(shè)之間提供數(shù)據(jù)通道,,8255 內(nèi)部包含3 個(gè)8 位輸入輸出端口A,B,,C,,通過(guò)外部24 根輸入輸出線與外設(shè)交換數(shù)據(jù)或進(jìn)行通信聯(lián)絡(luò)。端口A 和端口B 都可以用作一個(gè)8 位的輸入口或8 位的輸出口,,出口既可作8 位輸入輸出口又可分為兩個(gè)4 位輸入輸出口,,還常常用來(lái)配合A口和B 口工作,用來(lái)產(chǎn)生A 口和B 口的端口狀態(tài)信號(hào),,8255A 有兩類(lèi)控制字,,一類(lèi)控制字用來(lái)定義各端口的工作方式,稱(chēng)為方式選擇控制字,,另一類(lèi)控制字用于對(duì)C 端口的任一位置進(jìn)行置位或者復(fù)位操作,,稱(chēng)為置位復(fù)位控制字對(duì)8255A 進(jìn)行編程時(shí)這兩種控制字都要寫(xiě)入控制字寄存器中,但方式選擇控制字的D7 位總是1,,而置位復(fù)位控制字的D7 位總是0[3],。
3.2 系統(tǒng)設(shè)計(jì)應(yīng)注意的問(wèn)題
A .程序中應(yīng)設(shè)定好8255A 的工作模式,使三個(gè)端口均工作于方式0,,并處于輸出態(tài)[4],。
B. 8255A 的A 端口地址為:300H, B 端口地址為: 301H, C 端口地址為: 302H, 控制口地址為:303H
C.8255A 可編程并行接口芯片的特性和編程命令: 8255A 具有兩個(gè)人8 位(A 口和B 口)和兩個(gè)4 位(C 口高/低4 位)并行I/O 端口。
4. 軟件模擬界面
軟件模擬界面如圖1 所示,。
圖1 軟件模擬界面
5. 軟件模擬流程圖
軟件模擬流程圖如圖2 所示,。
圖 2 軟件模擬流程圖示意
6. 系統(tǒng)核心程序代碼
7. 測(cè)試與分析
編寫(xiě)次程序的時(shí)候遇到的主要問(wèn)題及解決方案:
A. 延時(shí)問(wèn)題的解決:作者查閱了許多相關(guān)資料,最后選中程序中所用到的提取系統(tǒng)時(shí)間的這個(gè)方法,,其原因主要是因?yàn)檫@段語(yǔ)句比較短,,不容易出錯(cuò),但是有一個(gè)缺點(diǎn)就是不能使所添入的時(shí)間加上系統(tǒng)時(shí)間大于等于24:00,,要不就會(huì)出錯(cuò),,但是這個(gè)缺陷可以人工避免。
B. 循環(huán)問(wèn)題的解決:針對(duì)該問(wèn)題作者也嘗試了很多方法,,但最后選擇了GOTO 跳轉(zhuǎn)語(yǔ)句解決這個(gè)問(wèn)題。雖然在高級(jí)程序語(yǔ)言中我們并不提倡使用GOTO 語(yǔ)句,,但由于我們?cè)诖耸褂玫膮R編語(yǔ)言需要經(jīng)常性地與硬件交互[5],,使用該語(yǔ)句反而會(huì)使得問(wèn)題解決起來(lái)最簡(jiǎn)單,最方便,,程序易懂,,且不易出錯(cuò)。
8. 結(jié)論
電子設(shè)計(jì)正在當(dāng)今社會(huì)發(fā)揮越來(lái)越重要的作用,,其采用的軟硬件結(jié)合技術(shù)也逐漸成熟,,該模擬系統(tǒng)正是采用軟硬相結(jié)合的方法實(shí)現(xiàn)的[6],。該模擬交通紅綠燈的設(shè)計(jì)實(shí)現(xiàn)對(duì)于讀者了解在我們?nèi)粘I钪邪l(fā)揮巨大作用的交通指揮系統(tǒng)很有幫助,其對(duì)于交通燈原理的揭示對(duì)于電子設(shè)計(jì)的探索研究提供了思路,,相信隨著時(shí)代的發(fā)展,,我們能見(jiàn)證更多更好的電子設(shè)計(jì)產(chǎn)品問(wèn)世。