

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 計算機科學(xué)與技術(shù)系</b></p><p><b> 課程設(shè)計報告</b></p><p> 2008 ~ 2009 學(xué)年第 一 學(xué)期</p><p><b> 2009-2-15</b></p><p><b> 倒計時數(shù)字
2、鐘</b></p><p> 題義分析及解決方案:</p><p> 設(shè)計一個接口與七段LED顯示器,顯示一個倒計時時鐘,顯示初值為60分00秒,每隔一秒改變一次顯示值,60秒為一分鐘,LED顯示器顯示分、秒的動態(tài)值。</p><p><b> 1 題義需求分析:</b></p><p> 根據(jù)題意設(shè)
3、計一個接口和七段LED顯示器,本設(shè)計能顯示一個具有固定初值的倒計時鐘,能每隔固定時間間隔(1s),動態(tài)刷新顯示值,并且能用LED顯示器顯示分秒的動態(tài)值,需要解決如下問題:</p><p> 1).選擇怎樣的接口問題?</p><p> 2).顯示設(shè)備的選擇問題?</p><p> 3).初值的設(shè)置和輸入問題?</p><p> 4).
4、計數(shù)值與顯示碼的轉(zhuǎn)換及動態(tài)值顯示問題?</p><p> 5).相關(guān)芯片與譯碼器的選擇問題?</p><p> 2解決問題方法及思路:</p><p> 1)硬件部分:根據(jù)七段LED顯示器的硬件結(jié)構(gòu),為減少器件的使用量,可以選擇芯片8255A,將七段LED顯示器與8255A的兩個八位并行輸出口連接,比如使用8255的A口和B口。其中,A口用于位選,確定選擇哪
5、一個顯示燈;B口用于段選擇,通過改變B口中的段碼,使得顯示燈能夠顯示出相應(yīng)的時間數(shù)字。8255與七段LED顯示器采用的共陰極的接法。</p><p> 2)軟件部分:根據(jù)題義要求,可以設(shè)立一個段碼表和一個顯示緩沖區(qū),以動態(tài)刷新的方式,顯示四位數(shù)字表示的時間。前者存放的是共陰極方式下數(shù)字0---9的段碼;后者存放的是顯示初值。設(shè)置好8255的工作方式后,運行顯示程序,將緩沖區(qū)中的數(shù)字通過LED燈顯示出來。為消除
6、串碼和閃爍,應(yīng)讓每位數(shù)字顯示2~5毫秒后,關(guān)閉顯示,之后再顯示下一個數(shù)字。四位數(shù)字顯示完成后,將緩沖區(qū)中的時間減少一秒,重復(fù)顯示,直到時間減少到00分00秒。</p><p><b> 二. 硬件選擇分析</b></p><p> 1、8255芯片:并行輸入/輸出接口</p><p> 1) 8255的功能分析:</p>&
7、lt;p> ?。?)芯片8255在本設(shè)計中主要用于選擇位碼和輸出段碼,同時也減少了器件數(shù)量。Intel 公司生產(chǎn)的可編程并行接口芯片8255A 已廣泛應(yīng)用于實際工程中,例如8255A 與A/D、D/A 配合構(gòu)成數(shù)據(jù)采集系統(tǒng),通過8255A 連接的兩個或多個系統(tǒng)構(gòu)成相互之間的通信,系統(tǒng)與外設(shè)之間通過8255A 交換信息,等等,所有這些系統(tǒng)都將8255A 用作為并行接口。</p><p> ?。?)、8255引
8、腳圖:8255是可編程并行接口,內(nèi)部有3個相互獨立的8位數(shù)據(jù)端口,即A口、B口和C口。三個端口都可以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號使用。8255的工作只有當(dāng)片選CS效時才能進行。而控制邏輯端口實現(xiàn)對其他端口的控制。</p><p> 2) 芯片選擇——8255與8253的比較:</p><p>
9、;<b> 8255:</b></p><p> RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時,所有內(nèi)部寄存器(包括控制寄存 器)均被清除,所有I/O口均被置成輸入方式。</p><p> CS:片選信號線,當(dāng)這個輸入引腳為低電平時,表示芯片被選中,允許8255與CPU進行通訊。</p><p&
10、gt; RD:讀信號線,當(dāng)這個輸入引腳為低電平時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p> WR:寫入信號,當(dāng)這個輸入引腳為低電平時,允許CPU將數(shù)據(jù)或控制字寫8255。 D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p&
11、gt;<p> PA0~PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 </p><p> PB0~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。</p><p> PC0~PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個
12、4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。</p><p> 8253: 8253具有3個獨立的16位計數(shù)器,6種不同的工作方式。 計數(shù)寄存器用來寄存計數(shù)初值,計數(shù)工作單元為16位減1計數(shù)器,它的初值便是計數(shù)寄存器內(nèi)容,計數(shù)單元對CLK脈沖計數(shù),每出現(xiàn)一個CLK脈沖,計數(shù)器減1,當(dāng)減為零時,通過OUT輸出指示信號表明計數(shù)單元已為零。
13、當(dāng)作為定時器工作時,每當(dāng)計數(shù)單元為零時,計數(shù)寄存器內(nèi)容會自動重新裝入 計數(shù)單元,而且CLK輸入是均勻的脈沖序列,于是OUT輸出頻率是降低了的(相對于CLK信號頻率)脈沖序列。 當(dāng)作為計數(shù)器工作時,表明只關(guān)心在CLK端出現(xiàn)(代表事件)的脈沖個數(shù),當(dāng)CLK端出現(xiàn)了規(guī)定個數(shù)的脈沖時,OUT輸出一個脈沖信號</p><p> 3) 8255A的引腳信號</p><p> (1). 與外設(shè)相連
14、的</p><p> 圖2-1 8255A內(nèi)部結(jié)構(gòu)框圖</p><p> PA7~PA0:A口數(shù)據(jù)信號線。</p><p> PB7~PB0:B口數(shù)據(jù)信號線。</p><p> PC7~PC0:C口數(shù)據(jù)信號線。</p><p> 4)8255A的端口錄址及操作功能表:</p><p>
15、; 表2-1 8255A端口錄址及操作功能</p><p> (1)8255A的方式控制字:</p><p> D7 D6 D5 D4 D3 D2 D1 D0</p><p> | | | | |
16、 | |</p><p> 特征位 00方式0 1輸入 1輸入 0方式0 1輸入 1輸入</p><p> 01方式1 0輸出 0輸出 1方式1 0輸出 0輸出</p><p><b> 10方式2</b></p>
17、<p> 圖2-2 8255A的方式控制字</p><p> 8255A方式選擇字</p><p> ?。?)8255A的置位/復(fù)位控制字</p><p> D7 D6 D5 D4 D3 D2 D1 D0</p><p> 寫入位 |
18、編碼 |</p><p> D0~ D7 000~111 0寫入0</p><p><b> 1寫入1</b></p><p> 圖2-38255A的端口置位/復(fù)位控制字格式</p><p> (3)8255A的主要技術(shù)參數(shù)分析</p><p>
19、 8255A技術(shù)參數(shù)表 </p><p> 表2-2 8255A的技術(shù)參數(shù)表</p><p> 由上可知:8255A的達林頓驅(qū)動電流最大值為4.0mA。</p><p> 5)8255在本實驗中的作用:</p><p> 1)8255作為可編程接口芯片實現(xiàn)了外設(shè)(LED數(shù)碼管顯示器,邏輯開關(guān))與8086之間的數(shù)據(jù)傳輸,解決了兩者之
20、間的速度不匹配的矛盾,具有數(shù)據(jù)緩沖功能。</p><p> 2)8255的A口工作與方式0,作為輸入口,其PA0~PA7分別與邏輯開關(guān)的K1~k8相連,其中開關(guān)量k8用于判斷是否修改時間(若為0不修改,若為1則修改),K6~k7用于判斷修改哪一位,K1~k4為要修改的值;B口工作與方式0,作為輸出口,其PB0~PB7分別與LED數(shù)碼管顯示器的八段a.b.c.d.e.f.g.dp相連,C口作為輸出口,其PC0~P
21、C3L分別與LED數(shù)碼管顯示器的ED3~LED0相連,作為位選。</p><p> 6) CPU接口(數(shù)據(jù)總線緩沖器和讀/寫控制邏輯)</p><p> ?。?)數(shù)據(jù)總線緩沖器</p><p> 這是一個8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的。這個緩沖器是8255A與CPU數(shù)據(jù)總線的接口。所有數(shù)據(jù)的輸入/輸出,以及CPU用輸出指令向8255A發(fā)出的
22、控制字和用輸入指令從8255A讀入的外設(shè)狀態(tài)信息,都是通過這個緩沖器傳遞的。</p><p> ?。?)讀/寫控制邏輯</p><p> 它與CPU的6根控制線相連,控制8255A內(nèi)部的各種操作??刂凭€RESET用來使8255A復(fù)位。和地址線A1及A0用于芯片選擇和通道尋址。控制線 和 用來決定8位內(nèi)部和外部數(shù)據(jù)總線上信息傳送的方向,即控制把CPU的控制命令或輸出的數(shù)據(jù)送到相應(yīng)的
23、通道,或把狀態(tài)信息或輸入數(shù)據(jù)送到CPU。8255A的讀/寫控制邏輯的作用,是從CPU的地址和控制總線上接受輸入的信號,轉(zhuǎn)變成各種命令送到A組或B組控制電路進行相應(yīng)的操作。</p><p> 7)與CPU相連的</p><p> RESET:復(fù)位信號。當(dāng)信號來時,所有寄存器都被清除。同時三個數(shù)據(jù)端口被自動置為輸入端口。D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p&g
24、t;<p> CS:片選信號。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當(dāng)這幾位地址組成某一個低電平,于8255A被選中。只有當(dāng)有效時,讀信號寫才對8255進行讀寫。 </p><p> RD:讀信號。當(dāng)此信號有效時,CPU可從8255A中讀取數(shù)據(jù)。</p><p> WR:寫信號。當(dāng)此信號有效時,CPU可向8255A中
25、寫入數(shù)據(jù)。</p><p> A1、A0:端口選擇信號。8255A內(nèi)部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定當(dāng)A1、A0為00時,選中A端口;為01時,中B端口;為10時,選中C端口;為11時,選中控制口。</p><p><b> 2選擇器件LED:</b></p><p> 1)芯片在本設(shè)計中的作用:LED發(fā)光二極管在本設(shè)計中
26、采用7段數(shù)字發(fā)光二極管,作為終端顯示。顯示時間的分秒。</p><p> 2)LED的功能分析:物理構(gòu)造:LED發(fā)光二級管,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個PN結(jié),具有單向?qū)щ娦浴?lt;/p><p> 3)工作原理:當(dāng)在發(fā)光二極管PN結(jié)上加正向電壓時,PN結(jié)勢壘降低,載流子的擴散運動大于漂移運動,致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空
27、穴與電子相遇后會產(chǎn)生復(fù)合,復(fù)合時產(chǎn)生的能量大部分以光的形式出現(xiàn)。</p><p> 4)數(shù)字成像:將七個發(fā)光管進行組合,排列成數(shù)字圖形8,再根據(jù)需要控制七個管的亮與滅,即可顯示出定義數(shù)字。有段選碼和位選碼確定數(shù)字1~8的輸出并在延時程序中保持復(fù)位。它是一種當(dāng)外加電壓超過額定電壓時發(fā)生擊穿,并因此而產(chǎn)生可見光的器件。這種數(shù)碼管是有7段或8段筆畫顯示器組成一個字符而形成的。</p><p>
28、;<b> 如下圖:</b></p><p> (a) (b) (c)</p><p><b> (d)</b></p><p> 圖2-4LED結(jié)構(gòu)圖</p><p> LED顯示管段選碼
29、編碼表</p><p> 表2-3 LED顯示管段選碼編碼表</p><p> 5) LED的技術(shù)參數(shù)分析</p><p> LED發(fā)光二極管的壓降一般為1.5-2.0V,其工作電流一般取10-20Ma,發(fā)光二極管可應(yīng)用于直流驅(qū)動電路、交流驅(qū)動電路和脈沖驅(qū)動電路。</p><p> 由于8255A的最大驅(qū)動電流為4.0mA,而LE
30、D的工作電流一般為10-20mA,所以需要加一個驅(qū)動器74LS244。</p><p> 3、74LS244芯片:</p><p> 1) 74LS244在本設(shè)計中的作用:</p><p> ?。?)數(shù)據(jù)的緩沖驅(qū)動,傳遞地址和數(shù)據(jù)信號。</p><p> (2)是數(shù)據(jù)總路線收發(fā)器,也是三態(tài)的總線收發(fā)器。具有八個輸入引腳和八個輸出引腳,
31、兩個使能端。當(dāng)它的使能端為有效低電平時,輸出端就能將輸入信息放大輸出。</p><p> 2) 74LS244的邏輯圖及真值表</p><p> 2-5 74LS244邏輯圖 表2-4 74LS244真值表</p><p> 3)74LS244的主要技術(shù)參數(shù)</p><p> 表2-5 74LS24
32、4的主要技術(shù)參數(shù)</p><p><b> 4、 開關(guān)</b></p><p><b> 1)開關(guān)的作用:</b></p><p> 本次設(shè)計需要用七位開關(guān)置數(shù)來修改時間。</p><p> 2)開關(guān)功能的分析:注:由于本程序后來改進加入了時的倒計,所以下面的開關(guān)是針對有時、分、秒的設(shè)計&
33、lt;/p><p> 開關(guān)K4~K1位設(shè)置輸入的時間數(shù)字(0~15),K7~K5用來控制對不時間的時分秒位數(shù)的修改,k8控制程序的運行與否,僅當(dāng)K8為1時即程序停止運行時才可以修改時間。 </p><p> 3)邏輯開關(guān)及其編碼</p><p> 圖2-6邏輯開關(guān) 表2-6邏輯開關(guān)邏輯編碼表</p><p> 開
34、關(guān)高電平:+5V、低電平:0V</p><p> 三.硬件總邏輯圖及其說明</p><p> 圖3-1硬件總邏輯圖</p><p> AD0~AD19經(jīng)鎖存器分別送往總線收發(fā)器和地址譯碼器。經(jīng)總線收發(fā)器將低八位數(shù)據(jù)與8255的八位數(shù)據(jù)線相連地址線A1、A2與8255的A0、A1相連,即偶地址有效??刂瓶偩€RD、WR、RESET分別與8255相應(yīng)的控制信號線
35、連接。片選信號CS0與8255的CS信號連接,則8255的端口地址為04A0~04A6。8255的PA口用于存放位選碼,使用的是高四位,分別連接到四個七段LED顯示器上。使用的是共陰極接法。PB口用于存放段選碼,八位全部連接到八個二極管的陽極上。所以,PA口中的信號是“0”才能表示選中了該位七段LED顯示器,而PB口中信號為“1”表示使該二極管發(fā)光,否則,不發(fā)光。</p><p><b> 四.控制程
36、序設(shè)計</b></p><p> 1、控制程序設(shè)計思路說明:</p><p> 程序框架是一個主程序用于設(shè)置8255的工作方式;一個顯示程序用于顯示當(dāng)前的時值、分值和秒值,在其中還設(shè)置了一個小的程序用于延時,以穩(wěn)定顯示的數(shù)值。采用動態(tài)刷新的方式將六位數(shù)字顯示一遍。每遍約20秒的時間,顯示約50次可使得時間約為一秒。然后將時間減少一秒,再次將時間顯示出來。如此循環(huán),直到時間減
37、少到00時00分00秒為止。</p><p><b> 2、程序流程圖</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> N</b></p><p><b&g
38、t; Y</b></p><p> 圖4-1 總流程圖</p><p><b> 修改緩沖區(qū)子程序</b></p><p> 圖4-2 計時子程序流程圖</p><p><b> 顯示子程序</b></p><p> 圖4-3 顯示子程序流程圖&
39、lt;/p><p><b> 3、控制程序</b></p><p> .MODELTINY</p><p> PCIBAR3EQU1CH;8位I/O空間基地址(它就是實驗儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) </p><p> Vendor_IDEQU
40、10EBH;廠商ID號</p><p> Device_IDEQU8376;設(shè)備ID號</p><p> .STACK100</p><p><b> .DATA</b></p><p> IO_Bit8_BaseAddressDW?</p><p> msg0
41、DB'BIOS不支持訪問PCI $'</p><p> msg1DB'找不到Star PCI9052板卡 $'</p><p> msg2DB'讀8位I/O空間基地址時出錯$'</p><p> COM_ADDDW00F3H ;控制口偏移量</p>
42、<p> PA_ADDDW00F0H ;PA口偏移量</p><p> PB_ADDDW00F1H ;PB口偏移量</p><p> PC_ADDDW00F2H ;PC口偏移量</p><p> len db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段碼表</p>
43、;<p> time db 00h,00h,00h,00h,04h,02h</p><p> len0 db 00h,40h,60h,20h,30h,70h</p><p> len1 db 09h,05h,09h,05h,03h,02h</p><p><b> .CODE</b></p><p
44、> START:MOVAX,@DATA</p><p> MOVDS,AX</p><p><b> NOP</b></p><p> CALLInitPCI</p><p> CALLModifyAddress ;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實地址</p>&
45、lt;p> ;*********************************************************************</p><p> MOV al,89h ;10001001b初始化工作方式控制字 </p><p> MOV dx,COM_ADD ;工作方式寄存器端口地址
46、</p><p><b> OUT dx,al</b></p><p> loop3: MOV dx,PC_ADD ;PC口端口地址</p><p> IN al,dx ;讀入八位開關(guān)量</p><p> AND al,80h ;判斷最高位K8是否為1
47、 </p><p> CMP al,80h ;為1時設(shè)置數(shù)據(jù)緩沖區(qū)初值</p><p> JE setlen</p><p> CALL display1 ;調(diào)用顯示子程序,顯示一秒 </p><p> CALL alter ;調(diào)用數(shù)據(jù)緩沖區(qū)修改子程序</p>
48、<p> JMP loop3 </p><p> setlen: MOV bx,offset time ;數(shù)據(jù)緩沖區(qū)送BX </p><p> MOV dx,PC_ADD ;PC口端口地址</p><p> IN al,dx ;讀八位開關(guān)量</p><p> MO
49、V ah,al ;AH=AL 保存數(shù)據(jù),下面的操作會改變al的值</p><p> AND ax,0f70h ;選取5 6 7進行輸入選擇判斷,并保留ah中的低四位</p><p> MOV si,offset len0 </p><p> loop0: MOV cl,byte ptr [si]</p>
50、<p><b> CMP al,cl</b></p><p> JNE loop00</p><p> MOV byte ptr [bx],ah ;讀入的開關(guān)量低四位存入緩沖 </p><p> CALL display1 ;調(diào)用顯示子程序</p><p><b>
51、; JMP loop3</b></p><p> loop00: INC si</p><p><b> INC bx</b></p><p> JMP loop0 </p><p> ;************************************************
52、*********************</p><p> display1 PROC ;顯示子程序</p><p> PUSH si ;保護SI</p><p> PUSH dx ;保護DX</p><p> PUSH cx ;保護CX
53、 </p><p> PUSH bx ;保護BX</p><p> PUSH ax ;保護AX </p><p> PUSH di ;保護DI </p><p> MOV di,40h ;控制1s的計時</p>
54、;<p> loop1: MOV si,offset time ;數(shù)據(jù)緩沖區(qū)首地址送SI</p><p> MOV cx,6 </p><p> MOV ah,0feh ;設(shè)置位選 選中秒的個位</p><p> loop2: MOV al,byte ptr [si] ;位移量
55、</p><p> MOV bx,offset len ;查表轉(zhuǎn)換</p><p> XLAT ;查數(shù)據(jù)段表,[al+bx]->al</p><p> MOV dx,PB_ADD ;PB口地址</p><p> OUT dx,al ;送段選碼</p&
56、gt;<p> MOV al,ah ;位選碼AL</p><p> MOV dx,PA_ADD ;PA口地址</p><p> OUT dx,al </p><p> CALL delay ;調(diào)用延時子程序</p><p> MOV al,
57、0ffh ;禁止顯示</p><p><b> OUT dx,al</b></p><p> ADD si,1 </p><p><b> ROL ah,1 </b></p><p> LOOP loop2</p><p> D
58、EC di ;控制顯示一秒</p><p> JNE loop1</p><p> POP di </p><p><b> POP ax</b></p><p><b> POP bx </b></p><p>&l
59、t;b> POP cx</b></p><p><b> POP dx</b></p><p><b> POP si</b></p><p><b> RET</b></p><p> display1 ENDP</p><p&
60、gt; ;*********************************************************************</p><p> alter PROC ;數(shù)據(jù)緩沖區(qū)子程序</p><p><b> PUSH si</b></p><p><b> P
61、USH ax</b></p><p> PUSH bx </p><p><b> PUSH dx</b></p><p> MOV si,offset time ;數(shù)據(jù)緩沖區(qū)首值送BX</p><p> MOV bx,offset len1</p><p&
62、gt; loop7:MOV ax,[si] ;緩沖區(qū)中的秒值取入ax</p><p> MOV dx,[bx]</p><p> SUB al,1 </p><p> CMP al,-1 </p><p><b> JG loop6</b>
63、</p><p> MOV al,dl </p><p> SUB ah,1 </p><p><b> CMP ah,-1</b></p><p> JG loop6 </p><p><b> MOV ah,dh
64、</b></p><p> MOV [si],ax</p><p><b> INC si</b></p><p><b> INC si</b></p><p><b> INC bx</b></p><p> INC bx
65、 </p><p> JMP loop7 </p><p> loop6:MOV [si],ax ;修改后的值再保存回緩沖區(qū)</p><p><b> POP dx</b></p><p><b> POP bx </b></p>
66、<p><b> POP ax</b></p><p><b> POP si</b></p><p><b> RET</b></p><p> alter ENDP</p><p> ;**********************************
67、***********************************</p><p> delay PROC ;延時子程序</p><p><b> PUSH cx</b></p><p> MOV cx,0ffffh</p><p><b> loop5: </b
68、></p><p> LOOP loop5</p><p><b> POP cx </b></p><p><b> RET </b></p><p> delay ENDP</p><p> ;**************************
69、*******************************************</p><p> InitPCIPROCNEAR</p><p> MOVAH,00H</p><p> MOVAL,03H</p><p> INT10H;清屏</p><p> MOVAH,0B1
70、H</p><p> MOVAL,01H</p><p><b> INT1AH</b></p><p><b> CMPAH,0</b></p><p> JZInitPCI2</p><p> LEADX,msg0</p>&
71、lt;p> InitPCI1:MOVAH,09H</p><p><b> INT21H</b></p><p><b> JMPExit</b></p><p> InitPCI2:MOVAH,0B1H</p><p> MOVAL,02H</p>
72、;<p> MOVCX,Device_ID</p><p> MOVDX,Vendor_ID</p><p><b> MOVSI,0</b></p><p><b> INT1AH</b></p><p> JNCInitPCI3;是否存在Star PCI
73、9052板卡</p><p> LEADX,msg1</p><p> JMPInitPCI1</p><p> InitPCI3:MOVDI,PCIBAR3</p><p> MOVAH,0B1H</p><p> MOVAL,09H</p><p> INT
74、1AH;讀取該卡PCI9052基地址</p><p> JNCInitPCI4</p><p> LEADX,msg2</p><p> JMPInitPCI1</p><p> InitPCI4:ANDCX,0FFFCH</p><p> MOVIO_Bit8_BaseAddres
75、s,CX</p><p><b> RET</b></p><p> InitPCIENDP</p><p> ModifyAddressPROCNEAR</p><p> ADDCOM_ADD,CX</p><p> ADDPA_ADD,CX</p>
76、<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&g
77、t; INT21H</b></p><p> ENDSTART</p><p><b> 五.上機調(diào)試過程</b></p><p> 1、硬件調(diào)試:本實驗所用的硬件主要是實驗箱和集成的七段LED顯示板。共有四個七段LED顯示器,采用的是共陰極接法,七段LED的共陰極接地,CE端接低電平,七段LED的陽極接到八個模擬開關(guān)
78、上。改變開關(guān)量,則七段LED顯示出相應(yīng)的數(shù)字。將四個七段LED測試完后,全部正常。硬件調(diào)試成功。</p><p><b> 2、軟件調(diào)試: </b></p><p> 1)此次實驗的設(shè)備原因,在正式編程之前要加入一段設(shè)備的初始化程序,檢查設(shè)備,讀取設(shè)備的一些信息,然后是自己設(shè)計代碼完成實驗要求,</p><p> 2)來添加的新的任務(wù)中要
79、求初始值可以通過邏輯開關(guān)隨意設(shè)置,這就要對C口的PC0~PC7另外編寫一段程序進行相應(yīng)的判斷和控制。這些都不是很困難,關(guān)鍵是編寫的程序既要完成些功能又要簡短才行。若程序太長,雖然可以編譯并且鏈接成功,但顯得很煩瑣,看起來也很費力。所以,修改的程序時盡量使用循環(huán)控制語句來完成的。</p><p> 3)有太多的判斷,再根據(jù)判斷轉(zhuǎn)去執(zhí)行不同的操作,這就需要使用標號,但同樣的標號如果使用太多就又會給程序產(chǎn)生邏輯上的混
80、亂,所以我使用查表法將要判斷的值存入緩沖區(qū)中,要判斷時就于與緩沖區(qū)中的值比較,這樣就使得程序簡單明了。有語法錯誤修改起來就比較容易了。</p><p> 3、聯(lián)機調(diào)試:在串口通訊成功時,打開程序文件,編譯后連接,程序結(jié)構(gòu)無問題時連接成功,開始單步運行并調(diào)試,然后全速運行。 </p><p> 六.設(shè)計結(jié)果分析及問題討論</p><p> 1、課程設(shè)計結(jié)果及分析
81、:成功的完成了倒計1S的顯示及在時分秒之間的轉(zhuǎn)換,能循環(huán)倒計。 </p><p><b> 2、問題討論:</b></p><p> 1)8255的工作方式</p><p><b> 2)程序的優(yōu)化</b></p><p> 3)輸入及運行開關(guān)的設(shè)置與確定 </p>
82、<p> 3、收獲,體會和建議:</p><p> 在微機原理理論課程的學(xué)習(xí)結(jié)束以后,感到自己學(xué)到的知識非常片面,而課程設(shè)計就是一個很好的機會,不僅可以鞏固書本上的內(nèi)容,更可以讓知識和應(yīng)用結(jié)合起來。事實證明這確實對我的學(xué)習(xí)產(chǎn)生了很大的幫助,從剛開始對理論知識的模糊到后來的逐漸清晰,這兩周我收獲了很多。</p><p> 在剛拿到課題時,從學(xué)長口中得知要用到8255A芯片
83、以及LED七段顯示器,而自己并沒有做太多的思考,于是在老師的第一次驗收時發(fā)現(xiàn)自己根本不清楚為什么選擇這些硬件。后來比較了其他的一些芯片,才得出了結(jié)論。</p><p> 本設(shè)計的上機實驗歷時兩個星期,此外還包括許多預(yù)習(xí)工作。由于課程設(shè)計涉及到的知識點比較多,所以我去圖書館查閱了很多有關(guān)自己的課題方面的資料。不僅鞏固了以前所學(xué)的知識,也收獲了不少新的知識。在上機實驗的過程中,也體會到了有強大的理論儲備是基礎(chǔ),但在
84、實踐過程中自己動手操作又是另一回事。通過本課題,使我們對8255及LED內(nèi)部結(jié)構(gòu)與及應(yīng)用有了進一步的認識和理解,特別是8255A作為并行接口芯片其用途也很廣泛,可以用于鍵盤接口,LED顯示器接口,打印機接口等。同時通過對8255芯片的初始化程序的編寫,也提高了自己的編程能力;此外通過上機調(diào)試,也鍛煉了我們實際動手的能力,以及如何分析問題,解決問題的能力,為將來走向工作崗位做鋪墊。</p><p> 另外就是增強
85、了我用匯編語言來編寫程序的能力。以前學(xué)習(xí)匯編語言時,學(xué)的很不扎實,直接導(dǎo)致了在實驗過程在中編寫程序很不順利。出現(xiàn)了諸多錯誤。好在通過與同學(xué)討論,以及查閱了大量的資料,糾正了錯誤。使我對匯編語言實現(xiàn)了第二次的學(xué)習(xí),更深一層的理解并掌握了匯編語言。計算機語言,必須通過自己的親自編寫來對實際問題進行解決。就比如說這次實驗,雖然對匯編語言的指令及編寫格式已經(jīng)有了很透徹的了解,但是在實際編寫過程中,卻出現(xiàn)了不知如何表達的問題。這種能力的強化是需要
86、經(jīng)常鍛煉的。本次課程設(shè)計正好給了我一次鍛煉的機會,增強了我在理解的基礎(chǔ)上,能編寫匯編語言解決實際問題的能力。</p><p> 做實驗千萬要細心,避免由于粗心造成的錯誤。如果調(diào)試不出理想的結(jié)果,千萬不能急躁,要從硬件到軟件一步步仔細的檢查,找到錯誤并糾正??傊鰧嶒炓欢ㄒ浼苯湓?,一定要有耐心,要對自己的能力充滿信息。</p><p> 最后說說自己的一些小建議。學(xué)校應(yīng)多給學(xué)生這樣的
87、動手實踐的機會,理論課和實踐課應(yīng)該保持想?yún)f(xié)調(diào)的教學(xué)效果。多讓學(xué)生分組討論,共同完成某項實驗,這樣不僅可以使每個同學(xué)得到鍛煉,同時也培養(yǎng)了學(xué)生的團隊精神。</p><p> 還有一定要謝謝老師的指導(dǎo)幫助,從而使我能順利的完成課程設(shè)計,并受益匪淺。</p><p><b> 設(shè)計者:田元</b></p><p> 完成時間:2008年12月&
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計報告---數(shù)字時鐘倒計時
- 籃球倒計時課程設(shè)計--籃球板倒計時設(shè)計
- 99倒計時課程設(shè)計
- 課程設(shè)計報告---倒計時器
- 課程設(shè)計報告(c語言)倒計時
- 課程設(shè)計報告“9秒倒計時設(shè)計”
- 采用單片機的倒計時鐘的設(shè)計畢業(yè)論文
- 倒計時器課程設(shè)計
- 課程設(shè)計---60秒倒計時
- 24秒倒計時課程設(shè)計
- 音樂倒計時綜合課程設(shè)計實驗報告
- 數(shù)顯、聲響倒計時電路課程設(shè)計報告
- 智能倒計時器課程設(shè)計
- led數(shù)字倒計時器課程設(shè)計報告
- 課程設(shè)計--倒計時計時器的設(shè)計
- 智能倒計時器課程設(shè)計
- 單片機課程設(shè)計--倒計時
- 倒計時提醒器設(shè)計(課程設(shè)計)
- 課程設(shè)計---時間倒計時顯示牌設(shè)計
- 單片機60倒計時課程設(shè)計
評論
0/150
提交評論