模擬交通燈控制系統(tǒng)設(shè)計(jì)_第1頁(yè)
模擬交通燈控制系統(tǒng)設(shè)計(jì)_第2頁(yè)
模擬交通燈控制系統(tǒng)設(shè)計(jì)_第3頁(yè)
模擬交通燈控制系統(tǒng)設(shè)計(jì)_第4頁(yè)
模擬交通燈控制系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、貴州師范學(xué)院電子課程設(shè)計(jì)報(bào)告書(shū)班級(jí) 11級(jí) 1班 學(xué)生姓名 王旭東 學(xué)號(hào) 專(zhuān)業(yè) 電子信息科學(xué)與技術(shù) 院系 物電學(xué)院 2014年6 月20 日摘 要隨著城市人口的快速增長(zhǎng)和機(jī)動(dòng)車(chē)數(shù)量的大量增加,城市交通燈作為緩解交通壓力、提高道路通行效率的重要手段,其作用越來(lái)越重要。因此,如何改進(jìn)交通燈的設(shè)計(jì),使其更好的適應(yīng)城市交通的發(fā)展也成為一個(gè)重要課題。紅綠燈控制系統(tǒng)是利用8253A定時(shí)/計(jì)數(shù)器芯片的定時(shí)功能,向8259A中斷控制器芯片發(fā)出定時(shí)中斷請(qǐng)求,驅(qū)動(dòng)8255A可編程并行接口芯片改變路口的LED燈的亮滅。系統(tǒng)采用DVCC-598JH+微機(jī)原理與接口技術(shù)實(shí)驗(yàn)箱作為測(cè)試與運(yùn)行的平臺(tái),8086匯編語(yǔ)言作為編

2、程語(yǔ)言,并用MASM5.0作為匯編語(yǔ)言開(kāi)發(fā)環(huán)境。關(guān)鍵詞:紅綠燈控制系統(tǒng) 8253A定時(shí)器 8259A中斷控制器 8255A可編程并行接口 DVCC-598JH+目 錄摘 要 2011.十字路口基本情況分析 2012.交通燈狀態(tài)轉(zhuǎn)換分析 43.緊急通行情況分析 54.硬件功能分析 64.1 8253A定時(shí)/計(jì)數(shù)器芯片 64.2 8259A中斷控制器芯片 74.3 8255A可編程并行接口芯片 95.系統(tǒng)設(shè)計(jì) 105.1硬件設(shè)計(jì) 105.1.1 電路分析 105.1.2 電路連接設(shè)計(jì) 105.2軟件設(shè)計(jì) 125.2.1 程序總體設(shè)計(jì) 125.2.2 程序流程設(shè)計(jì) 135.2.3 重要代碼分析 15

3、6.系統(tǒng)實(shí)現(xiàn) 196.1 軟件開(kāi)發(fā)與運(yùn)行環(huán)境 106.2 系統(tǒng)硬件環(huán)境 206.3 系統(tǒng)運(yùn)行步驟 206.4 系統(tǒng)測(cè)試結(jié)果 20參考文獻(xiàn) 21心得體會(huì) 221 十字路口基本情況分析設(shè)有一個(gè)十字路口,1、3為東西方向,2、4為南北方向,1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車(chē); 延時(shí)一段時(shí)間后,1、3路口的綠燈熄滅,而1、3路口的黃燈開(kāi)始閃爍,閃爍若干次以后,1、3 路口紅燈亮, 而同時(shí)2、4路口的綠燈亮,2、4路口方向通車(chē);延時(shí)一段時(shí)間后,2、4 路口的綠燈熄滅,而黃燈開(kāi)始閃爍,閃爍若干次以后,再切換到1、3路口方向,之后重復(fù)上述過(guò)程。2 交通燈狀態(tài)轉(zhuǎn)換分析合理的設(shè)置每個(gè)路口

4、、每個(gè)方向的交通燈的通行時(shí)間,對(duì)車(chē)輛能否及時(shí)疏散,有著決定性的作用。狀態(tài)1 的時(shí)候:1、3路口的綠燈熄滅,1、3路口的黃燈開(kāi)始亮,當(dāng)通行時(shí)間剩下5秒結(jié)束時(shí),LED會(huì)閃爍,而同時(shí)2、4路口的紅燈亮狀態(tài)2的時(shí)候:1、3 路口紅燈亮, 而同時(shí)2、4路口的綠燈亮,2、4路口方向通車(chē);狀態(tài)3的時(shí)候:1、3 路口紅燈亮, 而同時(shí)2、4路口的黃燈亮;狀態(tài)4 的時(shí)候:1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車(chē)。整個(gè)狀態(tài)轉(zhuǎn)換的過(guò)程見(jiàn)表2-1。表2-1 路口四個(gè)狀態(tài)和相互轉(zhuǎn)換過(guò)程狀態(tài)每個(gè)路口燈的點(diǎn)亮情況通行時(shí)間路口1路口2路口3路口4狀態(tài)1(ZT1)黃 紅 黃 紅5s狀態(tài)2(ZT2)紅 綠 紅 綠

5、15s狀態(tài)3(ZT3) 紅 黃 紅 黃5s狀態(tài)4(ZT4)綠紅綠紅15s完成四個(gè)狀態(tài)的一次循環(huán)需要40秒, 紅燈亮20秒 、綠燈亮15秒 、黃燈亮5秒完成了在適當(dāng)?shù)臅r(shí)間限度內(nèi),有效的疏散較大的通行量的目的。3 緊急通行情況分析手動(dòng)撥動(dòng)單脈沖一次,則產(chǎn)生一個(gè)優(yōu)先級(jí)高一級(jí)的中斷,程序轉(zhuǎn)而執(zhí)行此中斷處理程序,處理完后返回繼續(xù)執(zhí)行低級(jí)中斷。整個(gè)執(zhí)行過(guò)程見(jiàn)圖3-1循環(huán)值入棧紅燈全亮繼續(xù)處理未完成的低級(jí)中斷循環(huán)值出棧結(jié)束中斷服務(wù)程序繼續(xù)執(zhí)行主程序是否中斷主程序圖3-1 緊急中斷程序4 硬件功能分析4.1 8253A定時(shí)/計(jì)數(shù)器芯片8253A定時(shí)/計(jì)數(shù)器具有定時(shí)、計(jì)數(shù)雙功能。它具有三個(gè)相同且相互獨(dú)立的16位

6、減法計(jì)數(shù)器,分別稱(chēng)為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2。每個(gè)計(jì)數(shù)器計(jì)數(shù)頻率為02MHZ。其內(nèi)部數(shù)據(jù)總線(xiàn)緩沖器為雙向三態(tài),故可直接連在系統(tǒng)數(shù)據(jù)總線(xiàn)上,通過(guò)CPU寫(xiě)入計(jì)數(shù)初值,也可由CPU讀出計(jì)數(shù)當(dāng)前值。讀寫(xiě)控制邏輯,當(dāng)選中該芯片時(shí),根據(jù)讀寫(xiě)命令和送來(lái)的地址信息控制整個(gè)芯片工作。其工作方式通過(guò)控制字確定??刂谱旨拇嫫饔糜诮邮諗?shù)據(jù)總線(xiàn)緩沖器的信息。當(dāng)寫(xiě)入控制字時(shí),控制計(jì)數(shù)器的工作方式;當(dāng)寫(xiě)入數(shù)據(jù)時(shí)則裝入計(jì)數(shù)初值。控制寄存器為8位,只能寫(xiě)入不能讀出。8253A內(nèi)部結(jié)構(gòu)見(jiàn)圖4-1。當(dāng)8253A執(zhí)行計(jì)數(shù)功能時(shí),計(jì)數(shù)器裝入初值后,當(dāng)GATE為高電平時(shí),可用外部事件作為CLK脈沖對(duì)計(jì)數(shù)值進(jìn)行減1計(jì)數(shù)。每來(lái)一個(gè)脈沖減

7、1,當(dāng)計(jì)數(shù)值減為0時(shí),由OUT端輸出一個(gè)標(biāo)志信號(hào)。當(dāng)8253A執(zhí)行定時(shí)功能時(shí),計(jì)數(shù)器裝入初值后,當(dāng)GATE為高電平時(shí),由CLK脈沖觸發(fā)開(kāi)始自動(dòng)計(jì)數(shù)。當(dāng)計(jì)數(shù)到零時(shí),發(fā)計(jì)數(shù)結(jié)束定時(shí)信號(hào)。8253A可以工作在方式0到方式5,常用的有方式2頻率發(fā)生器方式和方式3方波發(fā)生器方式。在方式2時(shí),當(dāng)初值裝入后,OUT變?yōu)楦撸挥?jì)數(shù)結(jié)束,OUT變?yōu)榈汀T摲绞较氯绻?jì)數(shù)未結(jié)束,但GATE為低時(shí),立即停止計(jì)數(shù),將OUT變?yōu)楦撸划?dāng)GATE再變高時(shí),便啟動(dòng)一次新的計(jì)數(shù)周期。在方式3時(shí),當(dāng)裝入初值后,在GATE上升沿啟動(dòng)計(jì)數(shù),OUT輸出高電平;當(dāng)計(jì)數(shù)完成一半時(shí),OUT輸出低電平。在本系統(tǒng)中,8253A工作于方式3方波發(fā)生器

8、方式。計(jì)數(shù)器0CLK0GATE0OUT0計(jì)數(shù)器1CLK1GATE1OUT1計(jì)數(shù)器2CLK2GATE2OUT2數(shù)據(jù)總線(xiàn)緩沖器讀/寫(xiě)邏輯控制字寄存器D0-D7-RD-WRA0A1-CS圖 4-1 8253A內(nèi)部結(jié)構(gòu)圖4.2 8259A中斷控制器芯片8259A是專(zhuān)為控制優(yōu)先級(jí)中斷而設(shè)計(jì)的芯片。它將中斷源按優(yōu)先級(jí)排隊(duì)、辨認(rèn)中斷源和提供中斷向量的電路集成于一體,只要用軟件對(duì)它進(jìn)行編程,就可以管理8級(jí)中斷。8259A的內(nèi)部結(jié)構(gòu)見(jiàn)圖4-2。它由中斷請(qǐng)求寄存器(IRR)、優(yōu)先級(jí)分析器、中斷服務(wù)寄存器(ISR)、中斷屏蔽寄存器(IMR)、數(shù)據(jù)總線(xiàn)緩沖器、讀寫(xiě)控制電路、級(jí)聯(lián)緩沖器和比較器組成??刂七壿嫹?wù)寄存器優(yōu)

9、先級(jí)分析器中斷請(qǐng)求寄存器中斷屏蔽寄存器IMR內(nèi)部總線(xiàn)IR0IR1IR2IR3IR4IR5IR6IR7數(shù)據(jù)總線(xiàn)控制器讀寫(xiě)電路級(jí)聯(lián)緩沖器/比較器CAS0CAS1CAS2D0-D7-RD-WRA0-CSSP/-ENINT-INTA圖 4-2 8259A的內(nèi)部結(jié)構(gòu)對(duì)8259A編程和初始化的時(shí)候,首先要寫(xiě)初始化命令字ICW1-ICW4。寫(xiě)ICW1以確定中斷請(qǐng)求信號(hào)類(lèi)型,清除中斷屏蔽寄存器,進(jìn)行中斷優(yōu)先級(jí)排隊(duì)和確定系統(tǒng)是用單片還是多片。寫(xiě)ICW2用來(lái)定義中斷向量的高五位類(lèi)型碼。ICW3可以定義主片8259A中斷請(qǐng)求線(xiàn)上IR0-IR7有無(wú)級(jí)聯(lián)的8259A從片。寫(xiě)ICW4用來(lái)定義8259A工作時(shí)用8085模式

10、還是8088模式,以及中斷服務(wù)寄存器復(fù)位方式等。初始化命令字寫(xiě)完以后,要寫(xiě)8259A的控制命令字,它包括OCW1-OCW3。寫(xiě)OCW1可以設(shè)置或清除對(duì)中斷源的屏蔽。寫(xiě)OCW2設(shè)置優(yōu)先級(jí)是否進(jìn)行循環(huán)、循環(huán)的方式和中斷結(jié)束的方式。8259A復(fù)位時(shí)自動(dòng)設(shè)置IR0優(yōu)先權(quán)最高,IR7優(yōu)先權(quán)最低。寫(xiě)OCW3用來(lái)設(shè)置查詢(xún)方式和特殊屏蔽方式,并可以讀取8259A中斷寄存器的當(dāng)前狀態(tài)。在本系統(tǒng)中,使用8259A的循環(huán)等待中斷工作方式。4.3 8255A可編程并行接口芯片8255A是一種可編程的芯片,它采用雙列直插封裝,用5V電源供電。內(nèi)部有3個(gè)8位的I/0端口:A口、B口和C口。這三個(gè)端口也可以分為各有12位的

11、兩組:A組和B組。A組包含A口8位和C口的高四位,B組包含B口8位和C口的低四位;A組控制和B組控制用于實(shí)現(xiàn)方式選擇操作;讀寫(xiě)控制邏輯用于控制芯片內(nèi)部寄存器的數(shù)據(jù)和控制字經(jīng)數(shù)據(jù)總線(xiàn)緩沖器送入各組接口寄存器中。由于8255A數(shù)據(jù)總線(xiàn)緩沖器是雙向三態(tài)8位驅(qū)動(dòng)器,因此可以直接和8088系統(tǒng)數(shù)據(jù)總線(xiàn)相連。8255A的內(nèi)部邏輯結(jié)構(gòu)見(jiàn)圖4-3。A組端口A組端口C高4位A組端口C低4位B組端口A組控制B組控制數(shù)據(jù)總線(xiàn)緩沖器讀寫(xiě)控制邏輯雙向數(shù)據(jù)總線(xiàn)D0-D7I/0PA7-PA0I/0PC7-PC0I/0PC0-PC20I/0PB7-PB0-CSCPU接口內(nèi)部邏輯外設(shè)接口-RD-WRA1 A0RESET圖4-3

12、 8255A的內(nèi)部結(jié)構(gòu)8255A有三種工作方式:方式0、方式1和方式2。它通過(guò)對(duì)控制寄存器寫(xiě)入不同的方式選擇控制字來(lái)決定其三種不同的工作方式。方式0是基本輸入輸出方式。該方式下的A口8位和B口8位可以由輸入的控制字決定為輸入或輸出,C口分成高4位(PC4-PC7)和低4位(PC0-PC3)兩組,也有控制字決定其輸入或輸出。需要注意的是,該方式下,只能將C口其中一組的四位全部置為輸入或輸出。方式1選通輸入輸出方式,又叫單向輸入輸出方式。它分為A、B兩組,A組由數(shù)據(jù)口A和控制口C的高4位組成,B組由數(shù)據(jù)口B和控制口C的低4位組成。數(shù)據(jù)口的輸入輸出都是鎖存的,與方式0不同,由控制字來(lái)決定它是作為輸入

13、還是輸出。C口的相應(yīng)位用于寄存數(shù)據(jù)傳送中所需的狀態(tài)信號(hào)和控制信息。方式2為雙向輸入輸出方式。本方式只有A組可以使用。此時(shí)A口為輸入輸出雙向口,C口中的5位(PC3-PC7)作為A口的控制位。在本系統(tǒng)中,8255A的三個(gè)端口均工作于方式0,全部為輸出口。5 系統(tǒng)設(shè)計(jì)5.1硬件設(shè)計(jì)5.1.1 電路分析本系統(tǒng)要實(shí)現(xiàn)的功能是模擬十字路口紅綠燈的工作狀況。按照預(yù)先設(shè)定并優(yōu)化的交通燈規(guī)則,控制LED指示燈的亮滅,同時(shí)在實(shí)驗(yàn)箱的數(shù)碼管顯示屏上顯示剩余的時(shí)間。當(dāng)時(shí)間遞減到0的時(shí)候,改變LED燈的狀態(tài),并刷新顯示屏顯示的時(shí)間。為了實(shí)現(xiàn)以上功能需求,本系統(tǒng)需要12個(gè)LED指示燈,來(lái)分別代表1、3方向(東西),2、

14、4方向(南北);兩個(gè)雙位的數(shù)碼管顯示屏,用來(lái)顯示1、3路口和2、4路口剩余的時(shí)間。為了實(shí)時(shí)地更新數(shù)碼管顯示屏上的數(shù)字,需要使用8255A可編程芯片來(lái)即時(shí)地改變顯示屏每個(gè)筆劃的電平高低,從而準(zhǔn)確地將需要顯示的數(shù)字顯示在數(shù)碼管顯示屏上。由于交通燈需要按秒進(jìn)行計(jì)數(shù),所以需要一個(gè)均勻地時(shí)鐘發(fā)生器。8253A芯片是個(gè)功能豐富、使用簡(jiǎn)單的定時(shí)/計(jì)數(shù)器。它可以根據(jù)需要設(shè)置不同的顯示初值,從而產(chǎn)生所需頻率的時(shí)鐘脈沖,為系統(tǒng)提供計(jì)時(shí)和驅(qū)動(dòng)其他事件的發(fā)生。8259A中斷控制器芯片可以在收到8253A發(fā)出的時(shí)鐘脈沖時(shí),產(chǎn)生定時(shí)的中斷,在中斷服務(wù)程序中,更新顯示緩沖區(qū),并調(diào)用8255A芯片來(lái)執(zhí)行相關(guān)程序,從而更新LE

15、D燈和數(shù)碼管顯示屏。本系統(tǒng)使用集成的電路和實(shí)驗(yàn)環(huán)境,以方便進(jìn)行電路的連接和測(cè)試,同時(shí)減少由于電路的復(fù)雜性而產(chǎn)生的錯(cuò)誤。5.1.2 電路連接設(shè)計(jì)本系統(tǒng)所使用到的硬件包括8253A芯片、8259A芯片、8255A芯片、LED指示燈和數(shù)碼管顯示屏。在電路連接的時(shí)候,將8255A芯片的PC口的PC5、PC4接紅燈燈,PC3、PC2接綠燈,PC1、PC0接黃燈。通過(guò)改變8255A的PC口的值來(lái)實(shí)時(shí)地控制每個(gè)LED燈的亮滅,從而改變十字路口的交通狀態(tài)。將8253A的CLK0插孔連接至1MHZ的分頻輸出插孔T4。分頻輸出插孔所輸出的頻率是將系統(tǒng)的主頻分解為一定的頻率,以供其他硬件或者軟件使用。8253A從分

16、頻插孔得到1MHZ的固定頻率,再根據(jù)芯片內(nèi)部設(shè)定的計(jì)數(shù)初值,從而產(chǎn)生需要頻率的時(shí)鐘脈沖,由OUT0口輸出,供其他芯片使用。在這里OUT0接CLK2。將8253A的OUT2插孔連接至8259A的IRQ3插孔上。8259A的IRQ3中斷口每隔固定的時(shí)間便會(huì)收到8253A發(fā)送過(guò)來(lái)的時(shí)鐘脈沖,作為中斷源來(lái)執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,完成更新數(shù)碼管顯示值和改變交通燈狀態(tài)的功能。硬件的連接見(jiàn)圖5-1和圖5-2。D0 T0OUTD1 GATE0D2 T0CLKD3 GATE2D4 T2OUTD5 T2CLKD6D7 8253A OUT1 CS RD WRGATE2 A0CLK1 A1D0D1D2D3

17、D4D5D6D7VCCTCLK1T0OUTVCCT0CLKCKVCCUB318253TOUT1CS3IORIOWADD0ADD11MHZIR0 D0IR1 D1IR2 D2IR3 D3IR4 D4IR5 8259A D5IR6 D6IR7 D7 A0SP/EN WR RDCS INT INTAADD0IOWIORINTRINTACSVCC圖 5-1 系統(tǒng)電路圖8253A和8259A的連接圖RD PB0 PB1WR PB2A0 PB3A1 PB4RESET PB5CS PB6 PB78255A PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7VCCY7L3(控制綠燈)L6L9L12

18、L1(控制紅燈)L4L7L10L2(控制黃燈)L5L8L11CS_8255圖 5-2 系統(tǒng)電路圖8255A和LED燈的連接圖5.2軟件設(shè)計(jì)5.2.1 程序總體設(shè)計(jì)本系統(tǒng)采用“自上而下總體規(guī)劃、自下而上應(yīng)用開(kāi)發(fā)”的策略進(jìn)行總體設(shè)計(jì)和開(kāi)發(fā)。先根據(jù)其功能需要,設(shè)定需要的功能模塊,確定需要編寫(xiě)的子程序,從而使程序結(jié)構(gòu)清晰,便于閱讀和調(diào)試,加快了系統(tǒng)完成的速度。結(jié)構(gòu)化的程序設(shè)計(jì)方法很適合用來(lái)開(kāi)發(fā)匯編語(yǔ)言程序,因?yàn)閰R編語(yǔ)言的特性決定了其無(wú)法使用面向?qū)ο蟮某绦蜷_(kāi)發(fā)方法;使用瀑布程序開(kāi)發(fā)模型,從開(kāi)始的時(shí)候把系統(tǒng)的需求分析透徹,對(duì)系統(tǒng)的功能和各個(gè)模塊進(jìn)行清晰的規(guī)劃,從而縮短系統(tǒng)開(kāi)發(fā)所用的時(shí)間。為了完成系統(tǒng)的功能

19、,系統(tǒng)的程序部分應(yīng)包含以下幾個(gè)模塊(見(jiàn)圖5-3)。初始化模塊用來(lái)初始化各個(gè)芯片,分為以下幾個(gè)步驟:(1)初始化數(shù)據(jù):T_1為1、3方向(東西)時(shí)間顯示(如 5秒);T_2為2、4方向(南北)的時(shí)間顯示。初值可同設(shè)為5秒。(2)初始化8255A的工作方式:使A、B、C三個(gè)端口均工作于方式0,且為輸出口;DVCC實(shí)驗(yàn)臺(tái)8255口地址:FF28HFF2BH(3)初始化8253A芯片:選用方波發(fā)生器方式,并設(shè)定其使用通道0和2進(jìn)行工作;DVCC實(shí)驗(yàn)臺(tái)8253口地址:00400043H(4)初始化8259A:設(shè)定其工作方式為單片、邊沿觸發(fā)、要寫(xiě)ICW4、循環(huán)等待中斷方式。DVCC實(shí)驗(yàn)臺(tái)8259口地址:0

20、0600061H設(shè)置中斷向量表 寫(xiě)2號(hào)、3號(hào)中斷向量:INTREEUP2、INTREEUP3。中斷處理模塊:(1)INTREEUP3是主要的中斷服務(wù)程序, 8253A每發(fā)來(lái)一次時(shí)鐘脈沖便產(chǎn)生一次中斷,兩個(gè)路口所亮的燈對(duì)應(yīng)的顯示數(shù)值減一。并輸出完成顯示數(shù)值的更新使時(shí)間緩沖區(qū)中的時(shí)間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷的減少。然后判斷其數(shù)值是否減到0,若0,則進(jìn)行LED燈狀態(tài)的切換(2)其中INTREEUP2是增加行人手動(dòng)按鈕。實(shí)現(xiàn)可手動(dòng)干預(yù)的(交通事故、步行可及時(shí)通行的)交通燈自動(dòng)控制系統(tǒng)有手動(dòng)干預(yù)(按鈕按下)時(shí),交通燈立即處于該狀態(tài):兩個(gè)方向均紅燈亮(以便讓行人及時(shí)通過(guò))。10秒后,交通恢

21、復(fù)到人工干預(yù)前狀態(tài),繼續(xù)按正常狀態(tài)循環(huán)切換。顯示模塊(DISP)使用8255A將顯示緩沖區(qū)的字符逐位顯示在數(shù)碼管顯示屏上,在中斷請(qǐng)求沒(méi)有到來(lái)的時(shí)候,根據(jù)交通燈所處的狀態(tài),點(diǎn)亮相應(yīng)的LED燈;有中斷請(qǐng)求時(shí),調(diào)用相應(yīng)的中斷服務(wù)程序。初始化模塊顯示模塊DISP中斷處理程序INTREEUP3交通燈控制系統(tǒng)應(yīng)急中斷處理程序INTREEUP2圖 5-3 系統(tǒng)模塊圖5.2.2 程序流程設(shè)計(jì)程序運(yùn)行的流程圖見(jiàn)圖5-4,中斷應(yīng)急流程圖見(jiàn)5-5。開(kāi)始運(yùn)行的時(shí)候,初始化程序,給初始顯示區(qū)和電平錯(cuò)誤顯示區(qū)賦初值,顯示相應(yīng)的字符;定義數(shù)值對(duì)應(yīng)的顯示字符,便于轉(zhuǎn)換程序取到時(shí)間數(shù)值對(duì)應(yīng)的字符。接著對(duì)8253A、8255A和

22、8259A進(jìn)行初始化。定義8253A使用通道0和2,工作于方式3,其計(jì)數(shù)初值為3C50,每隔20ms向8259A發(fā)出一個(gè)時(shí)鐘脈沖;8255A的A、B、C三個(gè)端口均工作于輸出方式;8259A工作于循環(huán)等待中斷方式。進(jìn)入顯示程序(DISP)使用8255A將顯示緩沖區(qū)的字符逐位顯示在數(shù)碼管顯示屏上,在中斷請(qǐng)求沒(méi)有到來(lái)的時(shí)候,根據(jù)交通燈所處的狀態(tài),點(diǎn)亮相應(yīng)的LED燈。當(dāng)有中斷的時(shí)候,則轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序,本系統(tǒng)主要為INTREEUP3程序。8253A每發(fā)來(lái)一次時(shí)鐘脈沖便產(chǎn)生一次中斷。INTREEUP3程序首先關(guān)閉中斷,兩個(gè)路口所亮的燈對(duì)應(yīng)的顯示數(shù)值減一。并輸出以完成顯示數(shù)值的更新使時(shí)間緩沖區(qū)中的時(shí)

23、間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷的減少。然后判斷其數(shù)值是否減到0,若0,則進(jìn)行LED燈狀態(tài)的切換。最后打開(kāi)中斷,并中斷返回。開(kāi)始初始化設(shè)置中斷控制器工作方式中斷允許狀態(tài)循環(huán)切換,顯示數(shù)字中斷入口保護(hù)現(xiàn)場(chǎng)四個(gè)方向的紅燈亮30秒輸出中斷結(jié)束命令中斷返回恢復(fù)現(xiàn)場(chǎng)圖5-4 主程序框圖 圖5-5 中斷程序框圖5.2.3 重要代碼分析(1)中斷服務(wù)程序INTREEUP3是本系統(tǒng)的程序最核心的子程序。它用來(lái)計(jì)算收到8353A發(fā)來(lái)的中斷,8253A每發(fā)來(lái)一次時(shí)鐘脈沖便產(chǎn)生一次中斷,兩個(gè)路口所亮的燈對(duì)應(yīng)的顯示數(shù)值減一。并輸出完成顯示數(shù)值的更新使時(shí)間緩沖區(qū)中的時(shí)間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷

24、的減少。然后判斷其數(shù)值是否減到0,若0,則進(jìn)行LED燈狀態(tài)的切換,以下是該程序的代碼分析,并注有詳細(xì)的功能說(shuō)明。中斷服務(wù)程序INTREEUP3: CLI ;處理中斷時(shí)先關(guān)中斷 push ax ;保存堆棧 push bx push dx STI ;保存現(xiàn)場(chǎng)后開(kāi)中斷以可以實(shí)現(xiàn)中斷嵌套 ; 1、3方向(東西) DEC T_1 ;對(duì)當(dāng)前數(shù)值減一 MOV AL,T_1 CMP AL,00H ;判斷當(dāng)前數(shù)值是否減到0 JE CHANGE1 ;若 當(dāng)前數(shù)值為0則跳到CHANGE1 切換狀態(tài) JMP RIGHT ;若 當(dāng)前數(shù)值不為0則跳到2、4方向(南北) CHANGE1: MOV AL,C ;讀入并口狀態(tài)

25、TEST AL,02H ;測(cè)試當(dāng)前并口狀態(tài) JNZ RED1 TEST AL,08H JNZ YELLOW1 TEST AL,20H JNZ GREEN1 RED1: MOV DX,IOC ; 1、3方向(東西)亮紅燈 OR AL,20H AND AL,35H OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_1,14H ; 對(duì)新?tīng)顟B(tài)賦顯示初值 JMP RIGHT YELLOW1:MOV DX,IOC 1、3方向(東西)亮黃燈 OR AL,02H AND AL,17H OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_1,05H ; 對(duì)新?tīng)顟B(tài)賦顯示初值 JMP

26、RIGHT GREEN1:MOV DX,IOC ; 1、3方向(東西)綠燈 OR AL,08H AND AL,1DH OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_1,0fH ; 對(duì)新?tīng)顟B(tài)賦顯示初值 ;右邊 RIGHT: DEC T_2 MOV AL,T_2 CMP AL,00H JE CHANGE2 JMP OUTPUT CHANGE2: MOV AL,C ;讀入c口狀態(tài) TEST AL,01H JNZ RED2 TEST AL,04H JNZ YELLOW2 CMP AL,18H ;應(yīng)急狀態(tài)返回時(shí)2、4方向從新跳到紅燈JZ RED2 ; (同時(shí),1、3方向?yàn)榫G燈) TE

27、ST AL,10H JNZ GREEN2 RED2:MOV DX,IOC OR AL,10H AND AL,3AH OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_2,14H JMP OUTPUT YELLOW2: MOV DX,IOC OR AL,01H AND AL,2BH OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_2,05H JMP OUTPUT GREEN2: MOV DX,IOC OR AL,04H AND AL,2EH OUT DX,AL MOV C,AL ;保存c口狀態(tài) MOV T_2,0fH ;輸出數(shù)字 OUTPUT: MOV AL,T

28、_1 MOV AH,T_1 AND AL,01H MOV CL,4 SHR AH,CL MOV AL,T_2 MOV AH,T_2 AND AL,01H MOV CL,4 SHR AH,CL ;計(jì)數(shù)器從新賦初值 MOV AL,36H OUT 43H,AL MOV AL,50H OUT 40H,AL MOV AL,11000011B OUT 40H,AL MOV AL,10110110B ;計(jì)數(shù)器2 OUT 43H,AL MOV AL,02H OUT 42H,AL MOV AL,00H OUT 42H,AL ;= ;= MOV AL,T_1 CMP AL,03H JA RIGHTTEST JMP

29、 YLEDSTARIGHTTEST: MOV AL,T_2 CMP AL,03H JA RETBCAKYLEDSTA: MOV AL,C AND AL,03H JNZ YLEDFLASH JMP RETBCAK ;= 時(shí)間小于等于3時(shí) LED燈 閃爍 =YLEDFLASH: PUSH CX ; PUSH DX MOV CX,0AH ; 閃爍3次 MOV AL,C ;讀入c口狀態(tài) AND AL,11111100B ; 燈滅 MOV DX,IOC OUT DX,AL CALL DELAY ;短延時(shí) MOV AL,C ;燈亮 OUT DX,AL CALL DELAY ;短延時(shí) ; LOOP YLED

30、FLASH ;循環(huán) ; POP DX POP CX JMP RETBCAK ;=;短延時(shí) DELAY: CALL DELAY2 RETDELAY2: PUSH CXMOV CX,6A45H ;DELA1:LOOP DELA1POP CXRET ;= ;= RETBCAK: MOV AL,20H ;寫(xiě)ocw2然后返回 MOV DX,0060h OUT DX,AL CLI pop dx pop bx pop ax STI IRET;=中斷返回 =6 系統(tǒng)實(shí)現(xiàn)6.1 軟件開(kāi)發(fā)與運(yùn)行環(huán)境本系統(tǒng)的代碼使用8086匯編語(yǔ)言編寫(xiě),所以代碼編寫(xiě)環(huán)境可以使用任何文本編輯器。如系統(tǒng)自帶的記事本、DOS下的編輯工具

31、EDIT和文本編輯工具UltraEdit等。本系統(tǒng)使用了DVCC-598JH+實(shí)驗(yàn)箱附帶的DV88聯(lián)機(jī)軟件。它可以讀取其他編輯軟件生成的MASM格式的匯編語(yǔ)言文件(*.ASM),也可以作為匯編代碼的編輯、測(cè)試、運(yùn)行環(huán)境。在顯示代碼的時(shí)候,可以把常用的匯編指令顯示為藍(lán)色,數(shù)值顯示為紅色,注釋顯示為綠色,從而使論文清晰易讀,并容易發(fā)現(xiàn)代碼中的錯(cuò)誤。DV88聯(lián)機(jī)軟件同樣可以作為系統(tǒng)的運(yùn)行環(huán)境。系統(tǒng)運(yùn)行的時(shí)候需要將ASM源程序編譯產(chǎn)生的OBJ文件傳送到實(shí)驗(yàn)箱,由實(shí)驗(yàn)箱上的處理器和各個(gè)芯片負(fù)責(zé)執(zhí)行。6.2 系統(tǒng)硬件環(huán)境交通燈控制系統(tǒng)采用的DVCC-598JH+通用微機(jī)原理及接口實(shí)驗(yàn)系統(tǒng),集成了8253A

32、計(jì)數(shù)/定時(shí)器芯片、8255A可編程并行接口芯片和8259A中斷控制器芯片,并把大部分的引腳進(jìn)行了封裝,方便直接進(jìn)行使用;并設(shè)有12個(gè)LED顯示燈;系統(tǒng)分頻器可以產(chǎn)生特定頻率的時(shí)鐘脈沖;固定的導(dǎo)線(xiàn)接口,方便使用導(dǎo)線(xiàn)把各芯片進(jìn)行連接;并設(shè)有鍵盤(pán),可以隨時(shí)控制程序的運(yùn)行,方便進(jìn)行調(diào)試。實(shí)驗(yàn)箱使用串行口連接線(xiàn)與PC機(jī)的串口相連,然后使用DV88聯(lián)機(jī)軟件與實(shí)驗(yàn)箱進(jìn)行連接并傳送運(yùn)行的程序。6.3 系統(tǒng)運(yùn)行步驟系統(tǒng)的代碼編寫(xiě)完畢的時(shí)候,便可以進(jìn)行程序的聯(lián)機(jī)調(diào)試了。將實(shí)驗(yàn)箱的電源線(xiàn)連接好,使用串口通信線(xiàn)將實(shí)驗(yàn)箱上的串口與PC機(jī)上的串口相連。將各個(gè)芯片和LED燈按照硬件連接設(shè)計(jì)圖上的圖示進(jìn)行連接。打開(kāi)實(shí)驗(yàn)箱的電

33、源,數(shù)碼管顯示屏上顯示“P.”,提示實(shí)驗(yàn)箱初始化成功。在PC機(jī)上打開(kāi)DV88聯(lián)機(jī)軟件,調(diào)用編輯好的程序代碼。首先進(jìn)行編譯,系統(tǒng)會(huì)自動(dòng)調(diào)用MASM程序?qū)Υa進(jìn)行編譯。若沒(méi)有提示錯(cuò)誤,便可以點(diǎn)擊連接按鈕,調(diào)用LINK程序把編譯生成的OBJ文件進(jìn)行連接,生成EXE文件。再點(diǎn)進(jìn)調(diào)試按鈕,把生成的可執(zhí)行文件傳送到實(shí)驗(yàn)箱,進(jìn)行調(diào)試狀態(tài),此時(shí)屏幕會(huì)顯示實(shí)驗(yàn)箱各個(gè)寄存器的值。最后點(diǎn)擊連續(xù)運(yùn)行按鈕,實(shí)驗(yàn)箱上的數(shù)碼顯示管和LED燈便會(huì)按照設(shè)計(jì)的要求進(jìn)行工作。在運(yùn)行的過(guò)程中可以隨時(shí)按實(shí)驗(yàn)箱上的RESET鍵,中斷程序的執(zhí)行,以便進(jìn)行代碼的修改或者結(jié)束系統(tǒng)的運(yùn)行。6.4 系統(tǒng)測(cè)試結(jié)果按照表2-1中交通燈四個(gè)狀態(tài)所對(duì)應(yīng)的秒數(shù),在程序中為各個(gè)狀態(tài)子程序設(shè)定相應(yīng)的時(shí)間初值。測(cè)試運(yùn)行的結(jié)果如下:開(kāi)始運(yùn)行時(shí),系統(tǒng)在狀態(tài)一下工作,兩個(gè)顯示屏顯示剩余時(shí)間為5秒,并不斷遞減,同時(shí)LED燈的2、4路口的紅燈點(diǎn)亮

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論