摘要 從培養學生綜合運用微機原理接口技術相關知識的能力入手,提出一種采用可編程接口芯片8259A、8253、8255A進行交通信號燈控制綜合設計性實驗的方案。
關鍵詞 交通信號燈控制;定時;中斷;狀態
中圖分類號:G642.423 文獻標識碼:B 文章編號:1671-489X(2011)18-0127-03
Research and Practice"on Traffic Signal Control Comprehensive Designing Experiment//Hou Baosheng
Abstract From the"students"principles of"the integrated"use of""microcomputer principle and interface technology"knowledge and"the ability to"interface to"start, this paper presents a"programmable"interface chip"8259A, 8253, 8255A"traffic light"control"to design"a"program of comprehensive experiments.
Key words traffic signal control; timing; interrupt; state
Author’s address Department of Electronic and Information Engineering, Shaanxi University of Technology, Hanzhong, Shaanxi, China 723003
1 引言
“微機原理與接口技術”是一門實踐性很強的專業平臺課程,所以在教學過程中,要及時安排實驗,理論與實踐相結合,使學生對所學內容的理解更深刻。在實驗環節上要注重實驗的實用性和創造性,使學生對理論教學的基本概念、基本理論的理解和掌握更加透徹,培養學生綜合運用微機原理接口技術相關知識的能力。
本文從二相位交通信號燈控制原理出發,采用微機原理與接口技術課程中可編程接口芯片8259A、8253、8255A,提出交通信號燈控制綜合性實驗的一種實現方案,對硬件電路設計原理、程序設計方法等進行較詳細的論述。
2 單點交通信號燈控制基本原理
單點交通信號燈以單個交叉口為控制對象,是交通信號燈控制的基本形式。控制原理是根據交叉口的流量和流向,確定配時相位次序方案,設定每個相位的綠信比時間,盡量使得交叉口各個方向交通流的通行能力最大,延誤最小。車行信號燈所控制的車流是以路口停車線作為控制參照物的,即紅燈時被控車流必須及時減速并在停車線后面停車,而綠燈時必須及時跨越停車線通行。相對其他種類的信號而言,它具有最嚴格的停車時間和位置限定,其控制等級最高。因此,為了便于嚴格執行這種信號燈的指令,在綠燈轉紅燈之間設計3秒黃燈預告,以便讓駕駛員預先估計自己車輛到達路口的時間,從而決定紅燈時能否在停車線后面平穩停車。交通信號燈相位是指在一個周期時間內按路口需求設定和按次序設定的綠燈通行權序列組(圖1)。交通信號周期是指交叉口信號給交叉口所有路口依次分配一次通行權時間的總和時間。
二相位固定周期的交通信號燈配時如圖2所示,南北路亮紅燈的時間長度為東西路亮綠燈和亮黃燈的時間總和,東西路亮紅燈的時間長度為南北路亮綠燈和亮黃燈的時間總和。根據南北路和東西路的交通燈從綠、黃再變成紅, 或從紅變成綠, 可以將一個信號燈配時周期劃分為4種狀態:S0,開始狀態,東西路交通燈為綠色, 南北路交通燈為紅色;S1,東西路交通燈為黃色,南北路交通燈為紅色;S2,東西路交通燈為紅色,南北路交通燈為綠色;S3,東西路交通燈為紅色,南北路交通燈為黃色。
3 硬件電路的設計
根據二相位固定周期交通信號燈的控制原理,當某一狀態定時時間到達后,交通信號燈的狀態就應由當前狀態轉換到下一狀態。在時鐘信號的作用下,交通信號燈的狀態由S1~S4循環往復。在微機原理課程中,可以采用可編程接口芯片8259A、8253、8255A來實現交通信號燈控制實驗,其系統原理圖如圖3所示。
本實驗系統的硬件電路由定時模塊、發光二極管模塊、數碼管顯示模塊和中斷模塊組成。定時模塊采用可編程計數器/定時器8253實現定時或計數。發光二極管模塊由8255A的PA口控制發光二極管來實現。數碼管顯示模塊用4個七段數碼管來倒計時顯示模塊實現,東西路和南北路分別用2個數碼管。數碼管采用動態顯示方案連接,用8255A的PB口輸出段碼,8255A的PC口的PC3~PC0輸出位碼。中斷模塊是由8259中斷控制器組成。
為了更深刻地理解可編程定時計數器8253工作方式的特點,時鐘信號采用雙穩態消抖電路,如圖4所示。8253工作時,撥動KK輸出矩形方波就可以使8253進行減1計數。
下面簡述實驗實現原理。可編程定時計數器8253工作于方式0——計數結束時,OUT2可產生中斷請求,定時計數器的輸出OUT2向可編程中斷控制器8259A的IR7發中斷請求。當單一中斷源時,8259A對中斷請求處理后通過INTR向CPU發中斷請求。當CPU響應可屏蔽中斷INTR中斷請求后,在響應信號INTA第一個負脈沖到來時將當前中斷服務寄存器ISR的對應位置為“1”,并使中斷請求寄存器IRR相應位置“0”,同時通知8259為CPU準備中斷類型號;在INTA第二個負脈沖到來時,CPU接受中斷控制器8259發來的中斷類型號N。CPU讀取中斷類型號N,乘以4,得到中斷向量表的地址而查得中斷服務程序入口地址。然后CPU保護標志寄存器,清標志位IF和TF,將斷點返回地址CS和IP入棧,轉向中斷服務程序入口。在執行中斷服務程序實現交通信號燈狀態的切換并修改計數初值后啟動下一狀態的計數,在計數值未到達0前,CPU執行主程序進行倒計時顯示。
4 軟件的設計
本程序由主程序、中斷服務子程序組成。主程序主要負責系統初始化、倒計時顯示和等待中斷。中斷服務子程序主要負責紅綠黃燈各種狀態切換和計數器初值的改變。
本系統中的可編程中斷控制器8259A、可編程定時/計數器8253、可編程并行接口芯片8255A使用前先必須確定其工作方式,設置工作方式控制字。可編程并行接口芯片8255A有兩個作用:一是用PA口來驅動發光二極管做交通燈使用,工作方式0輸出;二是PB口和PC口的下半部分用進行倒計時顯示,PB口輸出段碼,PC口的PC3~PC0輸出位碼,故8255A的端口PA、PC工作在方式0輸出。為了使編程定時/計數器8253定時時間到后能產生中斷請求,8253工作于方式0計數結束產生中斷請求。可編程中斷控制器8259A進行單一中斷處理。
主程序中系統初始化主要完成8259A、8255A、8253的工作方式控制字的設置,中斷向量的設置,8259中斷屏蔽寄存器的設置,8253計數初值的設置及啟動,用8255端口PA驅動發光二極管顯示交通信號燈的初始狀態。倒計時顯示根據8253當前計數器的計數值修正并在8255的PA口上顯示。在CPU讀取計數值前先用鎖存命令鎖存減1計數器的當前值,否則得不到正確的結果;CPU取走數據后,鎖存功能自動失鎖。讀入數據的程序設計過程,先要鎖存,然后才開始讀入。當交通信號燈的狀態為S1、S3時,紅燈的剩余時間應為計數器當前值加上黃燈的時間。
主程序流程圖如圖5所示。
中斷服務子程序是本設計的重點,負責信號燈各個狀態的處理切換、定時/計數器計數初值的設定及啟動。中斷程序的流程圖如圖6所示。根據當前的狀態跳轉到相應的處理程序段,在處理程序中完成定時初值和狀態的切換。根據狀態標志,先點亮對應的交通燈,再設置8253定時計數器新的計數初值。由于CPU在響應中斷請求過程中,將中斷允許標志IF和跟蹤標志TF清0,所以為了能使定時計數器下一次定時時間到達后CPU又能響應中斷請求,在中斷返回前應采用軟件方式將中斷允許標準位IF置為1。中斷返回前還應發送中斷結束命令EOI,將當前中斷服務寄存器ISR的對應位清0。
5 實驗結果
本實驗在啟東計算機總廠的DICE-8086B微機原理試驗箱上進行,交通信號燈的接線按表1連接。系統中8255A的PA5~PA0上依次接上東西紅、東西綠、東西黃、南北紅、南北綠和南北黃。實驗時,首先按設計電路原理圖接好線,然后將設計程序錄入系統并調試。程序調試通過后,運行程序,撥動雙穩態消抖電路開關KK就可以觀察PA口交通信號燈的狀態變化(表1)。同時8255A上的數碼管模擬倒計時顯示。
通過表1可以看出,若8253設置的計數初值設為N,則撥動開關的次數為N+1。這可以使學生對8253定時計數器的計數初值與計數脈沖數之間的關系有更加深入的理解。
6 結論
實驗教學效果表明, 將微機原理與接口技術的核心器件8259、8255、8253用在交通信號燈控制實驗中,教學效果良好,可較好地激發學生的學習興趣。這種從工程實際出發,結合微機原理課程的學習,使學生不僅能夠了解交通信號燈控制的原理,而且可以使學生很好地理解和掌握微機原理接口技術的相關內容,為今后進行微機系統設計的學習打下良好的基礎。
參考文獻
[1]周蔚吾.道路交通信號燈控制設置技術手冊[M].北京:知識產權出版社,2009
[2]葉愛芹,等.微機原理與接口技術課程綜合設計性實驗初探[J].中國科技信息,2009(22):263-264
[3]周荷琴,吳秀清.微型計算機原理與接口技術[M].4版.合肥:中國科技大學出版社,2008
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文