版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 交 通 燈</b></p><p> 1·題義分析及解決方案</p><p> 1.1題義需求分析:</p><p> 本程序設(shè)計需應(yīng)用軟件控制并運行接口電路,使連接在該接口上的紅、綠、黃發(fā)光二極管按十字路口交通紅、綠、黃燈形式閃爍,并顯示綠燈的倒計時時間。</p><p
2、> 交通燈變化規(guī)律根據(jù)實地查看和查看資料以及詢問他人:交通燈在每天的變化規(guī)律并不相同,此課程設(shè)為了簡化,只考慮了交通燈正常時的變化規(guī)律,即有如下規(guī)律變化:程序一開始,四個方向的燈全為紅燈,接著變?yōu)辄S燈閃爍,然后東西方向為紅燈,南北方向為綠燈并顯示倒計時時間,倒計時間結(jié)束后,交通燈變成黃燈,閃爍幾次后,東西方向變成綠燈,南北變成紅燈,再變成黃燈,如此按交通燈的變化規(guī)則交替變化,在對綠燈采取倒計時時,采用的是為各個燈設(shè)置固定的亮持續(xù)
3、時間。對此設(shè)計模擬交通燈變化規(guī)律,需要解決如下問題:</p><p> ?。?)綠燈的倒計時時間如何顯示,倒計時間用什么來控制</p><p> ?。?)交通燈用什么器材來模擬顯示</p><p> ?。?)如何設(shè)計pc機(jī)與實驗?zāi)M芯片接口通信</p><p> (4)交通燈運行狀態(tài)怎么實現(xiàn),交通燈狀態(tài)的切換問題怎么解決</p>
4、<p> (5)如何實現(xiàn)交通燈的閃爍,并且控制閃爍時間,</p><p> ?。?)如何對所選芯片進(jìn)行編程控制</p><p> ?。?)如何獲取開關(guān)上用戶設(shè)置的初值信息,并且把初值信息如何存儲。</p><p> 2·解決問題方法及思路:</p><p><b> 2.1硬件部分</b>&
5、lt;/p><p> 2.1.1、8255設(shè)計說明:</p><p> 用8255A可編程并行接口芯片的A、B、C三口作為紅、綠、黃交通燈的控制輸入口。8255有三個并行輸入輸出口,可以方便的對三種顏色的交通燈進(jìn)行很好的控制。解決方案是:PB0~PB7接模擬燈二極管,PA0~PA7接7段二極管,然后利用8255A芯片與微處理器芯片集成芯片卡PCI卡連接,用于完成硬件方面的實驗正常通信。其芯
6、片比較說明:如表2-1</p><p> 2.1.2、LED設(shè)計說明:</p><p> 用LED作為倒計時時間的顯示器, LED在亮度、功耗、可視角度和刷新速率等方面,都更具優(yōu)勢。LED與LCD的功耗比大約為10:1,利用LED技術(shù),可以制造出比LCD更薄、更亮、更清晰的顯示器,LED是發(fā)光二極管屬于二極管的一種,LCD是液晶顯示器,兩者相差太多.但是用LED的點陣也能組成顯示器,適
7、用于戶外大屏幕顯示,分辨率較低,LED與LCD具體比較如表2-2</p><p> 表2-1:8255A與8251芯片的比較</p><p> 表2-2:LCD與LED的比較</p><p> 通過分析和對比,LED顯示器要較優(yōu)于LCD顯示器,因此本實驗選擇LED</p><p><b> 2.2、軟件部分</b>
8、;</p><p> 根據(jù)硬件需求采用8255A芯片,為實現(xiàn)對通信的控制,采用匯編語言,分別編程控制8255的工作方式,在編程時應(yīng)考慮到狀態(tài)的轉(zhuǎn)換采用查詢方式控制,根據(jù)需求分析可采用8255的方式0下工作具體如下設(shè)置:</p><p> 硬件連接說明:8255A芯片的PA、PB、PC三口的工作方式為方式0,將8255的PB0~PB7接紅綠燈用以模擬交通燈的變化,PA0~PA7接7段LE
9、D燈的段選碼,,完成LED顯示器的段選,PC0~PC3接LED顯示器的位選碼用以完成位選,PC4-PC7接開關(guān),以完成初值接收。初始化8255后。利用匯編語言編寫訪問控制程序,控制綠燈的顯示倒記時間,它與紅燈的顯示時間是相同的,編寫控制程序控制黃燈的閃爍時間,當(dāng)綠燈的顯示時間結(jié)束后切換到黃燈,再切換到紅燈,如此循環(huán)下去。 </p><p><b> 3·硬件設(shè)計</b><
10、/p><p> 3.1選擇芯片8255A</p><p> 3.1.1、8255A在本實驗中的作用:</p><p> 通過8255A的三個I/O端口A口、B口、C口與紅、綠、黃二極管連接起來控制交通燈的規(guī)律性變化。</p><p> 3.1.2、8255A的功能分析:</p><p> PA、PB、PC三口均工
11、作在方式0狀態(tài)。:PB2~PB3接黃燈,PB4~PB5接紅燈;PB0~PB1接綠燈,PA0~PA7作為段選碼;PC0~PC1作為位選碼。我們采用的是將PC口分成兩部分使用,PC0-PC3作為位選碼,PC4-PC7作為輸入口,接收開關(guān)輸入的初值信息。將在用8255A前首先要對它進(jìn)行初始化,設(shè)置它的方式選擇控制字。</p><p> 3.1.3、8255A工作方式0說明:</p><p>
12、 方式0的工作特點:這種方式通常不用聯(lián)絡(luò)信號,不使用中斷,三個通道中的每一個都有可以由程序選定作為輸入或輸出。其功能為:</p><p> ?。?)兩個8位通道:通道A、B。兩個四位通道:通道C高4位和低四位;</p><p> ?。?)任何一個通道可以作輸入/輸出;(3)輸出是鎖存的;</p><p> ?。?)輸入是不鎖存的;</p><p&
13、gt; ?。?)在方式0時各個通道的輸入/輸出可有16種不同的組合。</p><p> 方式0的使用場合:同步傳送是在外設(shè)控制過程的各種動作時間為固定,且已知的條件下使用的。因此,傳送中不要應(yīng)答信號。輸入時,執(zhí)行程序只要給出IN指令;而輸出時,也只給出OUT指令,就能實現(xiàn)數(shù)據(jù)的輸入或輸出。優(yōu)點是程序簡單,接口的硬件開銷小。</p><p> 查詢式傳輸時,要先查詢一個外設(shè)的狀態(tài),當(dāng)該狀
14、態(tài)表示外設(shè)已準(zhǔn)備好時,方能開始查詢傳輸,否則CPU將繼續(xù)查詢。但在方式0,沒有規(guī)定固定的應(yīng)答信號,所以,這時將通道A、B作為數(shù)據(jù)通道,把通道C的4個位(高4位或低4位)規(guī)定為輸出口,用來輸出一些控制信號,而把通道C的另外4個位規(guī)定為輸入口,用來輸入外設(shè)的狀態(tài)。這樣利用通道C來配合通道A和B的輸入/輸出操作。 </p><p> 3.1.4、8255A方式選擇控制字說明:</p><p>
15、 控制字格式如圖3-1:</p><p> 圖3-1:8255A芯片的控制字格式</p><p> 參數(shù)說明:D7=1工作方式控制標(biāo)志。D6D5組合設(shè)定A口工作方式:00~方式0、01~方式1、10/11~方式2。D4設(shè)定A口的輸入/輸出,D4=1輸入D4=0輸出。D3C口高位輸入/輸出選擇,D3=1輸入D3=0輸出。D2B口工作方式選擇,D2=1方式1;D2=0方式0。D1B口輸入
16、/輸出選擇D1=1輸入D1=0輸出。D0設(shè)定C口低位輸入/輸出D0=1輸入D0=0輸出。</p><p> 3.1.5、8255A技術(shù)參數(shù):</p><p> 主要參數(shù)說明:8255A工作最大電流為120MA,VCC=-5V~+5V,I(DAR)工作電流最大為4MA。8255的輸出電壓不高,連接到LED時,最好加入一個驅(qū)動器起到電流放大的作用,其具體參數(shù)值說明如表3-1。</p
17、><p> 表3-1:8255A技術(shù)參數(shù)說明</p><p> 3.1.6、8255A的邏輯圖</p><p> 圖3-2 8255A內(nèi)部邏輯圖</p><p> 3.2、選擇芯片七段LED顯示器</p><p> 3.2.1、LED顯示器在本設(shè)計中的作用:</p><p> 接收由82
18、55A芯片送來的字型碼顯示編碼結(jié)果其中LED技術(shù)參數(shù)如表3-2:</p><p> 表3-2 LED技術(shù)參數(shù)說明</p><p> 3.2.2、七段LED顯示器LED顯示器的功能分析:</p><p> LED顯示器有共陽極和共陰極兩類。其原理圖(圖3-3):</p><p> 圖是一個6位LED動態(tài)顯示電路,段驅(qū)動器輸出LED字符7
19、段代碼信息,位驅(qū)動器輸出6個LED的位選信號,即分時使Q0 ~ Q5輪流有效,使得LED0~LED5輪流顯示。</p><p> 圖3-3:七段LED顯示器</p><p> 筆畫型LED顯示器是由8個二極管電路a~dp按字型‘8’的方式排列,當(dāng)不同的二極管被選通后根據(jù)發(fā)光效果會顯示不同的自型。本設(shè)計中采用共陰極連接方式,a~dp分別與74LS273的1Q~8Q相連,接收段選碼信號(高
20、電平);4位LED顯示器的4根共陰極引線與8255A的PC0~PC3相連,接收位選碼信號(低電平)。段選碼和位選碼共同作用以顯示不同的字型。</p><p> LED字型顯示原理:</p><p> 表3-3:LED字型顯示組合</p><p> 4·硬件總邏輯圖及其說明</p><p> 4.1、硬件原理說明:</p
21、><p> 本設(shè)計以STAR ES598PCI實驗儀提供的最實用、新穎的接口實驗,提供的匯編控制程序設(shè)計控制硬件運行為依據(jù)設(shè)計的;在課程設(shè)計中主要利用了STAR ES598PCI實驗提供的8255A芯片,7段LED顯示器,以及紅綠燈LED顯示二極管,其中完成PC機(jī)與實驗箱之間的通信用到了最主要的集成卡PCI卡。課程設(shè)計時完成編程調(diào)試的只要開發(fā)工具為星研集成開發(fā)環(huán)境。</p><p> 4.
22、2、硬件連接說明:</p><p> 8255A芯片的PA、PB、PC三口的工作方式為方式0,將8255的PB0~PB7接紅綠燈用以模擬交通燈的變化,PA0~PA7接7段LED燈的段選碼完成LED顯示器的段選,PC0~PC3接LED顯示器的位選碼用以完成位選,PC機(jī)通過數(shù)據(jù)總線經(jīng)過集成電路卡PCI卡與8255A芯片相連接。其連接方式為:PCI卡的地址總線A1A0接到8255A芯片的A1A0來實現(xiàn)端口選擇。將82
23、55A芯片的片選信號CS與PCI卡的CS1相連接來決定各端口的初始地址。8255A芯片的PB口中PB0~PB7經(jīng)過排線與實驗箱的紅綠燈電路板的插槽相連接,用來實現(xiàn)控制交通燈的變化規(guī)律;8255A的PC口中的PC0~PC3經(jīng)過排線與實驗箱上的7段LED燈的位選碼插槽相連接,用來實現(xiàn)選擇綠燈倒計時時的7段LED燈的位置選擇,8255A芯片的PA口中的PA0~PA7經(jīng)過排線與實驗箱上的7段LED燈的段選碼插槽相連接,用來實現(xiàn)7段LED燈的段選
24、碼選擇。LED燈管的a、b、c、d、e、f、g、dp做為段選來顯示倒計時數(shù)據(jù)。</p><p> 圖4-1:硬件總連接圖</p><p><b> 5·控制程序設(shè)計</b></p><p> 5.1、控制程序設(shè)計思路說明:</p><p> 首先,明確交通燈的變化規(guī)律,假設(shè)在一個十字路口,其中東西方向,
25、南北方向,工作方式如下:將紅黃綠燈按照紅燈停,綠等行,黃燈閃爍為緩沖時間的原則進(jìn)行通車。倒計時將可以由用戶自由設(shè)定,用8255的PB,PC口來連接紅黃綠燈電路板,而PA口連接LED顯示管來計數(shù)倒計時。開始時初始化東西南北方向全為紅燈,然后東西方向綠燈亮,進(jìn)入倒計時默認(rèn)值40秒,結(jié)束后東西方向綠燈閃爍三次,變黃燈亮三秒,然后紅燈亮;南北方向綠燈亮,此時南北方向進(jìn)入倒計時,倒計時時間可以在開關(guān)口提前設(shè)定本次倒計時時間。結(jié)束后綠燈閃爍三秒后,
26、變黃燈亮三秒,然后紅燈亮,東西方向綠燈亮,如此循環(huán)下去。</p><p> 其次,主程序的設(shè)計思路:首先初始化8255A的芯片的控制字格式和狀態(tài)字格式,其次設(shè)置交通燈開始運行的初始狀態(tài)并做相應(yīng)的延時便于觀察,再次調(diào)用子程序?qū)|西綠燈的倒計時時間,調(diào)用子程序顯示綠燈的倒計時,后進(jìn)行查表選擇相應(yīng)的LED燈的段選碼,使相應(yīng)的燈亮,顯示東西綠燈交通燈變化,然后設(shè)置綠燈的閃爍,以及黃燈的亮持續(xù),再次就是查表設(shè)置轉(zhuǎn)換成南北
27、綠燈的亮,同時調(diào)用子程序設(shè)置南北綠燈的倒計時時間,后進(jìn)行查表選擇相應(yīng)的LED燈的段選碼,使相應(yīng)的燈亮,顯示南北綠燈交通燈變化,然后做南北綠燈的閃爍,和黃燈的亮持續(xù),最后做主程序的循環(huán),利用無條件跳轉(zhuǎn)指令。其控制流程如(流程圖:5-1)</p><p> 圖5-1:主控制程序</p><p> 再次,也設(shè)計了一個到計時顯示子程序,用來顯示綠燈的到計時時間,設(shè)計思路:首先要保存進(jìn)入到計時子
28、程序時的斷點保存,以保證能夠子程序結(jié)束能夠正常返回主程序,其次設(shè)置LED燈的秒數(shù)跳的快慢,使其運行結(jié)果便于觀察,再次設(shè)置程序分別顯示到計時LED燈的秒數(shù)的個位與十位,在顯示秒數(shù)的個位與十位時要做秒數(shù)的個位與十位計數(shù)是否到零的判斷,與此同時也要做秒數(shù)的個位與十位的斷選碼指示器的移動,最后做恢復(fù)斷點和子程序的返回。其控制流程如(流程圖:5</p><p> 圖5-2:倒計時顯示程序 </p>&
29、lt;p> 最后,還設(shè)計了兩個延時程序,一個是綠燈閃爍3次時間的延時DL500子程序,一個是延時黃燈亮的時間DELAY子程序;DL500子程序的設(shè)計思路利用了設(shè)備提供的軟中斷實現(xiàn)的延時,其控制流程如(流程圖:5-3);DELAY子程序的設(shè)計利用的是多次循環(huán)空操作實現(xiàn),思路首先保存斷點設(shè)置空操作的次數(shù),做判斷循環(huán)是否該結(jié)束,然后恢復(fù)斷點,返回主程序,其控制流程如(流程圖:5-4</p><p> 圖5-3
30、:DELAY延時程序</p><p> 圖5-4:500ms延時程</p><p> 5.4、功能實現(xiàn)程序說明:</p><p> ;片選CS1偏移地址范圍 0F0H~0FFH</p><p> .MODELTINY</p><p> PCIBAR3EQU1CH;8位I/O空間基地址(它就是實驗
31、儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) </p><p> Vendor_IDEQU 10EBH;廠商ID號</p><p> Device_IDEQU8376;設(shè)備ID號</p><p> .STACK100</p><p><b> .DATA</
32、b></p><p> IO_Bit8_BaseAddressDW?</p><p> msg0DB'BIOS不支持訪問PCI $'</p><p> msg1DB'找不到Star PCI9052板卡 $'</p><p> msg2DB'讀8位I/O
33、空間基地址時出錯$'</p><p> GGG DW ?</p><p> HHH DW ?</p><p> WWW DW ?</p><p> XXX DW ?</p><p> COM_ADDDW00F3H;控制口偏移量</p>
34、<p> PA_ADDDW00F0H;PA口偏移量</p><p> PB_ADDDW00F1H;PB口偏移量</p><p> PC_ADDDW00F2H;PC口偏移量</p><p> LED_DataDB 10111110B ;東西綠燈,南北紅燈</p>&l
35、t;p> DB10111111B;東西綠燈滅,南北紅燈</p><p> DB 10111101B;東西黃燈亮,南北紅燈</p><p> DB11101011B;東西紅燈,南北綠燈</p><p> DB11111011B;東西紅燈,南北綠燈滅</p><p> DB11011011B
36、 ;東西紅燈,南北黃燈亮</p><p> SG DB 6fH,7fH,07H,7dH,6dH,66H,4fH,5bH,06H,3fH ;9-0 </p><p><b> .CODE </b></p><p> START:MOV AX,@DATA</p><p> MOV DS,AX
37、</p><p><b> NOP</b></p><p> CALL InitPCI</p><p> CALL MoDIfyAddress;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實地址</p><p><b> ;程序開始</b></p><p> MOV
38、 DX,COM_ADD ;初始化8255控制口,將地址設(shè)置成COM_ADD</p><p> MOV Al,88H ;方式0下,PA,PB為輸出口 PC為輸入口</p><p><b> OUT DX,Al</b></p><p> LEA DI,[SG+7]</p>
39、<p> MOV GGG,DI</p><p> MOV WWW,DI</p><p> LEA SI,[SG+9]</p><p> MOV HHH,SI</p><p> MOV XXX,SI </p><p> CALL DL500ms</p><p>
40、 START1:CALL TEST1 </p><p> LEABX,LED_Data ;將控制信息表的首地址給B</p><p> MOVDX,PB_ADD</p><p> MOVAl,0;Al為0表示查表中第一個字節(jié)的內(nèi)容</p><p> XLAT;查表,將表中第一個字節(jié)
41、的內(nèi)容放入Al中</p><p> OUTDX,Al;東西綠燈,南北紅燈 </p><p> MOV SI,HHH</p><p> MOV DI,GGG</p><p><b> CALLDJS</b></p><p><b> MOVCX
42、,3</b></p><p> START2:MOVAl,1</p><p><b> XLAT</b></p><p> OUTDX,Al;東西綠燈滅,南北紅燈</p><p> CALLDL500ms</p><p><b> MOVAl,
43、0</b></p><p><b> XLAT</b></p><p> OUTDX,Al;東西綠燈亮,南北紅燈</p><p> CALLDL500ms </p><p> LOOPSTART2</p><p> MOVAl,2;東
44、西黃燈亮,南北紅燈</p><p><b> XLAT</b></p><p> OUTDX,Al</p><p> CALLDL2S </p><p> MOVAl,3;東西紅燈,南北綠燈</p><p><b> XLAT&
45、lt;/b></p><p> OUT DX,Al</p><p> CALL TEST1</p><p> MOV SI,XXX</p><p> MOV DI,WWW</p><p><b> CALLDJS</b></p><p>
46、;<b> MOVCX,3</b></p><p> START3:MOVAl,4;東西紅燈,南北綠燈滅</p><p><b> XLAT</b></p><p><b> OUTDX,Al</b></p><p> CALLDL500ms</p
47、><p> MOVAl,3;東西紅燈,南北綠燈亮</p><p><b> XLAT</b></p><p> OUTDX,Al</p><p> CALLDL500ms</p><p> LOOPSTART3</p><p> MOVAl,5;
48、東西紅燈,南北黃燈亮</p><p><b> XLAT</b></p><p> OUTDX,Al</p><p> CALLDL2S</p><p> JMPSTART1</p><p><b> ;延時500ms</b></p>
49、<p> DL500msPROCNEAR</p><p><b> PUSHAX</b></p><p><b> PUSHDX</b></p><p> MOVDX,500</p><p> MOVAH,0FFH</p><p&
50、gt;<b> INT21H</b></p><p><b> POPDX</b></p><p><b> POPAX</b></p><p><b> RET</b></p><p> DL500msENDP</p
51、><p><b> ;延時2秒</b></p><p> DL2SPROCNEAR</p><p><b> PUSHCX</b></p><p><b> MOVCX,4</b></p><p> DL2S1:CALLDL50
52、0ms</p><p> LOOPDL2S1</p><p><b> POPCX</b></p><p><b> RET</b></p><p> DL2SENDP</p><p> TEST1 PROC NEAR</p>&l
53、t;p><b> PUSH AX</b></p><p><b> PUSH BX</b></p><p><b> PUSH CX</b></p><p><b> PUSH DX</b></p><p> MOV DX,PC_ADD&l
54、t;/p><p><b> IN AL,DX</b></p><p> TEST AL,80H</p><p><b> JNZ OOO</b></p><p> MOV DX,PC_ADD</p><p><b> IN AL,DX</b><
55、;/p><p> AND AL,7FH</p><p><b> SHR AL,4</b></p><p><b> MOV BL,9</b></p><p><b> SUB BL,AL</b></p><p><b> MOV BH,
56、0</b></p><p><b> MOV SI,BX</b></p><p> LEA DI,[SG+SI]</p><p> MOV GGG,DI</p><p><b> OOO: </b></p><p> MOV DX,PC_ADD&l
57、t;/p><p><b> IN AL,DX</b></p><p> AND AL,7FH</p><p><b> SHR AL,4</b></p><p><b> MOV BL,9</b></p><p><b> SUB BL,
58、AL</b></p><p><b> MOV BH,0</b></p><p><b> MOV SI,BX</b></p><p> LEA DI,[SG+SI] </p><p> MOV WWW,DI</p><p><b> POP
59、DX</b></p><p><b> POP CX</b></p><p><b> POP BX</b></p><p><b> POP AX</b></p><p><b> RET </b></p><
60、p> TEST1 ENDP</p><p> ;倒計時顯示程序 </p><p> DJS PROC NEAR </p><p><b> PUSH DX</b></p><p><b> PUSH CX</b></p>&l
61、t;p><b> PUSH BX</b></p><p><b> PUSH AX</b></p><p><b> PRT:</b></p><p> MOV CX,02fH ;設(shè)置循環(huán)秒數(shù)跳的快慢(LED);;;;循環(huán)計數(shù)初值CX->30<
62、;/p><p><b> NUM: </b></p><p> MOV Al,[SI] ;設(shè)置段選碼,將SI中的內(nèi)容送入PA口 </p><p> MOV DX,PA_ADD</p><p> OUT DX,Al </p><p> MOV Al, 0FEH
63、 ;設(shè)置位選碼,PC0口置0高四位為0 </p><p> MOV DX,PC_ADD ; 其他口為1來選中LED1,顯示個位</p><p> OUT DX,Al </p><p> CALL DELAY</p><p> MOV Al,[DI]
64、 ;設(shè)置段選碼,將DI中的內(nèi)容送入PA口</p><p> MOV DX,PA_ADD</p><p> OUT DX,Al </p><p> MOV Al,0FDH ;設(shè)置位選碼,PC1口置0高四位為0 </p><p>
65、; MOV DX,PC_ADD ; 其他口為1來選中LED2,顯示十位</p><p> OUT DX,Al </p><p> CALL DELAY</p><p> LOOP NUM ;循環(huán)到NUM </p><p> INC SI
66、 ;個位SI自增1</p><p> CMP SI,OFFSET SG+10 ;與表外的第一個偏移地址相比較,如果不</p><p> JNZ PRT ;等則顯示數(shù)據(jù)且SI+1,如果相等順序執(zhí)</p><p> INC DI
67、 ;十位DI自增1</p><p> MOV SI,OFFSET SG ;將SG即9的偏移地址送給SI</p><p> CMP DI,OFFSET SG+10 ;與表外的第一個偏移地址相比較,如果不</p><p> JNZ PRT ; 等則顯示數(shù)據(jù)且DI+1,如果相等順序執(zhí)行&
68、lt;/p><p> POP AX ; 結(jié)束子程序</p><p><b> POP BX</b></p><p><b> POP CX</b></p><p><b> POP DX</b></p><
69、p><b> RET</b></p><p><b> DJS ENDP</b></p><p><b> ;延時子程序</b></p><p> DELAY PROC </p><p><b> PUSH CX</b></
70、p><p> MOV CX,0ffffH</p><p> LOOP5:NOP </p><p> LOOP LOOP5</p><p><b> POP CX</b></p><p> MOV Al, 0FFH ;</p><p>
71、MOV DX,PC_ADD </p><p> OUT DX,Al;顯示器清0</p><p><b> RET</b></p><p> DELAY ENDP </p><p> K20 PROC NEAR ;把20的字型碼偏移地址送到寄
72、存器</p><p> MOV SI,OFFSET SG+9</p><p> MOV DI,OFFSET SG+9-1</p><p><b> RET</b></p><p><b> K20 ENDP</b></p><p> K40 PROC NEAR
73、 ;把40的字型碼偏移地址送到寄存器</p><p> MOV SI,OFFSET SG+9</p><p> MOV DI,OFFSET SG+9-1</p><p><b> RET</b></p><p><b> K40 ENDP</b></p&
74、gt;<p><b> ;程序結(jié)束</b></p><p> InitPCIPROCNEAR</p><p> MOVAH,00H</p><p> MOVAl,03H</p><p> INT10H;清屏</p><p> MOVAH,0B1H&
75、lt;/p><p> MOVAl,01H</p><p><b> INT1AH</b></p><p><b> CMPAH,0</b></p><p> JZInitPCI2</p><p> LEADX,msg0</p><
76、p> InitPCI1:MOVAH,09H</p><p><b> INT21H</b></p><p><b> JMPExit</b></p><p> InitPCI2:MOVAH,0B1H</p><p> MOVAl,02H</p>
77、<p> MOVCX,Device_ID</p><p> MOVDX,Vendor_ID</p><p><b> MOVSI,0</b></p><p><b> INT1AH</b></p><p> JNCInitPCI3;是否存在Star PCI905
78、2板卡</p><p> LEADX,msg1</p><p> JMPInitPCI1</p><p> InitPCI3:MOVDI,PCIBAR3</p><p> MOVAH,0B1H</p><p> MOVAl,09H</p><p> INT1A
79、H;讀取該卡PCI9052基地址</p><p> JNCInitPCI4</p><p> LEADX,msg2</p><p> JMPInitPCI1</p><p> InitPCI4:ANDCX,0FFFCH</p><p> MOVIO_Bit8_BaseAddress,C
80、X</p><p><b> RET</b></p><p> InitPCIENDP</p><p> MoDIfyAddressPROCNEAR</p><p> ADDCOM_ADD,CX</p><p> ADDPA_ADD,CX</p>&l
81、t;p> ADDPB_ADD,CX</p><p> ADDPC_ADD,CX</p><p><b> RET</b></p><p> MoDIfyAddressENDP</p><p> Exit:MOVAH,4CH</p><p><b>
82、 INT21H</b></p><p> ENDSTART</p><p> 圖4-1:硬件總連接圖</p><p><b> 6·上機(jī)調(diào)試過程</b></p><p><b> 6.1、硬件連接</b></p><p> 首先連接硬件部
83、件,根據(jù)實驗硬件原理圖和硬件連接說明,進(jìn)行連線,結(jié)合實驗時的實驗箱的實際環(huán)境連接好上述部件后給實驗箱通電。在實驗硬件連接時曾出現(xiàn),LED燈全部都不亮,后來經(jīng)過幾遍檢查,才找出原因,把PA口當(dāng)成PC口接線路,錯誤的原因是實驗時不細(xì)心和實驗態(tài)度不認(rèn)真,經(jīng)過此次經(jīng)歷,明白實驗要比理論更仔細(xì),任何一個小錯誤都可能是造成實驗失敗的原因。</p><p><b> 6.2、軟件調(diào)試</b></
84、p><p> 我們做交通燈的同學(xué)在一起討論,參閱了上屆同學(xué)的程序設(shè)計思想,分別增加了相應(yīng)的子程序用來實現(xiàn)相應(yīng)的功能,但在程序的調(diào)試過程中卻出現(xiàn)了各種錯誤現(xiàn)象,在單步調(diào)試過程下不斷改正錯誤,重新調(diào)試,直到調(diào)試通過。但是功能還是不理想。后來經(jīng)過參考其他班同學(xué)的程序設(shè)計,分別對各個程序代碼進(jìn)行了修改,后經(jīng)過老師指導(dǎo)在老師的指導(dǎo)下,調(diào)試通過,功能基本實現(xiàn)。對倒計時時間的正確顯示和功能實現(xiàn),單步調(diào)試中倒計時實現(xiàn)后,紅綠燈的變
85、化卻又不能出現(xiàn)正常的結(jié)果,在變化中出現(xiàn)多個燈同時亮和同時滅的現(xiàn)象,后經(jīng)過同學(xué)的幫助是在子程序設(shè)計時對寄存器AX錯寫成了AL,后經(jīng)過改正得以實現(xiàn)交通燈的正常變化和綠燈的倒計時顯示。在此基礎(chǔ)上,老師提出由開關(guān)輸入初值,以達(dá)到人為控制倒計時時間,我在原來程序基礎(chǔ)上增加了掃描開關(guān)子程序,在每次倒計時前程序自動檢測開關(guān),判斷開關(guān)的值,并且存入初值寄存器。</p><p><b> 6.3、結(jié)果分析</b&
86、gt;</p><p> 本實驗結(jié)果與主程序流程吻合,開始紅燈全亮,接著變?yōu)辄S燈閃爍,然后東西方向為紅燈,南北方向為綠燈并顯示倒計時時間,倒計時間結(jié)束后,交通燈變成黃燈,閃爍幾次后,東西方向變成綠燈,南北變成紅燈,再變成黃燈,如此按交通燈的變化規(guī)則交替變化。至于倒計時初值設(shè)置,由于只有4位二進(jìn)制作為輸入口,所以我采用二進(jìn)制形式作為輸入數(shù)字格式,開關(guān)5-8 分別對應(yīng)二進(jìn)制,其中開關(guān)7為最低位,5對應(yīng)最高位,8用來
87、判斷是否修改初值。例如開關(guān)5-8分別設(shè)置1101,則代表修改初值為60秒。</p><p><b> 7·心得與體會</b></p><p> 通過交通燈系統(tǒng)的模擬實驗設(shè)計,我對單片機(jī)的控制和設(shè)計有了更為直觀的認(rèn)識,對微型計算機(jī)原理與接口技術(shù)的知識有更好的學(xué)習(xí),通過此次課程設(shè)計我有很多收獲。我加深了對硬件部件的連接方法的掌握,加深了對芯片8255A的理解
88、,對8255A芯片的PA口、PB口、PC口的初始化設(shè)計有了更好的了解,同時在對8255A芯片的工作方式選擇,有了更好的認(rèn)識選擇。通過實驗的硬件連接,使我認(rèn)識到實驗時獨自動手能力的重要性,也使我認(rèn)識到我的動手能力的欠缺,也使我認(rèn)識到在以后的學(xué)習(xí)和其他工作時應(yīng)對獨自動手能力的培養(yǎng)。對芯片8255A的編程有了很好的掌握,并且從中學(xué)得了很多課本中無法理解的知識.在課本上學(xué)得都是些理論知識,通過本次的實際操作,更加鍛煉了我對所學(xué)知識的認(rèn)知應(yīng)用能力
89、,對8255A芯片的編程的更為直觀的應(yīng)用理解。</p><p> 在程序的調(diào)試中也對匯編語言有了很好的鞏固和理解,以前對匯編語言的理解不是太深和對匯編語言的語句理解不夠深入,開始對匯編語言并沒有真實的應(yīng)用與實際操作,從而對匯編語句的理解只知道表面的語句認(rèn)識,但經(jīng)過此次課程設(shè)計,在老師對實驗的控制程序的悉心教導(dǎo)和對實驗的控制程序的理解要求,學(xué)到了很多的知識,對匯編的語句有了更好的理解。 </p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計報告
- 交通燈課程設(shè)計報告
- 交通燈課程設(shè)計報告---交通燈控制器
- 課程設(shè)計交通燈設(shè)計報告
- 課程設(shè)計-交通燈設(shè)計報告
- 課程設(shè)計報告交通燈.doc
- 交通燈課程設(shè)計報告 (2)
- 交通燈課程設(shè)計報告6
- 交通燈課程設(shè)計報告2
- 微機(jī)交通燈課程設(shè)計報告
- 交通燈課程設(shè)計報告 (2)
- 微機(jī)課程設(shè)計報告-交通燈
- plc交通燈課程設(shè)計報告
- 交通燈電路課程設(shè)計報告
- 智能交通燈課程設(shè)計報告
- 交通燈課程設(shè)計
- 課程設(shè)計交通燈
- 課程設(shè)計—交通燈
- 交通燈課程設(shè)計
- 交通燈課程設(shè)計
評論
0/150
提交評論