

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 2008 ~ 2009 學(xué)年第 一 學(xué)期</p><p><b> 2009-2-15</b></p><p><b> 倒計(jì)時(shí)數(shù)字
2、鐘</b></p><p> 題義分析及解決方案:</p><p> 設(shè)計(jì)一個(gè)接口與七段LED顯示器,顯示一個(gè)倒計(jì)時(shí)時(shí)鐘,顯示初值為60分00秒,每隔一秒改變一次顯示值,60秒為一分鐘,LED顯示器顯示分、秒的動(dòng)態(tài)值。</p><p><b> 1 題義需求分析:</b></p><p> 根據(jù)題意設(shè)
3、計(jì)一個(gè)接口和七段LED顯示器,本設(shè)計(jì)能顯示一個(gè)具有固定初值的倒計(jì)時(shí)鐘,能每隔固定時(shí)間間隔(1s),動(dòng)態(tài)刷新顯示值,并且能用LED顯示器顯示分秒的動(dòng)態(tài)值,需要解決如下問題:</p><p> 1).選擇怎樣的接口問題?</p><p> 2).顯示設(shè)備的選擇問題?</p><p> 3).初值的設(shè)置和輸入問題?</p><p> 4).
4、計(jì)數(shù)值與顯示碼的轉(zhuǎn)換及動(dòng)態(tài)值顯示問題?</p><p> 5).相關(guān)芯片與譯碼器的選擇問題?</p><p> 2解決問題方法及思路:</p><p> 1)硬件部分:根據(jù)七段LED顯示器的硬件結(jié)構(gòu),為減少器件的使用量,可以選擇芯片8255A,將七段LED顯示器與8255A的兩個(gè)八位并行輸出口連接,比如使用8255的A口和B口。其中,A口用于位選,確定選擇哪
5、一個(gè)顯示燈;B口用于段選擇,通過改變B口中的段碼,使得顯示燈能夠顯示出相應(yīng)的時(shí)間數(shù)字。8255與七段LED顯示器采用的共陰極的接法。</p><p> 2)軟件部分:根據(jù)題義要求,可以設(shè)立一個(gè)段碼表和一個(gè)顯示緩沖區(qū),以動(dòng)態(tài)刷新的方式,顯示四位數(shù)字表示的時(shí)間。前者存放的是共陰極方式下數(shù)字0---9的段碼;后者存放的是顯示初值。設(shè)置好8255的工作方式后,運(yùn)行顯示程序,將緩沖區(qū)中的數(shù)字通過LED燈顯示出來。為消除
6、串碼和閃爍,應(yīng)讓每位數(shù)字顯示2~5毫秒后,關(guān)閉顯示,之后再顯示下一個(gè)數(shù)字。四位數(shù)字顯示完成后,將緩沖區(qū)中的時(shí)間減少一秒,重復(fù)顯示,直到時(shí)間減少到00分00秒。</p><p><b> 二. 硬件選擇分析</b></p><p> 1、8255芯片:并行輸入/輸出接口</p><p> 1) 8255的功能分析:</p>&
7、lt;p> ?。?)芯片8255在本設(shè)計(jì)中主要用于選擇位碼和輸出段碼,同時(shí)也減少了器件數(shù)量。Intel 公司生產(chǎn)的可編程并行接口芯片8255A 已廣泛應(yīng)用于實(shí)際工程中,例如8255A 與A/D、D/A 配合構(gòu)成數(shù)據(jù)采集系統(tǒng),通過8255A 連接的兩個(gè)或多個(gè)系統(tǒng)構(gòu)成相互之間的通信,系統(tǒng)與外設(shè)之間通過8255A 交換信息,等等,所有這些系統(tǒng)都將8255A 用作為并行接口。</p><p> (2)、8255引
8、腳圖:8255是可編程并行接口,內(nèi)部有3個(gè)相互獨(dú)立的8位數(shù)據(jù)端口,即A口、B口和C口。三個(gè)端口都可以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號(hào)使用。8255的工作只有當(dāng)片選CS效時(shí)才能進(jìn)行。而控制邏輯端口實(shí)現(xiàn)對(duì)其他端口的控制。</p><p> 2) 芯片選擇——8255與8253的比較:</p><p>
9、;<b> 8255:</b></p><p> RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存 器)均被清除,所有I/O口均被置成輸入方式。</p><p> CS:片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊。</p><p&
10、gt; RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p> WR:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許CPU將數(shù)據(jù)或控制字寫8255。 D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p&
11、gt;<p> PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。 </p><p> PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器。</p><p> PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個(gè)
12、4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。</p><p> 8253: 8253具有3個(gè)獨(dú)立的16位計(jì)數(shù)器,6種不同的工作方式。 計(jì)數(shù)寄存器用來寄存計(jì)數(shù)初值,計(jì)數(shù)工作單元為16位減1計(jì)數(shù)器,它的初值便是計(jì)數(shù)寄存器內(nèi)容,計(jì)數(shù)單元對(duì)CLK脈沖計(jì)數(shù),每出現(xiàn)一個(gè)CLK脈沖,計(jì)數(shù)器減1,當(dāng)減為零時(shí),通過OUT輸出指示信號(hào)表明計(jì)數(shù)單元已為零。
13、當(dāng)作為定時(shí)器工作時(shí),每當(dāng)計(jì)數(shù)單元為零時(shí),計(jì)數(shù)寄存器內(nèi)容會(huì)自動(dòng)重新裝入 計(jì)數(shù)單元,而且CLK輸入是均勻的脈沖序列,于是OUT輸出頻率是降低了的(相對(duì)于CLK信號(hào)頻率)脈沖序列。 當(dāng)作為計(jì)數(shù)器工作時(shí),表明只關(guān)心在CLK端出現(xiàn)(代表事件)的脈沖個(gè)數(shù),當(dāng)CLK端出現(xiàn)了規(guī)定個(gè)數(shù)的脈沖時(shí),OUT輸出一個(gè)脈沖信號(hào)</p><p> 3) 8255A的引腳信號(hào)</p><p> (1). 與外設(shè)相連
14、的</p><p> 圖2-1 8255A內(nèi)部結(jié)構(gòu)框圖</p><p> PA7~PA0:A口數(shù)據(jù)信號(hào)線。</p><p> PB7~PB0:B口數(shù)據(jù)信號(hào)線。</p><p> PC7~PC0:C口數(shù)據(jù)信號(hào)線。</p><p> 4)8255A的端口錄址及操作功能表:</p><p>
15、; 表2-1 8255A端口錄址及操作功能</p><p> ?。?)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的達(dá)林頓驅(qū)動(dòng)電流最大值為4.0mA。</p><p> 5)8255在本實(shí)驗(yàn)中的作用:</p><p> 1)8255作為可編程接口芯片實(shí)現(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用于判斷是否修改時(shí)間(若為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> 這是一個(gè)8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的。這個(gè)緩沖器是8255A與CPU數(shù)據(jù)總線的接口。所有數(shù)據(jù)的輸入/輸出,以及CPU用輸出指令向8255A發(fā)出的
22、控制字和用輸入指令從8255A讀入的外設(shè)狀態(tài)信息,都是通過這個(gè)緩沖器傳遞的。</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的地址和控制總線上接受輸入的信號(hào),轉(zhuǎn)變成各種命令送到A組或B組控制電路進(jìn)行相應(yīng)的操作。</p><p> 7)與CPU相連的</p><p> RESET:復(fù)位信號(hào)。當(dāng)信號(hào)來時(shí),所有寄存器都被清除。同時(shí)三個(gè)數(shù)據(jù)端口被自動(dòng)置為輸入端口。D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p&g
24、t;<p> CS:片選信號(hào)。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址(比如A5、A4、A3)組成各種芯片選擇碼,當(dāng)這幾位地址組成某一個(gè)低電平,于8255A被選中。只有當(dāng)有效時(shí),讀信號(hào)寫才對(duì)8255進(jìn)行讀寫。 </p><p> RD:讀信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可從8255A中讀取數(shù)據(jù)。</p><p> WR:寫信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可向8255A中
25、寫入數(shù)據(jù)。</p><p> A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定當(dāng)A1、A0為00時(shí),選中A端口;為01時(shí),中B端口;為10時(shí),選中C端口;為11時(shí),選中控制口。</p><p><b> 2選擇器件LED:</b></p><p> 1)芯片在本設(shè)計(jì)中的作用:LED發(fā)光二極管在本設(shè)計(jì)中
26、采用7段數(shù)字發(fā)光二極管,作為終端顯示。顯示時(shí)間的分秒。</p><p> 2)LED的功能分析:物理構(gòu)造:LED發(fā)光二級(jí)管,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個(gè)PN結(jié),具有單向?qū)щ娦浴?lt;/p><p> 3)工作原理:當(dāng)在發(fā)光二極管PN結(jié)上加正向電壓時(shí),PN結(jié)勢(shì)壘降低,載流子的擴(kuò)散運(yùn)動(dòng)大于漂移運(yùn)動(dòng),致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空
27、穴與電子相遇后會(huì)產(chǎn)生復(fù)合,復(fù)合時(shí)產(chǎn)生的能量大部分以光的形式出現(xiàn)。</p><p> 4)數(shù)字成像:將七個(gè)發(fā)光管進(jìn)行組合,排列成數(shù)字圖形8,再根據(jù)需要控制七個(gè)管的亮與滅,即可顯示出定義數(shù)字。有段選碼和位選碼確定數(shù)字1~8的輸出并在延時(shí)程序中保持復(fù)位。它是一種當(dāng)外加電壓超過額定電壓時(shí)發(fā)生擊穿,并因此而產(chǎn)生可見光的器件。這種數(shù)碼管是有7段或8段筆畫顯示器組成一個(gè)字符而形成的。</p><p>
28、;<b> 如下圖:</b></p><p> ?。╝) (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ū)動(dòng)電路、交流驅(qū)動(dòng)電路和脈沖驅(qū)動(dòng)電路。</p><p> 由于8255A的最大驅(qū)動(dòng)電流為4.0mA,而LE
30、D的工作電流一般為10-20mA,所以需要加一個(gè)驅(qū)動(dòng)器74LS244。</p><p> 3、74LS244芯片:</p><p> 1) 74LS244在本設(shè)計(jì)中的作用:</p><p> (1)數(shù)據(jù)的緩沖驅(qū)動(dòng),傳遞地址和數(shù)據(jù)信號(hào)。</p><p> ?。?)是數(shù)據(jù)總路線收發(fā)器,也是三態(tài)的總線收發(fā)器。具有八個(gè)輸入引腳和八個(gè)輸出引腳,
31、兩個(gè)使能端。當(dāng)它的使能端為有效低電平時(shí),輸出端就能將輸入信息放大輸出。</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è)計(jì)需要用七位開關(guān)置數(shù)來修改時(shí)間。</p><p> 2)開關(guān)功能的分析:注:由于本程序后來改進(jìn)加入了時(shí)的倒計(jì),所以下面的開關(guān)是針對(duì)有時(shí)、分、秒的設(shè)計(jì)&
33、lt;/p><p> 開關(guān)K4~K1位設(shè)置輸入的時(shí)間數(shù)字(0~15),K7~K5用來控制對(duì)不時(shí)間的時(shí)分秒位數(shù)的修改,k8控制程序的運(yùn)行與否,僅當(dāng)K8為1時(shí)即程序停止運(yùn)行時(shí)才可以修改時(shí)間。 </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)的控制信號(hào)線
35、連接。片選信號(hào)CS0與8255的CS信號(hào)連接,則8255的端口地址為04A0~04A6。8255的PA口用于存放位選碼,使用的是高四位,分別連接到四個(gè)七段LED顯示器上。使用的是共陰極接法。PB口用于存放段選碼,八位全部連接到八個(gè)二極管的陽極上。所以,PA口中的信號(hào)是“0”才能表示選中了該位七段LED顯示器,而PB口中信號(hào)為“1”表示使該二極管發(fā)光,否則,不發(fā)光。</p><p><b> 四.控制程
36、序設(shè)計(jì)</b></p><p> 1、控制程序設(shè)計(jì)思路說明:</p><p> 程序框架是一個(gè)主程序用于設(shè)置8255的工作方式;一個(gè)顯示程序用于顯示當(dāng)前的時(shí)值、分值和秒值,在其中還設(shè)置了一個(gè)小的程序用于延時(shí),以穩(wěn)定顯示的數(shù)值。采用動(dòng)態(tài)刷新的方式將六位數(shù)字顯示一遍。每遍約20秒的時(shí)間,顯示約50次可使得時(shí)間約為一秒。然后將時(shí)間減少一秒,再次將時(shí)間顯示出來。如此循環(huán),直到時(shí)間減
37、少到00時(shí)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 計(jì)時(shí)子程序流程圖</p><p><b> 顯示子程序</b></p><p> 圖4-3 顯示子程序流程圖&
39、lt;/p><p><b> 3、控制程序</b></p><p> .MODELTINY</p><p> PCIBAR3EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) </p><p> Vendor_IDEQU
40、10EBH;廠商ID號(hào)</p><p> Device_IDEQU8376;設(shè)備ID號(hào)</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空間基地址時(shí)出錯(cuò)$'</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)化為實(shí)地址</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è)置數(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ù),下面的操作會(huì)改變al的值</p><p> AND ax,0f70h ;選取5 6 7進(jìn)行輸入選擇判斷,并保留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 ;保護(hù)SI</p><p> PUSH dx ;保護(hù)DX</p><p> PUSH cx ;保護(hù)CX
53、 </p><p> PUSH bx ;保護(hù)BX</p><p> PUSH ax ;保護(hù)AX </p><p> PUSH di ;保護(hù)DI </p><p> MOV di,40h ;控制1s的計(jì)時(shí)</p>
54、;<p> loop1: MOV si,offset time ;數(shù)據(jù)緩沖區(qū)首地址送SI</p><p> MOV cx,6 </p><p> MOV ah,0feh ;設(shè)置位選 選中秒的個(gè)位</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)用延時(shí)子程序</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 ;延時(shí)子程序</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> 五.上機(jī)調(diào)試過程</b></p><p> 1、硬件調(diào)試:本實(shí)驗(yàn)所用的硬件主要是實(shí)驗(yàn)箱和集成的七段LED顯示板。共有四個(gè)七段LED顯示器,采用的是共陰極接法,七段LED的共陰極接地,CE端接低電平,七段LED的陽極接到八個(gè)模擬開關(guān)
78、上。改變開關(guān)量,則七段LED顯示出相應(yīng)的數(shù)字。將四個(gè)七段LED測(cè)試完后,全部正常。硬件調(diào)試成功。</p><p><b> 2、軟件調(diào)試: </b></p><p> 1)此次實(shí)驗(yàn)的設(shè)備原因,在正式編程之前要加入一段設(shè)備的初始化程序,檢查設(shè)備,讀取設(shè)備的一些信息,然后是自己設(shè)計(jì)代碼完成實(shí)驗(yàn)要求,</p><p> 2)來添加的新的任務(wù)中要
79、求初始值可以通過邏輯開關(guān)隨意設(shè)置,這就要對(duì)C口的PC0~PC7另外編寫一段程序進(jìn)行相應(yīng)的判斷和控制。這些都不是很困難,關(guān)鍵是編寫的程序既要完成些功能又要簡(jiǎn)短才行。若程序太長(zhǎng),雖然可以編譯并且鏈接成功,但顯得很煩瑣,看起來也很費(fèi)力。所以,修改的程序時(shí)盡量使用循環(huán)控制語句來完成的。</p><p> 3)有太多的判斷,再根據(jù)判斷轉(zhuǎn)去執(zhí)行不同的操作,這就需要使用標(biāo)號(hào),但同樣的標(biāo)號(hào)如果使用太多就又會(huì)給程序產(chǎn)生邏輯上的混
80、亂,所以我使用查表法將要判斷的值存入緩沖區(qū)中,要判斷時(shí)就于與緩沖區(qū)中的值比較,這樣就使得程序簡(jiǎn)單明了。有語法錯(cuò)誤修改起來就比較容易了。</p><p> 3、聯(lián)機(jī)調(diào)試:在串口通訊成功時(shí),打開程序文件,編譯后連接,程序結(jié)構(gòu)無問題時(shí)連接成功,開始單步運(yùn)行并調(diào)試,然后全速運(yùn)行。 </p><p> 六.設(shè)計(jì)結(jié)果分析及問題討論</p><p> 1、課程設(shè)計(jì)結(jié)果及分析
81、:成功的完成了倒計(jì)1S的顯示及在時(shí)分秒之間的轉(zhuǎn)換,能循環(huán)倒計(jì)。 </p><p><b> 2、問題討論:</b></p><p> 1)8255的工作方式</p><p><b> 2)程序的優(yōu)化</b></p><p> 3)輸入及運(yùn)行開關(guān)的設(shè)置與確定 </p>
82、<p> 3、收獲,體會(huì)和建議:</p><p> 在微機(jī)原理理論課程的學(xué)習(xí)結(jié)束以后,感到自己學(xué)到的知識(shí)非常片面,而課程設(shè)計(jì)就是一個(gè)很好的機(jī)會(huì),不僅可以鞏固書本上的內(nèi)容,更可以讓知識(shí)和應(yīng)用結(jié)合起來。事實(shí)證明這確實(shí)對(duì)我的學(xué)習(xí)產(chǎn)生了很大的幫助,從剛開始對(duì)理論知識(shí)的模糊到后來的逐漸清晰,這兩周我收獲了很多。</p><p> 在剛拿到課題時(shí),從學(xué)長(zhǎng)口中得知要用到8255A芯片
83、以及LED七段顯示器,而自己并沒有做太多的思考,于是在老師的第一次驗(yàn)收時(shí)發(fā)現(xiàn)自己根本不清楚為什么選擇這些硬件。后來比較了其他的一些芯片,才得出了結(jié)論。</p><p> 本設(shè)計(jì)的上機(jī)實(shí)驗(yàn)歷時(shí)兩個(gè)星期,此外還包括許多預(yù)習(xí)工作。由于課程設(shè)計(jì)涉及到的知識(shí)點(diǎn)比較多,所以我去圖書館查閱了很多有關(guān)自己的課題方面的資料。不僅鞏固了以前所學(xué)的知識(shí),也收獲了不少新的知識(shí)。在上機(jī)實(shí)驗(yàn)的過程中,也體會(huì)到了有強(qiáng)大的理論儲(chǔ)備是基礎(chǔ),但在
84、實(shí)踐過程中自己動(dòng)手操作又是另一回事。通過本課題,使我們對(duì)8255及LED內(nèi)部結(jié)構(gòu)與及應(yīng)用有了進(jìn)一步的認(rèn)識(shí)和理解,特別是8255A作為并行接口芯片其用途也很廣泛,可以用于鍵盤接口,LED顯示器接口,打印機(jī)接口等。同時(shí)通過對(duì)8255芯片的初始化程序的編寫,也提高了自己的編程能力;此外通過上機(jī)調(diào)試,也鍛煉了我們實(shí)際動(dòng)手的能力,以及如何分析問題,解決問題的能力,為將來走向工作崗位做鋪墊。</p><p> 另外就是增強(qiáng)
85、了我用匯編語言來編寫程序的能力。以前學(xué)習(xí)匯編語言時(shí),學(xué)的很不扎實(shí),直接導(dǎo)致了在實(shí)驗(yàn)過程在中編寫程序很不順利。出現(xiàn)了諸多錯(cuò)誤。好在通過與同學(xué)討論,以及查閱了大量的資料,糾正了錯(cuò)誤。使我對(duì)匯編語言實(shí)現(xiàn)了第二次的學(xué)習(xí),更深一層的理解并掌握了匯編語言。計(jì)算機(jī)語言,必須通過自己的親自編寫來對(duì)實(shí)際問題進(jìn)行解決。就比如說這次實(shí)驗(yàn),雖然對(duì)匯編語言的指令及編寫格式已經(jīng)有了很透徹的了解,但是在實(shí)際編寫過程中,卻出現(xiàn)了不知如何表達(dá)的問題。這種能力的強(qiáng)化是需要
86、經(jīng)常鍛煉的。本次課程設(shè)計(jì)正好給了我一次鍛煉的機(jī)會(huì),增強(qiáng)了我在理解的基礎(chǔ)上,能編寫匯編語言解決實(shí)際問題的能力。</p><p> 做實(shí)驗(yàn)千萬要細(xì)心,避免由于粗心造成的錯(cuò)誤。如果調(diào)試不出理想的結(jié)果,千萬不能急躁,要從硬件到軟件一步步仔細(xì)的檢查,找到錯(cuò)誤并糾正??傊?,做實(shí)驗(yàn)一定要戒急戒躁,一定要有耐心,要對(duì)自己的能力充滿信息。</p><p> 最后說說自己的一些小建議。學(xué)校應(yīng)多給學(xué)生這樣的
87、動(dòng)手實(shí)踐的機(jī)會(huì),理論課和實(shí)踐課應(yīng)該保持想?yún)f(xié)調(diào)的教學(xué)效果。多讓學(xué)生分組討論,共同完成某項(xiàng)實(shí)驗(yàn),這樣不僅可以使每個(gè)同學(xué)得到鍛煉,同時(shí)也培養(yǎng)了學(xué)生的團(tuán)隊(duì)精神。</p><p> 還有一定要謝謝老師的指導(dǎo)幫助,從而使我能順利的完成課程設(shè)計(jì),并受益匪淺。</p><p><b> 設(shè)計(jì)者:田元</b></p><p> 完成時(shí)間:2008年12月&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)報(bào)告---數(shù)字時(shí)鐘倒計(jì)時(shí)
- 籃球倒計(jì)時(shí)課程設(shè)計(jì)--籃球板倒計(jì)時(shí)設(shè)計(jì)
- 99倒計(jì)時(shí)課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 課程設(shè)計(jì)報(bào)告(c語言)倒計(jì)時(shí)
- 課程設(shè)計(jì)報(bào)告“9秒倒計(jì)時(shí)設(shè)計(jì)”
- 采用單片機(jī)的倒計(jì)時(shí)鐘的設(shè)計(jì)畢業(yè)論文
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)---60秒倒計(jì)時(shí)
- 24秒倒計(jì)時(shí)課程設(shè)計(jì)
- 音樂倒計(jì)時(shí)綜合課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 數(shù)顯、聲響倒計(jì)時(shí)電路課程設(shè)計(jì)報(bào)告
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- led數(shù)字倒計(jì)時(shí)器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--倒計(jì)時(shí)
- 倒計(jì)時(shí)提醒器設(shè)計(jì)(課程設(shè)計(jì))
- 課程設(shè)計(jì)---時(shí)間倒計(jì)時(shí)顯示牌設(shè)計(jì)
- 單片機(jī)60倒計(jì)時(shí)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論