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