版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計說明書</b></p><p> 2010 — 2011學年第一學期</p><p> 題目: 模擬交通燈控制系統(tǒng) </p><p> 學 院: 計算機學院 </p><p> 專業(yè)
2、班級: 計算機科學與技術(shù)1班 </p><p> 學 號: </p><p> 學生姓名: </p><p> 指導教師: </p><p> 成 績:
3、 </p><p> 時 間: </p><p> 2011年 12 月 17 日</p><p><b> 摘 要</b></p><p> 隨著城市人口的快速增長和機動車數(shù)量的
4、大量增加,城市交通燈作為緩解交通壓力、提高道路通行效率的重要手段,其作用越來越重要。因此,如何改進交通燈的設(shè)計,使其更好的適應(yīng)城市交通的發(fā)展也成為一個重要課題。紅綠燈控制系統(tǒng)是利用8253A定時/計數(shù)器芯片的定時功能,向8259A中斷控制器芯片發(fā)出定時中斷請求,驅(qū)動8255A可編程并行接口芯片改變路口的LED燈的亮滅。系統(tǒng)采用DVCC-598JH+微機原理與接口技術(shù)實驗箱作為測試與運行的平臺,8086匯編語言作為編程語言,并用MASM5
5、.0作為匯編語言開發(fā)環(huán)境。</p><p> 關(guān)鍵詞:紅綠燈控制系統(tǒng) 8253A定時器 8259A中斷控制器 8255A可編程并行接 </p><p> DVCC-598JH+</p><p><b> 目 錄</b></p><p><b> 摘 要 I</b&g
6、t;</p><p> 1.十字路口基本情況分析 1</p><p> 2.交通燈狀態(tài)轉(zhuǎn)換分析 1</p><p> 3.硬件功能分析 2</p><p> 3.1 8253A定時/計數(shù)器芯片 2</p><p> 3.2 8259A中斷控制器芯片 3</p><p
7、> 3.3 8255A可編程并行接口芯片 4</p><p> 4.系統(tǒng)設(shè)計 6</p><p> 4.1硬件設(shè)計 6</p><p> 4.1.1 電路分析 6</p><p> 4.1.2 電路連接設(shè)計 6</p><p> 4.2軟件設(shè)計 8</p>&l
8、t;p> 4.2.1 程序總體設(shè)計 8</p><p> 4.2.2 程序流程設(shè)計 9</p><p> 4.2.3 重要代碼分析 10</p><p> 5.系統(tǒng)實現(xiàn) 15</p><p> 5.1 軟件開發(fā)與運行環(huán)境 15</p><p> 5.2 系統(tǒng)硬件環(huán)境 15<
9、;/p><p> 5.3 系統(tǒng)運行步驟 16</p><p> 5.4 系統(tǒng)測試結(jié)果 16</p><p><b> 參考文獻 17</b></p><p> 心得 體會 18</p><p> 教師 評語 19</p><p> 附 錄
10、 20</p><p> 1.十字路口基本情況分析</p><p> 設(shè)有一個十字路口,1、3為東西方向,2、4為南北方向,1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車; 延時一段時間后,1、3路口的綠燈熄滅,而1、3路口的黃燈開始閃爍,閃爍若干次以后,1、3 路口紅燈亮, 而同時2、4路口的綠燈亮,2、4路口方向通車;延時一段時間后,2、4 路口的綠燈熄滅,而黃燈開
11、始閃爍,閃爍若干次以后,再切換到1、3路口方向,之后重復上述過程。</p><p> 2.交通燈狀態(tài)轉(zhuǎn)換分析</p><p> 合理的設(shè)置每個路口、每個方向的交通燈的通行時間,對車輛能否及時疏散,有著決定性的作用。</p><p> 狀態(tài)1的時候:1、3路口的綠燈熄滅,而1、3路口的黃燈開始亮(當通行時間剩5秒結(jié)束的時,LED燈會閃爍), 而同時2、4路口的紅
12、燈亮;</p><p> 狀態(tài)2的時候:1、3 路口紅燈亮, 而同時2、4路口的綠燈亮,2、4路口方向通車;</p><p> 狀態(tài)3的時候:1、3 路口紅燈亮, 而同時2、4路口的黃燈亮;</p><p> 狀態(tài)4 的時候:1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車。整個狀態(tài)轉(zhuǎn)換的過程見表2-1。</p><p>
13、表2-1 路口四個狀態(tài)和相互轉(zhuǎn)換過程</p><p> 完成四個狀態(tài)的一次循環(huán)需要40秒, 紅燈亮20秒 、綠燈亮15秒 、黃燈亮5秒</p><p> 完成了在適當?shù)臅r間限度內(nèi),有效的疏散較大的通行量的目的。</p><p><b> 3.硬件功能分析</b></p><p> 3.1 8253A定時/計數(shù)
14、器芯片</p><p> 8253A定時/計數(shù)器具有定時、計數(shù)雙功能。它具有三個相同且相互獨立的16位減法計數(shù)器,分別稱為計數(shù)器0、計數(shù)器1和計數(shù)器2。每個計數(shù)器計數(shù)頻率為0-2MHZ。</p><p> 其內(nèi)部數(shù)據(jù)總線緩沖器為雙向三態(tài),故可直接連在系統(tǒng)數(shù)據(jù)總線上,通過CPU寫入計數(shù)初值,也可由CPU讀出計數(shù)當前值。讀寫控制邏輯,當選中該芯片時,根據(jù)讀寫命令和送來的地址信息控制整個芯片
15、工作。其工作方式通過控制字確定。控制字寄存器用于接收數(shù)據(jù)總線緩沖器的信息。當寫入控制字時,控制計數(shù)器的工作方式;當寫入數(shù)據(jù)時則裝入計數(shù)初值??刂萍拇嫫鳛?位,只能寫入不能讀出。8253A內(nèi)部結(jié)構(gòu)見圖3-1。</p><p> 當8253A執(zhí)行計數(shù)功能時,計數(shù)器裝入初值后,當GATE為高電平時,可用外部事件作為CLK脈沖對計數(shù)值進行減1計數(shù)。每來一個脈沖減1,當計數(shù)值減為0時,由OUT端輸出一個標志信號。<
16、/p><p> 當8253A執(zhí)行定時功能時,計數(shù)器裝入初值后,當GATE為高電平時,由CLK脈沖觸發(fā)開始自動計數(shù)。當計數(shù)到零時,發(fā)計數(shù)結(jié)束定時信號。</p><p> 8253A可以工作在方式0到方式5,常用的有方式2頻率發(fā)生器方式和方式3方波發(fā)生器方式。在方式2時,當初值裝入后,OUT變?yōu)楦?;計?shù)結(jié)束,OUT變?yōu)榈?。該方式下如果計?shù)未結(jié)束,但GATE為低時,立即停止計數(shù),將OUT變?yōu)楦撸?/p>
17、當GATE再變高時,便啟動一次新的計數(shù)周期。在方式3時,當裝入初值后,在GATE上升沿啟動計數(shù),OUT輸出高電平;當計數(shù)完成一半時,OUT輸出低電平。</p><p> 在本系統(tǒng)中,8253A工作于方式3方波發(fā)生器方式。</p><p> 圖 3-1 8253A內(nèi)部結(jié)構(gòu)圖</p><p> 3.2 8259A中斷控制器芯片</p><p
18、> 8259A是專為控制優(yōu)先級中斷而設(shè)計的芯片。它將中斷源按優(yōu)先級排隊、辨認中斷源和提供中斷向量的電路集成于一體,只要用軟件對它進行編程,就可以管理8級中斷。</p><p> 8259A的內(nèi)部結(jié)構(gòu)見圖3-2。它由中斷請求寄存器(IRR)、優(yōu)先級分析器、中斷服務(wù)寄存器(ISR)、中斷屏蔽寄存器(IMR)、數(shù)據(jù)總線緩沖器、讀寫控制電路、級聯(lián)緩沖器和比較器組成。</p><p>
19、圖 3-2 8259A的內(nèi)部結(jié)構(gòu)</p><p> 對8259A編程和初始化的時候,首先要寫初始化命令字ICW1-ICW4。</p><p> 寫ICW1以確定中斷請求信號類型,清除中斷屏蔽寄存器,進行中斷優(yōu)先級排隊和確定系統(tǒng)是用單片還是多片。</p><p> 寫ICW2用來定義中斷向量的高五位類型碼。</p><p> ICW3
20、可以定義主片8259A中斷請求線上IR0-IR7有無級聯(lián)的8259A從片。</p><p> 寫ICW4用來定義8259A工作時用8085模式還是8088模式,以及中斷服務(wù)寄存器復位方式等。</p><p> 初始化命令字寫完以后,要寫8259A的控制命令字,它包括OCW1-OCW3。</p><p> 寫OCW1可以設(shè)置或清除對中斷源的屏蔽。</p&g
21、t;<p> 寫OCW2設(shè)置優(yōu)先級是否進行循環(huán)、循環(huán)的方式和中斷結(jié)束的方式。8259A復位時自動設(shè)置IR0優(yōu)先權(quán)最高,IR7優(yōu)先權(quán)最低。</p><p> 寫OCW3用來設(shè)置查詢方式和特殊屏蔽方式,并可以讀取8259A中斷寄存器的當前狀態(tài)。</p><p> 在本系統(tǒng)中,使用8259A的循環(huán)等待中斷工作方式。</p><p> 3.3 825
22、5A可編程并行接口芯片</p><p> 8255A是一種可編程的芯片,它采用雙列直插封裝,用+5V電源供電。內(nèi)部有3個8位的I/0端口:A口、B口和C口。這三個端口也可以分為各有12位的兩組:A組和B組。A組包含A口8位和C口的高四位,B組包含B口8位和C口的低四位;A組控制和B組控制用于實現(xiàn)方式選擇操作;讀寫控制邏輯用于控制芯片內(nèi)部寄存器的數(shù)據(jù)和控制字經(jīng)數(shù)據(jù)總線緩沖器送入各組接口寄存器中。由于8255A數(shù)據(jù)
23、總線緩沖器是雙向三態(tài)8位驅(qū)動器,因此可以直接和8088系統(tǒng)數(shù)據(jù)總線相連。8255A的內(nèi)部邏輯結(jié)構(gòu)見圖3-3。</p><p> 圖3-3 8255A的內(nèi)部結(jié)構(gòu)</p><p> 8255A有三種工作方式:方式0、方式1和方式2。它通過對控制寄存器寫入不同的方式選擇控制字來決定其三種不同的工作方式。</p><p> 方式0是基本輸入輸出方式。該方式下的A口8
24、位和B口8位可以由輸入的控制字決定為輸入或輸出,C口分成高4位(PC4-PC7)和低4位(PC0-PC3)兩組,也有控制字決定其輸入或輸出。需要注意的是,該方式下,只能將C口其中一組的四位全部置為輸入或輸出。</p><p> 方式1選通輸入輸出方式,又叫單向輸入輸出方式。它分為A、B兩組,A組由數(shù)據(jù)口A和控制口C的高4位組成,B組由數(shù)據(jù)口B和控制口C的低4位組成。數(shù)據(jù)口的輸入輸出都是鎖存的,與方式0不同,由控
25、制字來決定它是作為輸入還是輸出。C口的相應(yīng)位用于寄存數(shù)據(jù)傳送中所需的狀態(tài)信號和控制信息。</p><p> 方式2為雙向輸入輸出方式。本方式只有A組可以使用。此時A口為輸入輸出雙向口,C口中的5位(PC3-PC7)作為A口的控制位。</p><p> 在本系統(tǒng)中,8255A的三個端口均工作于方式0,全部為輸出口。</p><p><b> 4.系統(tǒng)設(shè)
26、計</b></p><p><b> 4.1硬件設(shè)計</b></p><p> 4.1.1 電路分析</p><p> 本系統(tǒng)要實現(xiàn)的功能是模擬十字路口紅綠燈的工作狀況。按照預先設(shè)定并優(yōu)化的交通燈規(guī)則,控制LED指示燈的亮滅,同時在實驗箱的數(shù)碼管顯示屏上顯示剩余的時間。當時間遞減到0的時候,改變LED燈的狀態(tài),并刷新顯示屏顯示
27、的時間。</p><p> 為了實現(xiàn)以上功能需求,本系統(tǒng)需要6個LED指示燈,來分別代表1、3方向(東西),2、4方向(南北);兩個雙位的數(shù)碼管顯示屏,用來顯示1、3路口和2、4路口剩余的時間。</p><p> 為了實時地更新數(shù)碼管顯示屏上的數(shù)字,需要使用8255A可編程芯片來即時地改變顯示屏每個筆劃的電平高低,從而準確地將需要顯示的數(shù)字顯示在數(shù)碼管顯示屏上。</p>
28、<p> 由于交通燈需要按秒進行計數(shù),所以需要一個均勻地時鐘發(fā)生器。8253A芯片是個功能豐富、使用簡單的定時/計數(shù)器。它可以根據(jù)需要設(shè)置不同的顯示初值,從而產(chǎn)生所需頻率的時鐘脈沖,為系統(tǒng)提供計時和驅(qū)動其他事件的發(fā)生。8259A中斷控制器芯片可以在收到8253A發(fā)出的時鐘脈沖時,產(chǎn)生定時的中斷,在中斷服務(wù)程序中,更新顯示緩沖區(qū),并調(diào)用8255A芯片來執(zhí)行相關(guān)程序,從而更新LED燈和數(shù)碼管顯示屏。</p><
29、;p> 本系統(tǒng)使用集成的電路和實驗環(huán)境,以方便進行電路的連接和測試,同時減少由于電路的復雜性而產(chǎn)生的錯誤。</p><p> 4.1.2 電路連接設(shè)計</p><p> 本系統(tǒng)所使用到的硬件包括8253A芯片、8259A芯片、8255A芯片、LED指示燈和數(shù)碼管顯示屏。</p><p> 在電路連接的時候,將8255A芯片的PC口的PC5、PC4接紅燈
30、燈,PC3、PC2接綠燈,PC1、PC0接黃燈。通過改變8255A的PC口的值來實時地控制每個LED燈的亮滅,從而改變十字路口的交通狀態(tài)。</p><p> 將8253A的CLK0插孔連接至1MHZ的分頻輸出插孔T4。分頻輸出插孔所輸出的頻率是將系統(tǒng)的主頻分解為一定的頻率,以供其他硬件或者軟件使用。8253A從分頻插孔得到1MHZ的固定頻率,再根據(jù)芯片內(nèi)部設(shè)定的計數(shù)初值,從而產(chǎn)生需要頻率的時鐘脈沖,由OUT0口
31、輸出,供其他芯片使用。在這里OUT0接CLK2。</p><p> 將8253A的OUT2插孔連接至8259A的IRQ3插孔上。8259A的IRQ3中斷口每隔固定的時間便會收到8253A發(fā)送過來的時鐘脈沖,作為中斷源來執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中,完成更新數(shù)碼管顯示值和改變交通燈狀態(tài)的功能。</p><p> 硬件的連接見圖4-1和圖4-2。</p><p&g
32、t; 圖 4-1 系統(tǒng)電路圖——8253A和8259A的連接圖</p><p> 圖 4-2 系統(tǒng)電路圖——8255A和LED燈的連接圖</p><p><b> 4.2軟件設(shè)計</b></p><p> 4.2.1 程序總體設(shè)計</p><p> 本系統(tǒng)采用“自上而下總體規(guī)劃、自下而上應(yīng)用開發(fā)”的策略進行
33、總體設(shè)計和開發(fā)。先根據(jù)其功能需要,設(shè)定需要的功能模塊,確定需要編寫的子程序,從而使程序結(jié)構(gòu)清晰,便于閱讀和調(diào)試,加快了系統(tǒng)完成的速度。結(jié)構(gòu)化的程序設(shè)計方法很適合用來開發(fā)匯編語言程序,因為匯編語言的特性決定了其無法使用面向?qū)ο蟮某绦蜷_發(fā)方法;使用瀑布程序開發(fā)模型,從開始的時候把系統(tǒng)的需求分析透徹,對系統(tǒng)的功能和各個模塊進行清晰的規(guī)劃,從而縮短系統(tǒng)開發(fā)所用的時間。</p><p> 為了完成系統(tǒng)的功能,系統(tǒng)的程序部
34、分應(yīng)包含以下幾個模塊(見圖4-3)。</p><p> 初始化模塊用來初始化各個芯片,分為以下幾個步驟:</p><p> (1)初始化數(shù)據(jù):T_1為1、3方向(東西)時間顯示(如 5秒);T_2為2、4方向(南北)的時間顯示。初值可同設(shè)為5秒。</p><p> ?。?)初始化8255A的工作方式:使A、B、C三個端口均工作于方式0,且為輸出口;DVCC實驗臺
35、8255口地址:FF28H—FF2BH</p><p> ?。?)初始化8253A芯片:選用方波發(fā)生器方式,并設(shè)定其使用通道0和2進行工作;DVCC實驗臺8253口地址:0040—0043H</p><p> ?。?)初始化8259A:設(shè)定其工作方式為單片、邊沿觸發(fā)、要寫ICW4、循環(huán)等待中斷方式。DVCC實驗臺8259口地址:0060—0061H</p><p>
36、 設(shè)置中斷向量表 寫2號、3號中斷向量:INTREEUP2、INTREEUP3。</p><p><b> 中斷處理模塊:</b></p><p> ?。?)INTREEUP3是主要的中斷服務(wù)程序, 8253A每發(fā)來一次時鐘脈沖便產(chǎn)生一次中斷,兩個路口所亮的燈對應(yīng)的顯示數(shù)值減一。并輸出完成顯示數(shù)值的更新使時間緩沖區(qū)中的時間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷
37、的減少。然后判斷其數(shù)值是否減到0,若0,則進行LED燈狀態(tài)的切換</p><p> ?。?)其中INTREEUP2是增加行人手動按鈕。實現(xiàn)可手動干預的(交通事故、步行可及時通行的)交通燈自動控制系統(tǒng)</p><p> 有手動干預(按鈕按下)時,交通燈立即處于該狀態(tài):兩個方向均紅燈亮(以便讓行人及時通過)。10秒后,交通恢復到人工干預前狀態(tài),繼續(xù)按正常狀態(tài)循環(huán)切換。</p>
38、<p> 顯示模塊(DISP)使用8255A將顯示緩沖區(qū)的字符逐位顯示在數(shù)碼管顯示屏上,在中斷請求沒有到來的時候,根據(jù)交通燈所處的狀態(tài),點亮相應(yīng)的LED燈;有中斷請求時,調(diào)用相應(yīng)的中斷服務(wù)程序。</p><p> 圖 4-3 系統(tǒng)模塊圖</p><p> 4.2.2 程序流程設(shè)計</p><p> 程序運行的流程圖見圖4-4。</p>
39、<p> 開始運行的時候,初始化程序,給初始顯示區(qū)和電平錯誤顯示區(qū)賦初值,顯示相應(yīng)的字符;定義數(shù)值對應(yīng)的顯示字符,便于轉(zhuǎn)換程序取到時間數(shù)值對應(yīng)的字符。</p><p> 接著對8253A、8255A和8259A進行初始化。定義8253A使用通道0和2,工作于方式3,其計數(shù)初值為3C50,每隔20ms向8259A發(fā)出一個時鐘脈沖;8255A的A、B、C三個端口均工作于輸出方式;8259A工作于循環(huán)
40、等待中斷方式。</p><p> 進入顯示程序(DISP)使用8255A將顯示緩沖區(qū)的字符逐位顯示在數(shù)碼管顯示屏上,在中斷請求沒有到來的時候,根據(jù)交通燈所處的狀態(tài),點亮相應(yīng)的LED燈。</p><p> 當有中斷的時候,則轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序,本系統(tǒng)主要為INTREEUP3程序。8253A每發(fā)來一次時鐘脈沖便產(chǎn)生一次中斷。INTREEUP3程序首先關(guān)閉中斷,兩個路口所亮的燈對應(yīng)的顯示
41、數(shù)值減一。并輸出以完成顯示數(shù)值的更新使時間緩沖區(qū)中的時間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷的減少。然后判斷其數(shù)值是否減到0,若0,則進行LED燈狀態(tài)的切換。最后</p><p> 打開中斷,并中斷返回。</p><p> 圖4-4 主程序框圖 圖4-5 中斷程序框圖</p><p> 4.2.3 重要代碼分析</p>&
42、lt;p> ?。?)中斷服務(wù)程序INTREEUP3是本系統(tǒng)的程序最核心的子程序。它用來計算收到8353A發(fā)來的中斷,8253A每發(fā)來一次時鐘脈沖便產(chǎn)生一次中斷,兩個路口所亮的燈對應(yīng)的顯示數(shù)值減一。并輸出完成顯示數(shù)值的更新使時間緩沖區(qū)中的時間減1,所以數(shù)碼管顯示屏上的數(shù)字才能夠不斷的減少。然后判斷其數(shù)值是否減到0,若0,則進行LED燈狀態(tài)的切換,</p><p> 以下是該程序的代碼分析,并注有詳細的功能說
43、明。</p><p><b> 中斷服務(wù)程序</b></p><p> INTREEUP3: CLI ;處理中斷時先關(guān)中斷</p><p> push ax ;保存堆棧</p><p><b> push bx</b></p><p><b>
44、 push dx</b></p><p> STI ;保存現(xiàn)場后開中斷以可以實現(xiàn)中斷嵌套</p><p> ; 1、3方向(東西)</p><p> DEC T_1 ;對當前數(shù)值減一</p><p> MOV AL,T_1</p><p> CMP AL,00H ;判斷當前數(shù)值是
45、否減到0</p><p> JE CHANGE1 ;若 當前數(shù)值為0則跳到CHANGE1 切換狀態(tài)</p><p> JMP RIGHT ;若 當前數(shù)值不為0則跳到2、4方向(南北)</p><p> CHANGE1: MOV AL,C ;讀入并口狀態(tài)</p><p> TEST AL,02H ;測試當前并口狀態(tài)
46、</p><p><b> JNZ RED1</b></p><p> TEST AL,08H</p><p> JNZ YELLOW1</p><p> TEST AL,20H</p><p> JNZ GREEN1</p><p> RED1: MOV DX
47、,IOC ; 1、3方向(東西)亮紅燈</p><p><b> OR AL,20H</b></p><p> AND AL,35H</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p&
48、gt; MOV T_1,14H ; 對新狀態(tài)賦顯示初值</p><p><b> JMP RIGHT</b></p><p> YELLOW1:MOV DX,IOC 1、3方向(東西)亮黃燈</p><p><b> OR AL,02H</b></p><p> AND
49、AL,17H</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_1,05H ; 對新狀態(tài)賦顯示初值</p><p><b> JMP RIGHT</b></p><p
50、> GREEN1:MOV DX,IOC ; 1、3方向(東西)綠燈</p><p><b> OR AL,08H</b></p><p> AND AL,1DH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口
51、狀態(tài)</p><p> MOV T_1,0fH ; 對新狀態(tài)賦顯示初值</p><p><b> ;右邊</b></p><p><b> RIGHT:</b></p><p><b> DEC T_2</b></p><p> MOV
52、 AL,T_2</p><p> CMP AL,00H</p><p> JE CHANGE2</p><p> JMP OUTPUT</p><p> CHANGE2: MOV AL,C ;讀入c口狀態(tài)</p><p> TEST AL,01H</p><p><b>
53、; JNZ RED2</b></p><p> TEST AL,04H</p><p> JNZ YELLOW2</p><p> CMP AL,18H ;應(yīng)急狀態(tài)返回時2、4方向從新跳到紅燈</p><p> JZ RED2 ; (同時,1、3方向為綠燈)</p><p>
54、TEST AL,10H</p><p> JNZ GREEN2</p><p> RED2:MOV DX,IOC</p><p><b> OR AL,10H</b></p><p> AND AL,3AH</p><p><b> OUT DX,AL</b><
55、;/p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_2,14H</p><p> JMP OUTPUT</p><p> YELLOW2: MOV DX,IOC</p><p><b> OR AL,01H</b></p><p> A
56、ND AL,2BH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_2,05H</p><p> JMP OUTPUT</p><p> GREEN2: MOV DX,IOC</p>&
57、lt;p><b> OR AL,04H</b></p><p> AND AL,2EH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_2,0fH</p><p><
58、b> ;輸出數(shù)字</b></p><p> OUTPUT: MOV AL,T_1</p><p> MOV AH,T_1</p><p> AND AL,01H</p><p><b> MOV CL,4</b></p><p><b> SHR AH,CL
59、</b></p><p> MOV AL,T_2</p><p> MOV AH,T_2</p><p> AND AL,01H</p><p><b> MOV CL,4</b></p><p><b> SHR AH,CL</b></p>
60、<p><b> ;計數(shù)器從新賦初值</b></p><p> MOV AL,36H</p><p> OUT 43H,AL</p><p> MOV AL,50H</p><p> OUT 40H,AL</p><p> MOV AL,11000011B</p&g
61、t;<p> OUT 40H,AL</p><p> MOV AL,10110110B ;計數(shù)器2</p><p> OUT 43H,AL</p><p> MOV AL,02H</p><p> OUT 42H,AL</p><p> MOV AL,00H</p><p
62、> OUT 42H,AL</p><p> ;===================================</p><p><b> ;========</b></p><p> MOV AL,T_1</p><p> CMP AL,03H</p><p> JA R
63、IGHTTEST</p><p> JMP YLEDSTA</p><p> RIGHTTEST:</p><p> MOV AL,T_2</p><p> CMP AL,03H</p><p> JA RETBCAK</p><p><b> YLEDSTA:</
64、b></p><p><b> MOV AL,C</b></p><p> AND AL,03H</p><p> JNZ YLEDFLASH</p><p> JMP RETBCAK</p><p> ;======== 時間小于等于3時 LED燈 閃爍 ===========
65、</p><p> YLEDFLASH:</p><p><b> PUSH CX</b></p><p><b> ; PUSH DX</b></p><p> MOV CX,0AH ; 閃爍3次</p><p> MOV AL,C ;讀入c口狀態(tài)<
66、/p><p> AND AL,11111100B ; 燈滅</p><p> MOV DX,IOC</p><p><b> OUT DX,AL</b></p><p> CALL DELAY ;短延時</p><p> MOV AL,C ;燈亮</p><p&g
67、t;<b> OUT DX,AL</b></p><p> CALL DELAY ;短延時</p><p> ; LOOP YLEDFLASH ;循環(huán)</p><p><b> ; POP DX</b></p><p><b> POP CX</b>&l
68、t;/p><p> JMP RETBCAK</p><p> ;;=================;短延時</p><p><b> DELAY:</b></p><p> CALL DELAY2</p><p><b> RET</b></p>&l
69、t;p> DELAY2: PUSH CX</p><p> MOV CX,6A45H ;;;;</p><p> DELA1:LOOP DELA1</p><p><b> POP CX</b></p><p><b> RET</b></p><p&
70、gt; ;;=================</p><p> ;==================================================================</p><p><b> RETBCAK:</b></p><p> MOV AL,20H ;寫ocw2然后返回</p>
71、<p> MOV DX,0060h</p><p><b> OUT DX,AL</b></p><p><b> CLI</b></p><p><b> pop dx</b></p><p><b> pop bx</b><
72、;/p><p><b> pop ax</b></p><p><b> STI</b></p><p><b> IRET</b></p><p> ;===============中斷返回 ==============</p><p><b
73、> 5.系統(tǒng)實現(xiàn)</b></p><p> 5.1 軟件開發(fā)與運行環(huán)境</p><p> 本系統(tǒng)的代碼使用8086匯編語言編寫,所以代碼編寫環(huán)境可以使用任何文本編輯器。如系統(tǒng)自帶的記事本、DOS下的編輯工具EDIT和文本編輯工具UltraEdit等。</p><p> 本系統(tǒng)使用了DVCC-598JH++實驗箱附帶的DV88聯(lián)機軟件。它可以
74、讀取其他編輯軟件生成的MASM格式的匯編語言文件(*.ASM),也可以作為匯編代碼的編輯、測試、運行環(huán)境。在顯示代碼的時候,可以把常用的匯編指令顯示為藍色,數(shù)值顯示為紅色,注釋顯示為綠色,從而使論文清晰易讀,并容易發(fā)現(xiàn)代碼中的錯誤。</p><p> DV88聯(lián)機軟件同樣可以作為系統(tǒng)的運行環(huán)境。系統(tǒng)運行的時候需要將ASM源程序編譯產(chǎn)生的OBJ文件傳送到實驗箱,由實驗箱上的處理器和各個芯片負責執(zhí)行。</p&
75、gt;<p> 5.2 系統(tǒng)硬件環(huán)境</p><p> 交通燈控制系統(tǒng)采用的DVCC-598JH++通用微機原理及接口實驗系統(tǒng),集成了8253A計數(shù)/定時器芯片、8255A可編程并行接口芯片和8259A中斷控制器芯片,并把大部分的引腳進行了封裝,方便直接進行使用;并設(shè)有12個LED顯示燈;系統(tǒng)分頻器可以產(chǎn)生特定頻率的時鐘脈沖;固定的導線接口,方便使用導線把各芯片進行連接;并設(shè)有鍵盤,可以隨時控制
76、程序的運行,方便進行調(diào)試。</p><p> 實驗箱使用串行口連接線與PC機的串口相連,然后使用DV88聯(lián)機軟件與實驗箱進行連接并傳送運行的程序。</p><p> 5.3 系統(tǒng)運行步驟</p><p> 系統(tǒng)的代碼編寫完畢的時候,便可以進行程序的聯(lián)機調(diào)試了。</p><p> 將實驗箱的電源線連接好,使用串口通信線將實驗箱上的串口與
77、PC機上的串口相連。將各個芯片和LED燈按照硬件連接設(shè)計圖上的圖示進行連接。</p><p> 打開實驗箱的電源,數(shù)碼管顯示屏上顯示“P.”,提示實驗箱初始化成功。</p><p> 在PC機上打開DV88聯(lián)機軟件,調(diào)用編輯好的程序代碼。首先進行編譯,系統(tǒng)會自動調(diào)用MASM程序?qū)Υa進行編譯。若沒有提示錯誤,便可以點擊連接按鈕,調(diào)用LINK程序把編譯生成的OBJ文件進行連接,生成EXE
78、文件。再點進調(diào)試按鈕,把生成的可執(zhí)行文件傳送到實驗箱,進行調(diào)試狀態(tài),此時屏幕會顯示實驗箱各個寄存器的值。最后點擊連續(xù)運行按鈕,實驗箱上的數(shù)碼顯示管和LED燈便會按照設(shè)計的要求進行工作。</p><p> 在運行的過程中可以隨時按實驗箱上的RESET鍵,中斷程序的執(zhí)行,以便進行代碼的修改或者結(jié)束系統(tǒng)的運行。</p><p> 5.4 系統(tǒng)測試結(jié)果</p><p>
79、 按照表2-1中交通燈四個狀態(tài)所對應(yīng)的秒數(shù),在程序中為各個狀態(tài)子程序設(shè)定相應(yīng)的時間初值。測試運行的結(jié)果如下:</p><p> 開始運行時,系統(tǒng)在狀態(tài)一下工作,兩個顯示屏顯示剩余時間為5秒,并不斷遞減,同時LED燈的2、4路口的紅燈點亮,1、3路口的黃燈點亮;當狀態(tài)一的剩余時間減至零的時候,系統(tǒng)自動切換到狀態(tài)二,2、4路口顯示屏顯示剩余時間變?yōu)?5秒并遞減,1、3路口顯示屏顯示剩余時間變?yōu)?0秒并遞減,同時1
80、、3路口的紅燈和2、4路口的綠燈點亮;狀態(tài)二結(jié)束時,系統(tǒng)切換到狀態(tài)三,兩個顯示屏的剩余時間變更為5秒,1、3路口的紅燈和2、4路口的黃燈點亮;狀態(tài)三結(jié)束時,進入狀態(tài)四,2、4路口顯示屏顯示剩余時間變?yōu)?0秒并遞減,1、3路口顯示屏顯示剩余時間變?yōu)?5秒并遞減,同時1、3路口的綠燈點亮,2、4路口的紅燈點亮。狀態(tài)四結(jié)束時,自動切換到狀態(tài)一循環(huán)執(zhí)行。</p><p><b> 參考文獻</b>
81、</p><p> [1] 季福坤:《計算機組織與體系結(jié)構(gòu)》[M],中國水利水電出版社2006年版</p><p> [2] 李繼燦:《微型計算機系統(tǒng)與接口》[M],清華大學出版社2005年版</p><p> [3]楊立:《微型計算機系統(tǒng)與接口》[M],中國鐵道出版社2009年版</p><p> [4]《DVCC系列單片機微機仿真
82、實驗系統(tǒng)實驗指導書》[M],啟東計算機廠有限公司</p><p> [5] 《紅綠燈控制系統(tǒng)的設(shè)計》[C], 百度文庫</p><p><b> 心得 體會</b></p><p> 通過這次課程設(shè)計,加強了我們動手、思考和解決問題的能力.現(xiàn)在設(shè)計已經(jīng)做好了,自己感覺還是比較好的,雖然花了很多的時間,但學到了很多東西.做課程設(shè)計的時候,
83、查閱了很多課本、資料書,增強了自己對知識的理解,很多以前不是很懂的問題現(xiàn)在都有了更高層次的理解.在課程設(shè)計的過程中,我想了很多種方案,對同一個問題,都想了很多種不同的接法,運用不同的芯片進行了比較,最后還是采取了上面的方法進行連接.</p><p> 在這次課程設(shè)計中,遇到最棘手也是最深刻的問題是不太了解所用平臺的硬件資源以及其電路結(jié)構(gòu)。深刻教訓:使用匯編語言編寫程序時,一定要好好了解所用平臺的硬件資源!<
84、;/p><p> 這次課程設(shè)計之后,使我們明白了:做任何事情都要認真仔細,更要有不輕易放棄的勇氣!不然的話,你會花更多的時間、轉(zhuǎn)很多的彎路才會做好.課程設(shè)計有利于提高我們的動手能力,能把我們所學的書本知識運用到實際生活中去.同時也豐富了我們的業(yè)余生活,提高我們對知識的理解能力!</p><p><b> 教師 評語</b></p><p>&
85、lt;b> 附 錄</b></p><p> CODE SEGMENT</p><p> ASSUME CS:CODE</p><p><b> ORG 21B0H</b></p><p> IOC EQU 0FF2AH</p><p> T_1 DB 01H&
86、lt;/p><p> T_2 DB 03H</p><p><b> C DB 00H</b></p><p> DATA1 DB 10 DUP(?)</p><p> BEGIN: ;初始化數(shù)據(jù)</p><p> MOV T_1,05H</p><p> MOV
87、 T_2,05H</p><p> MOV BX,OFFSET DATA1</p><p> MOV BYTE PTR CS:[BX],0c0h</p><p> MOV BYTE PTR CS:[BX+1],0f9h</p><p> MOV BYTE PTR CS:[BX+2],0a4h</p><p>
88、 MOV BYTE PTR CS:[BX+3],0b0h</p><p> MOV BYTE PTR CS:[BX+4],99h</p><p> MOV BYTE PTR CS:[BX+5],92h</p><p> MOV BYTE PTR CS:[BX+6],82h</p><p> MOV BYTE PTR CS:[BX+7]
89、,0f8h</p><p> MOV BYTE PTR CS:[BX+8],80h</p><p> MOV BYTE PTR CS:[BX+9],90h</p><p><b> ;初始化并口</b></p><p> MOV DX,0FF2BH ;方式0,全輸出模式</p><p>
90、 MOV AL,80H</p><p><b> OUT DX,AL</b></p><p> MOV DX,IOC</p><p> MOV AL,21H</p><p> MOV C,AL ;把C口的狀態(tài)記錄下</p><p><b> OUT DX,AL</b&g
91、t;</p><p><b> ;初始化計數(shù)器</b></p><p> MOV AL,36H ;計數(shù)器0.方式3,先寫高位后寫低位,2進制計數(shù)</p><p> OUT 43H,AL</p><p> MOV AL,52H</p><p> OUT 40H,AL</p>
92、;<p> MOV AL,11000011B</p><p> OUT 40H,AL</p><p> MOV AL,10110110B ;計數(shù)器,方式3,先寫低位后寫高位,2進制計數(shù)</p><p> OUT 43H,AL</p><p> MOV AL,02H</p><p> OUT
93、42H,AL</p><p> MOV AL,00H</p><p> OUT 42H,AL</p><p><b> ;設(shè)置中斷向量表</b></p><p><b> MOV AX,0H</b></p><p><b> MOV ES,AX</b
94、></p><p> MOV DI,002CH</p><p> MOV AX,OFFSET INTREEUP3</p><p><b> STOSW</b></p><p> MOV AX,0000H</p><p><b> STOSW</b></p
95、><p> MOV DI,0028H</p><p> MOV AX,OFFSET INTREEUP2</p><p><b> STOSW</b></p><p> MOV AX,0000H</p><p><b> STOSW</b></p><
96、p> ;======= 8259 初始化 =====================</p><p> MOV AL,13H ;寫ICW1,單片,邊沿觸發(fā),要ICW4</p><p> OUT 60H,AL</p><p> MOV AL,08H ;寫ICW2,中斷類型號從8開始</p><p> OUT 61H,AL<
97、;/p><p> ;寫ICW4,緩沖方式,8086/8088自動配置,即中斷返回時要寫OCW2</p><p> MOV AL,09H</p><p> OUT 61H,AL</p><p><b> ;省略不寫OCW1</b></p><p><b> STI</b>
98、</p><p> WATING:CALL DISP</p><p> JMP WATING</p><p><b> ;中斷服務(wù)程序</b></p><p> INTREEUP3: CLI</p><p><b> push ax</b></p>&
99、lt;p><b> push bx</b></p><p><b> push dx</b></p><p><b> STI</b></p><p> ; 1、3方向 (東西)</p><p><b> DEC T_1</b></p
100、><p> MOV AL,T_1</p><p> CMP AL,00H</p><p> JE CHANGE1</p><p><b> JMP RIGHT</b></p><p> CHANGE1: MOV AL,C ;讀入并口狀態(tài)</p><p> TES
101、T AL,02H</p><p><b> JNZ RED1</b></p><p> TEST AL,08H</p><p> JNZ YELLOW1</p><p> TEST AL,20H</p><p> JNZ GREEN1</p><p> RED1
102、: MOV DX,IOC</p><p><b> OR AL,20H</b></p><p> AND AL,35H</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_1,14H
103、</p><p><b> JMP RIGHT</b></p><p> YELLOW1:MOV DX,IOC</p><p><b> OR AL,02H</b></p><p> AND AL,17H</p><p><b> OUT DX,AL<
104、;/b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_1,05H</p><p><b> JMP RIGHT</b></p><p> GREEN1:MOV DX,IOC</p><p><b> OR AL,08H</b&g
105、t;</p><p> AND AL,1DH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_1,0fH</p><p> ;2、4方向 (南北)?</p><p><b
106、> RIGHT:</b></p><p><b> DEC T_2</b></p><p> MOV AL,T_2</p><p> CMP AL,00H</p><p> JE CHANGE2</p><p> JMP OUTPUT</p><p
107、> CHANGE2: MOV AL,C ;讀入c口狀態(tài)</p><p> TEST AL,01H</p><p><b> JNZ RED2</b></p><p> TEST AL,04H</p><p> JNZ YELLOW2</p><p> CMP AL,18H&
108、lt;/p><p><b> JZ RED2</b></p><p> TEST AL,10H</p><p> JNZ GREEN2</p><p> RED2:MOV DX,IOC</p><p><b> OR AL,10H</b></p><
109、;p> AND AL,3AH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_2,14H</p><p> JMP OUTPUT</p><p> YELLOW2: MOV DX,IOC<
110、;/p><p><b> OR AL,01H</b></p><p> AND AL,2BH</p><p><b> OUT DX,AL</b></p><p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_2,05H</p><
111、;p> JMP OUTPUT</p><p> GREEN2: MOV DX,IOC</p><p><b> OR AL,04H</b></p><p> AND AL,2EH</p><p><b> OUT DX,AL</b></p><p> MOV
112、 C,AL ;保存c口狀態(tài)</p><p> MOV T_2,0fH</p><p><b> ;輸出數(shù)字</b></p><p> OUTPUT: MOV AL,T_1</p><p> MOV AH,T_1</p><p> AND AL,01H</p><p&g
113、t;<b> MOV CL,4</b></p><p><b> SHR AH,CL</b></p><p> MOV AL,T_2</p><p> MOV AH,T_2</p><p> AND AL,01H</p><p><b> MOV CL,
114、4</b></p><p><b> SHR AH,CL</b></p><p><b> ;計數(shù)器從新賦初值</b></p><p> MOV AL,36H</p><p> OUT 43H,AL</p><p> MOV AL,50H</p&g
115、t;<p> OUT 40H,AL</p><p> MOV AL,11000011B</p><p> OUT 40H,AL</p><p> MOV AL,10110110B ;計數(shù)器2</p><p> OUT 43H,AL</p><p> MOV AL,02H</p>
116、<p> OUT 42H,AL</p><p> MOV AL,00H</p><p> OUT 42H,AL</p><p> ;===================================</p><p> MOV AL,T_1</p><p> CMP AL,03H</p&
117、gt;<p> JA RIGHTTEST</p><p> JMP YLEDSTA</p><p> RIGHTTEST:</p><p> MOV AL,T_2</p><p> CMP AL,03H</p><p> JA RETBCAK</p><p><
118、;b> YLEDSTA:</b></p><p><b> MOV AL,C</b></p><p> AND AL,03H</p><p> JNZ YLEDFLASH</p><p> JMP RETBCAK</p><p> ;======== 時間小于等于3
119、時 LED燈 閃爍 ===========</p><p> YLEDFLASH:</p><p><b> PUSH CX</b></p><p> MOV CX,0bH ; 閃爍3次</p><p> MOV AL,C ;讀入c口狀態(tài)</p><p> AND AL,1111
120、1100B ; 燈滅</p><p> MOV DX,IOC</p><p><b> OUT DX,AL</b></p><p> CALL DELAY ;短延時</p><p> MOV AL,C ;燈亮</p><p><b> OUT DX,AL</b&g
121、t;</p><p> CALL DELAY ;短延時</p><p><b> POP CX</b></p><p> JMP RETBCAK</p><p> ;;=================;短延時 ===================================</p>
122、<p><b> DELAY:</b></p><p> CALL DELAY2</p><p><b> RET</b></p><p> DELAY2: PUSH CX</p><p> MOV CX,7aaaH ;;;;</p><p>
123、 DELA1:LOOP DELA1</p><p><b> POP CX</b></p><p><b> RET</b></p><p> ;==================================================================</p><p&
124、gt;<b> RETBCAK:</b></p><p> MOV AL,20H ;寫ocw2然后返回</p><p> MOV DX,0060h</p><p><b> OUT DX,AL</b></p><p><b> cli</b></p>
125、<p><b> pop dx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p><b> sti</b></p><p><b> IRET</b
126、></p><p> ;===============中斷返回 ==============</p><p> ;============== 應(yīng)急 中斷程序 ===============</p><p> INTREEUP2: CLI</p><p><b> push ax</b></p>
127、<p><b> push bx</b></p><p><b> push dx</b></p><p> MOV AL,30H ; 全亮紅燈</p><p> MOV DX,IOC</p><p><b> OUT DX,AL</b></p&
128、gt;<p> MOV C,AL ;保存c口狀態(tài)</p><p> MOV T_1,0ah</p><p> MOV T_2,0ah</p><p> MOV AL,20H ;寫ocw2然后返回</p><p> MOV DX,0060h</p><p><b> OUT DX,
129、AL</b></p><p><b> pop dx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p><b> STI</b></p><p&g
130、t;<b> IRET</b></p><p> ;==================================================================</p><p><b> DISP:</b></p><p><b> ;過濾</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計--交通燈控制系統(tǒng)設(shè)計
- eda交通燈課程設(shè)計---交通燈控制系統(tǒng)
- 交通燈控制系統(tǒng)課程設(shè)計
- 課程設(shè)計--交通燈控制系統(tǒng)
- eda交通燈課程設(shè)計---交通燈控制系統(tǒng)的設(shè)計
- 交通燈控制系統(tǒng)課程設(shè)計
- 交通燈控制系統(tǒng) 課程設(shè)計
- 交通燈控制系統(tǒng)課程設(shè)計
- 交通燈課程設(shè)計---交通控制系統(tǒng)設(shè)計
- 課程設(shè)計--交通燈控制系統(tǒng)設(shè)計
- 課程設(shè)計---交通燈控制系統(tǒng)設(shè)計
- 課程設(shè)計-交通燈控制系統(tǒng)設(shè)計
- eda交通燈課程設(shè)計--cpld實現(xiàn)交通燈控制系統(tǒng)
- 交通燈模擬控制課程設(shè)計
- 交通燈控制系統(tǒng)課程設(shè)計報告
- 智能交通燈控制系統(tǒng)設(shè)計課程設(shè)計
- 硬件課程設(shè)計實踐報告-- 模擬交通燈控制系統(tǒng)
- eda課程設(shè)計--交通燈控制系統(tǒng)設(shè)計
- 微機課程設(shè)計---交通燈控制系統(tǒng)設(shè)計
- 模擬交通燈課程設(shè)計--模擬交通燈的設(shè)計
評論
0/150
提交評論