版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課程名稱(chēng) 微機(jī)原理與接口技術(shù) </p><p> 任課教師 </p><p> 設(shè)計(jì)題目 數(shù)字鐘設(shè)計(jì) </p><p> 班 級(jí) </p><p> 姓 名
2、 </p><p> 學(xué) 號(hào) </p><p> 日 期 2010年12月 5日 </p><p><b> 目錄</b></p><p><b> 計(jì)時(shí)時(shí)鐘的設(shè)計(jì)3</b></p><p
3、> 1 設(shè)計(jì)需求分析與解決方案3</p><p> 1.1 設(shè)計(jì)需求分析3</p><p> 1.1.1 題目要求3</p><p> 1.1.2 根據(jù)要求提出的問(wèn)題3</p><p> 1.2 解決問(wèn)題方法及思路3</p><p> 1.2.1 硬件設(shè)計(jì)選擇部分3</p>
4、<p> 1.2.2 軟件設(shè)計(jì)分析5</p><p><b> 2 硬件設(shè)計(jì)5</b></p><p> 2.1 選擇芯片82555</p><p> 2.1.1 芯片8255 A在本設(shè)計(jì)中的功能作用5</p><p> 2.1.2 芯片8255的功能分析5</p><p
5、> 2.1.3 8255部分技術(shù)參數(shù)6</p><p> 2.1.4 8255與外設(shè)相連的邏輯圖(見(jiàn)圖2-3)7</p><p> 2.2 選擇器件LED7</p><p> 2.2.1 LED在本設(shè)計(jì)中的作用7</p><p> 2.2.2 LED功能分析7</p><p> 2.2.3
6、LED技術(shù)參數(shù)8</p><p> 2.3 硬件設(shè)計(jì)思路及連接圖9</p><p> 2.3.1 硬件設(shè)計(jì)思路9</p><p> 2.3.2 硬件接線原理圖(見(jiàn)圖2-7)9</p><p> 3 軟件設(shè)計(jì)思路及程序控制流程框圖10</p><p> 3.1 軟件設(shè)計(jì)思路10</p>
7、<p> 3.2 程序流程圖的相關(guān)說(shuō)明10</p><p> 3.3 程序控制流程框圖(見(jiàn)圖3-1)10</p><p> 3.4 程序清單12</p><p> 4 上機(jī)調(diào)試過(guò)程17</p><p> 4.1 硬件調(diào)試17</p><p> 4.2 軟件調(diào)試17</p>
8、<p> 4.3 聯(lián)機(jī)調(diào)試17</p><p> 4.4 調(diào)試結(jié)果及問(wèn)題的提出18</p><p> 4.4.1 調(diào)試結(jié)果18</p><p> 4.4.2 提出問(wèn)題18</p><p> 5 設(shè)計(jì)結(jié)果分析、問(wèn)題討論及總結(jié)體會(huì)18</p><p> 5.1 課程設(shè)計(jì)結(jié)果及分析18&
9、lt;/p><p> 5.2 問(wèn)題討論18</p><p> 5.3 總結(jié)體會(huì)19</p><p><b> 6 參考文獻(xiàn)20</b></p><p><b> 計(jì)時(shí)時(shí)鐘的設(shè)計(jì)</b></p><p> 1 設(shè)計(jì)需求分析與解決方案</p><p
10、> 1.1 設(shè)計(jì)需求分析</p><p> 1.1.1 題目要求</p><p> 設(shè)計(jì)一個(gè)接口與七段LED顯示器,顯示一個(gè)計(jì)時(shí)時(shí)鐘,顯示初值為0,每隔一秒改變一次顯示值,60s為一分鐘,60min為一小時(shí),LED顯示器循環(huán)顯示時(shí)、分、秒的動(dòng)態(tài)值。 </p><p> 1.1.2 根據(jù)要求提出的問(wèn)題</p><p> 1、選擇
11、用于顯示時(shí)間的顯示器;</p><p> 2、怎樣使顯示器實(shí)現(xiàn)顯示時(shí)間;</p><p> 3、如何實(shí)現(xiàn)計(jì)時(shí)功能,是用軟件還是硬件實(shí)現(xiàn);</p><p> 4、選擇何種接口芯片以及考慮該接口芯片及LED顯示器的技術(shù)參數(shù),考慮最大工作電流,需不需要其他輔助芯片等;</p><p> 5、對(duì)設(shè)計(jì)題目功能的擴(kuò)展,在設(shè)計(jì)中加入其他功能;<
12、;/p><p> 6、可否用不同的設(shè)計(jì)方法完成設(shè)計(jì),與其他計(jì)算機(jī)語(yǔ)言設(shè)計(jì)相比的異同之處。</p><p> 1.2 解決問(wèn)題方法及思路</p><p> 1.2.1 硬件設(shè)計(jì)選擇部分</p><p><b> 1、接口芯片的選擇</b></p><p> 秒位設(shè)置完畢后,如何將時(shí)間信息傳送到
13、外設(shè)中,即選擇何種芯片用于CPU與外設(shè)之間傳送信息。接口芯片是微型機(jī)系統(tǒng)中實(shí)現(xiàn)輸入輸出的常用器件,是CPU與外設(shè)之間的界面,一方面要接收CPU進(jìn)行輸入/輸出所發(fā)出的一系列信息,另一方面又要與外設(shè)交換數(shù)據(jù)以及一些聯(lián)絡(luò)信號(hào)等。為增加本設(shè)計(jì)的靈活性,在接口的選擇上要求是可編程的輸入/輸出接口8255A芯片或8251A芯片。</p><p> 8255A芯片:它是一種可編程通用并行接口芯片,它有24條可編程的I/O引腳
14、,采用40腳雙列直插式封裝,單一+5V電源,全部輸入/輸出均與TTL電平兼容。在8255A中有A、B、C三個(gè)并行輸入/輸出端口,其功能全部由程序設(shè)定,每個(gè)端口都有自己的特點(diǎn)。A口、B口通常作為獨(dú)立的I/O端口使用,C口也可以作為一般的I/O端口使用,但當(dāng)A口、B口作為應(yīng)答式的I/O端口使用時(shí),C口分別以來(lái)為A口、B口提供應(yīng)答控制信號(hào)。如果采用8255A作為計(jì)時(shí)時(shí)鐘的輸入/輸出接口,那么8255A的三個(gè)端口設(shè)置如下:A口工作與方式0,作為
15、輸出口,其PA0~PA6分別與外設(shè)的段選碼相連,用以確定在何時(shí)顯示時(shí)間的哪一位;B口工作與方式0,作為輸出口,其PB0~PB7分別與外設(shè)相連,作為位選線;C口用來(lái)為A口、B口提供應(yīng)答控制信號(hào)。</p><p> 8251A芯片:它是一種可編程通用串行接口芯片,是通用的同步異步接收/發(fā)送器,它的作用是把計(jì)算機(jī)的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)發(fā)送出去,把接收到的外部串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)送入計(jì)算機(jī)內(nèi)部,它可以通過(guò)編程選用同
16、步/異步通信方式,它具有獨(dú)立的發(fā)送器和接收器,能夠以單工、半雙工或全雙工方式進(jìn)行通信,并提供相應(yīng)的控制信號(hào)。</p><p> 最佳解決方案:如果采用8251A作為計(jì)時(shí)時(shí)鐘的輸入/輸出接口,那么就需要把計(jì)算機(jī)的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)發(fā)送出去,把接收到的外部串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)送入計(jì)算機(jī)內(nèi)部,這個(gè)過(guò)程是需要時(shí)間的,所以從時(shí)間效率方面來(lái)說(shuō)并沒(méi)有8255A芯片合適;另外,可編程并行接口芯片(8255A)數(shù)據(jù)傳輸速度
17、快,雖然使用的通信線多,但是傳輸距離并不算遠(yuǎn),所以在解決接口問(wèn)題時(shí),采用可編程并行接口芯片8255A是比較合適的。</p><p><b> 2、時(shí)間顯示</b></p><p> 為實(shí)現(xiàn)計(jì)時(shí)時(shí)鐘的顯示,可選擇芯片LCD或LED,表1-1為兩種芯片的比較:</p><p> 表1-1LCD與LED的比較</p><p
18、> 通過(guò)分析和對(duì)比以及實(shí)驗(yàn)室實(shí)驗(yàn)條件可知LED顯示器要較優(yōu)于LCD顯示器,因此本實(shí)驗(yàn)選擇LED來(lái)實(shí)現(xiàn)時(shí)間的顯示。</p><p><b> 3、秒鐘設(shè)計(jì)</b></p><p> 秒鐘的設(shè)計(jì)有兩種解決方案:硬件實(shí)現(xiàn)、軟件實(shí)現(xiàn):</p><p> (1)硬件分析:可選擇8253A芯片,8253A是一種定時(shí)準(zhǔn)確、使用方便、靈活性大的可
19、編程定時(shí)器/計(jì)數(shù)器,其定時(shí)的時(shí)間長(zhǎng)度可以通過(guò)軟件來(lái)設(shè)置,對(duì)芯片設(shè)置處置初值后,計(jì)數(shù)器開(kāi)始工作,微處理器就可以去做其他工作,定時(shí)時(shí)間到,電路會(huì)產(chǎn)生一個(gè)信號(hào),向微處理器提出中斷請(qǐng)求,告訴處理器定時(shí)時(shí)間已到。</p><p> (2)軟件分析:為實(shí)現(xiàn)1秒長(zhǎng)度的設(shè)定,可執(zhí)行一個(gè)循環(huán)程序,通過(guò)循環(huán)次數(shù)和循環(huán)嵌套的層數(shù)來(lái)調(diào)節(jié)計(jì)時(shí)時(shí)間的長(zhǎng)短,該方法的優(yōu)點(diǎn)是不需要專(zhuān)用的硬件,從而成本低,方法簡(jiǎn)單靈活,使用起來(lái)也比較容易。<
20、;/p><p> ?。?)最佳解決方案:通過(guò)以上分析,硬件實(shí)現(xiàn)1秒的設(shè)定雖然較準(zhǔn)確,但用軟件來(lái)實(shí)現(xiàn)可以極大的節(jié)約成本,而且通過(guò)周密的計(jì)算循環(huán)的次數(shù)和循環(huán)嵌套的層數(shù)也可以將計(jì)時(shí)的準(zhǔn)確度提高,所以在實(shí)現(xiàn)計(jì)時(shí)時(shí)間方面選擇軟件是比較好的方案。</p><p> 1.2.2 軟件設(shè)計(jì)分析</p><p><b> 1、初始值設(shè)置</b></p>
21、;<p> 在程序中的數(shù)據(jù)段定義秒位數(shù)據(jù)second,分位數(shù)據(jù)minute,時(shí)位數(shù)據(jù)hour,初始值都設(shè)為00H,并在LED顯示器上顯示初值。</p><p><b> 2、8255初始化</b></p><p> 設(shè)置8255的工作方式:B口和C口都用于輸出,且都工作在方式0。</p><p><b> 3、計(jì)
22、時(shí)過(guò)程</b></p><p> 從初始值開(kāi)始顯示,當(dāng)顯示了1s時(shí),秒位加1,并判斷秒位是否為60,若不是,則直接顯示時(shí)間;若是,則將秒位置0,分位加1,接著判斷分位是否為60,若不是,則直接顯示;若是,則將分位置0,時(shí)位加1,然后判斷時(shí)位是否為25,若不是,則直接顯示;若是,則將時(shí)位置0,日期加1,并判斷日期是否加到31,若是,則將日期清零,重新計(jì)時(shí)。如此循環(huán)。</p><p&
23、gt;<b> 4、1秒時(shí)間的設(shè)定</b></p><p> 執(zhí)行一個(gè)循環(huán)程序,通過(guò)循環(huán)次數(shù)和循環(huán)嵌套的層數(shù)來(lái)調(diào)節(jié)計(jì)時(shí)時(shí)間的長(zhǎng)短,該循環(huán)次數(shù)處定為0100h。</p><p><b> 2 硬件設(shè)計(jì)</b></p><p> 2.1 選擇芯片8255</p><p> 2.1.1 芯片82
24、55 A在本設(shè)計(jì)中的功能作用</p><p> 8255是并行的I/0接口芯片,內(nèi)部有三個(gè)相互獨(dú)立的8位數(shù)據(jù)端口。8255實(shí)現(xiàn)了外設(shè)與8086之間的數(shù)據(jù)傳輸。8255的B口工作于方式0,作為輸出口,其PB0~PB7分別與LED數(shù)碼管顯示器的顯示器的八段a,b,c,d,e,f,g,dp相連,C口作為輸出口,其PC7~PC0與LED數(shù)碼管顯示器的LED0~LED7相連,作為位選。</p><p&
25、gt; 2.1.2 芯片8255的功能分析</p><p> 1、8255A是可編程并行接口,內(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ì)其他端口的控制。當(dāng)8255工作在方式0時(shí),即基本輸入輸出
26、方式時(shí),可將三個(gè)數(shù)據(jù)端口劃分為四個(gè)獨(dú)立的部分:A口和B口作為兩個(gè)8位端口,C口的高4位和低4位可以用作兩個(gè)4位的輸入輸出口,各個(gè)端口都可獨(dú)立地用作輸入或輸出。</p><p> 2、數(shù)據(jù)總線緩沖器是一個(gè)8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫(xiě)控制邏輯控制的,它可與系統(tǒng)的DB直接相連,實(shí)現(xiàn)CPU和8255A之間的信息傳送;讀寫(xiě)控制器用于管理數(shù)據(jù)、控制字或狀態(tài)字的傳送,接收來(lái)自CPU的地址信息及一些控制信號(hào),然后向A組、
27、B組控制電路發(fā)送命令,控制端口數(shù)據(jù)的傳送方向。</p><p> 2.1.3 8255部分技術(shù)參數(shù)</p><p> 1、8255A的方式控制字(見(jiàn)圖2-1)</p><p> 圖2-18255A的方式控制字</p><p> 2、8255A的部分技術(shù)參數(shù)(見(jiàn)表2-2)</p><p> 表2-28255
28、A的部分技術(shù)參數(shù)</p><p> 技術(shù)參數(shù)分析:8255A工作的最低輸入電壓-0.5~0.8V,最高輸入電壓是2.0~Vcc電壓,從這兩者之間的區(qū)域來(lái)看,邏輯電平的差值還是比較大的;另外在數(shù)據(jù)總線上的邏輯電平是2.4V,輸入的負(fù)載電流為在最大電流為±10mA,電源的電流是120mA,驅(qū)動(dòng)電流在-1.0 mA ~-4.0 mA之間。</p><p> 2.1.4 8255與外
29、設(shè)相連的邏輯圖(見(jiàn)圖2-3) </p><p> 圖2-38255與外設(shè)相連的邏輯圖</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> 2.2 選擇器件LED</p>&
30、lt;p> 2.2.1 LED在本設(shè)計(jì)中的作用</p><p> LED發(fā)光二級(jí)管(Light-Emitting Diode),在本設(shè)計(jì)中采用7段數(shù)字發(fā)光二級(jí)管,是作為終端用來(lái)顯示計(jì)時(shí)時(shí)鐘的時(shí)、分、秒值的。</p><p> 2.2.2 LED功能分析</p><p> LED發(fā)光二級(jí)管分為共陽(yáng)極和共陰極兩種,共陽(yáng)就是7段的顯示字碼共用一個(gè)電源的正極,
31、原理示意圖如下:(見(jiàn)圖2-4)</p><p> 圖2-4LED原理圖</p><p> LED數(shù)碼管采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個(gè)PN結(jié),具有單向?qū)щ娦浴纳蠄D可以看出,要是數(shù)碼管顯示數(shù)字,有兩個(gè)條件:1、是要在VT端(3/8腳)加正電源;2、要使(a,b,c,d,e,f,g,dp)端接低電平或“0”電平。這樣才能顯示的。將七個(gè)發(fā)光管進(jìn)行組合,排列成數(shù)字圖
32、形8,再根據(jù)需要控制七個(gè)管的亮與滅,即可顯示出定義數(shù)字。</p><p> 2.2.3 LED技術(shù)參數(shù)</p><p> 表2-5LED顯示管段選碼編碼表</p><p> 表2-6LED顯示管參數(shù)</p><p> LED技術(shù)參數(shù)說(shuō)明:通過(guò)以上所列出的LED技術(shù)參數(shù),可以總結(jié)出發(fā)光二極管的壓降一般為1.5~2.0 V,即工作電壓
33、要求不高,而且構(gòu)造簡(jiǎn)單,其工作電流一般取10~20 mA為宜。</p><p> 2.3 硬件設(shè)計(jì)思路及連接圖</p><p> 2.3.1 硬件設(shè)計(jì)思路</p><p> 8086的8位數(shù)據(jù)線D7~D0與8255的D7~D0相連,地址線經(jīng)74LS373鎖存后其低位A0、A1分別與8255的A0、A1相連,其他地址線經(jīng)74LS138譯碼后,其CS0接8255的
34、片選CS引腳,其入口地址為00F0H~00F3H。</p><p> 8255的A口PA0~PA7分別與邏輯開(kāi)關(guān)的K1~K8相連,其中開(kāi)關(guān)量K7用于判斷是否修改時(shí)間,K5~K6用于判斷修改哪一位,K1~K4為要修改的值;B口作為段選;C口作為位選段碼信號(hào)。</p><p> 2.3.2 硬件接線原理圖(見(jiàn)圖2-7)</p><p> 圖2-7硬件連接圖<
35、;/p><p> 3 軟件設(shè)計(jì)思路及程序控制流程框圖</p><p> 3.1 軟件設(shè)計(jì)思路</p><p> 1、初始化8255A,設(shè)置其工作方式。</p><p> 2、設(shè)置初值,定義對(duì)應(yīng)十六進(jìn)制數(shù)的七段代碼表及其時(shí)間區(qū)表。</p><p> 3、顯示計(jì)時(shí)并循環(huán)判斷,當(dāng)1秒時(shí)間到是則秒位加1計(jì)時(shí)顯示。<
36、/p><p> 4、8255A芯片個(gè)端口地址為:控制端口地址:00F3H</p><p> A口地址:00F0H</p><p> B口地址:00F1H</p><p> C口地址:00F2H</p><p> 3.2 程序流程圖的相關(guān)說(shuō)明</p><p> 首先對(duì)8255進(jìn)行初始化,然
37、后開(kāi)始讀取開(kāi)關(guān)量,判斷是否要修改時(shí)間,若需修改,則判斷需修改哪位,隨后將該位對(duì)應(yīng)的時(shí)間區(qū)數(shù)據(jù)修改為邏輯開(kāi)關(guān)K1~K4對(duì)應(yīng)的值,若不需要修改則繼續(xù)顯示并循環(huán)判斷,當(dāng)1秒時(shí)間到達(dá)時(shí),則秒位加1計(jì)時(shí)顯示。</p><p> 3.3 程序控制流程框圖(見(jiàn)圖3-1)</p><p> 圖3-1程序流程圖</p><p><b> 3.4 程序清單</b
38、></p><p> .MODELTINY</p><p> PCIBAR3EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) </p><p> Vendor_IDEQU 10EBH;廠商ID號(hào)</p><p> Device_
39、IDEQU8376;設(shè)備ID號(hào)</p><p> .STACK100</p><p><b> .DATA</b></p><p> IO_Bit8_BaseAddress DW?</p><p> msg0 DB'BIOS不支持訪問(wèn)PCI $'</p
40、><p> msg1 DB'找不到Star PCI9052板卡 $'</p><p> msg2 DB'讀8位I/O空間基地址時(shí)出錯(cuò)$'</p><p> COM_ADDDW00F3H;控制口偏移量</p><p> PA_ADDDW00F0H;PA口偏移量&
41、lt;/p><p> PB_ADDDW00F1H;PB口偏移量</p><p> PC_ADDDW00F2H;PC口偏移量</p><p> TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,</p><p> DB 6FH,77H,7CH,39H,5EH,79H,71H ;
42、段碼轉(zhuǎn)換表</p><p> SECOND DB 00H ;初始時(shí)間表</p><p> MINUTE DB 00H</p><p> HOUR DB 00H </p><p><b> .CODE</b></p><p> START:MOVAX,@DATA
43、</p><p> MOVDS,AX</p><p><b> NOP</b></p><p> CALL InitPCI</p><p> CALL ModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址</p><p> MOV BX,OFFSET
44、TAB ;LED數(shù)碼管的換碼的偏移地址</p><p> MOV DX,COM_ADD ;8255初始化</p><p> MOV AX,90H</p><p> OUT DX,AX ;A口輸入,B口輸出,C口低位輸出,且都工作于方式0</p><p> A1:
45、 MOV CX,0100H ;送一秒時(shí)間常數(shù)</p><p> A2: MOV SI,OFFSET SECOND;讀入秒變量的偏移地址</p><p> MOV DX,PA_ADD</p><p> IN AX,DX ;從A口讀取開(kāi)關(guān)量</p><p> PUSH
46、 CX ;保存時(shí)間常數(shù)</p><p> MOV AH,AL</p><p> AND AH,0F0H</p><p> CMP AH,70H ;判斷是否修改時(shí)間</p><p> JA REM3 ;若等于0,不修改</p>
47、<p> CMP AH,00H</p><p><b> JZ A3</b></p><p> CMP AH,10H</p><p><b> JZ A4 </b></p><p> CMP AH,20H</p><p><b>
48、 JZ A6</b></p><p> CMP AH,30H</p><p><b> JZ A7 </b></p><p> CMP AH,40H</p><p><b> JZ A9 </b></p><p> CMP AH,50H
49、</p><p><b> JZ A11 </b></p><p> CMP AH,60H</p><p><b> JZ A13</b></p><p><b> JMP A14</b></p><p> A3: MOV
50、 AH,[SI] ;修改秒位低位</p><p> AND AH,0F0H</p><p><b> OR AL,AH</b></p><p> MOV [SI],AL</p><p><b> JMP D1</b></p><p>
51、A4: MOV AH,[SI] ;修改秒位高位</p><p> AND AH,0FH </p><p> MOV CL,04H</p><p> SHL AL,CL</p><p> CMP AL,60H ;若修改值在0~5之間才能修改</p>&l
52、t;p><b> JB A5</b></p><p><b> JMP D1</b></p><p> A5: OR AL,AH</p><p> MOV [SI],AL</p><p> REM3: JMP D1</p><p> A
53、6: MOV AH,[SI+1] ;修改分位低位</p><p> AND AH,0F0H</p><p> AND AL,0FH ;禁止顯示</p><p><b> OR AL,AH</b></p><p> MOV [SI+1],AL</p>
54、<p> JMP D1 </p><p> A7: MOV AH,[SI+1] ;修改分位高位</p><p> AND AH,0FH</p><p> MOV CL,04H</p><p> SHL AL,CL</p><p> CMP A
55、L,60H </p><p> JB A8 ;若修改值在0~5之間才能修改</p><p><b> JMP D1</b></p><p> A8: OR AL,AH</p><p> MOV [SI+1],AL</p><p>
56、; JMP D1 </p><p> A9: MOV AH,[SI+2] ;修改時(shí)位低位</p><p> AND AH,0F0H</p><p> AND AL,0FH ;禁止顯示</p><p> CMP AL,40H </p>&
57、lt;p> JB A10 ;若修改值在0~3之間才能修改</p><p><b> JMP D1</b></p><p> A10: OR AL,AH</p><p> MOV [SI+2],AL</p><p><b> JMP D1&l
58、t;/b></p><p> A11: MOV AH,[SI+2] ;修改時(shí)位高位</p><p> AND AH,0FH</p><p> MOV CL,04H</p><p> SHL AL,CL</p><p> CMP AL,30H </p>
59、;<p> JB A12 ;若修改值在0~2之間才能修改</p><p><b> JMP D1</b></p><p> A12: OR AL,AH</p><p> MOV [SI+2],AL</p><p><b> JMP
60、D1</b></p><p> A14: MOV AH,[SI+3]</p><p> AND AH,0FH</p><p> MOV CL,04H</p><p> SHL AL,CL</p><p><b> OR AL,AH</b></p>
61、<p> MOV [SI+3],AL </p><p> D1: MOV CX,0004H ;分秒切換</p><p> MOV AH,0FEH ;位選碼11111110</p><p> D2: MOV AL,[SI] ;把時(shí)間常數(shù)
62、放入AL中</p><p> AND AL,0FH ;取分/秒個(gè)位</p><p> PUSH CX </p><p> MOV CX,0002H </p><p> D3: XLAT ;換碼 <
63、/p><p> MOV DX,PB_ADD</p><p> OUT DX,AL ;送段選碼</p><p> MOV AL,AH</p><p> MOV DX,PC_ADD</p><p> OUT DX,AL ;送位選碼,顯示低位</p>
64、<p><b> ROL AH,1</b></p><p><b> PUSH CX</b></p><p> MOV CX,0FFFH ;低位暫留時(shí)間</p><p> DELAY1: NOP</p><p><b> NOP</b&g
65、t;</p><p> LOOP DELAY1 ;延時(shí)子程序</p><p> MOV AL,0FFH ;位選碼為11111111</p><p> OUT DX,AL ;禁止顯示</p><p> MOV AL,[SI]</p><p&g
66、t; SHR AL,04H</p><p><b> POP CX</b></p><p><b> LOOP D3 </b></p><p><b> INC SI</b></p><p><b> POP CX</b></p
67、><p><b> DEC CX</b></p><p> JNZ D2 </p><p><b> POP CX</b></p><p><b> DEC CX</b></p><p> MOV DX,PA_ADD</p>
68、;<p><b> JNZ REM2</b></p><p> IN AX,DX ;從A口讀取開(kāi)關(guān)量</p><p> MOV AH,AL</p><p> AND AH,80H</p><p> CMP AH,80H ;判斷是否修改
69、時(shí)間</p><p><b> JNZ REM</b></p><p> MOD1:MOV SI,OFFSET SECOND ;計(jì)時(shí)</p><p> MOV AL,[SI]</p><p> ADD AL,01H ;秒位加1</p><p>
70、DAA ;壓縮BCD碼調(diào)整指令</p><p> MOV [SI],AL</p><p> CMP AL,60H</p><p><b> JNZ REM</b></p><p> MOV AL,00H ;秒位置00,分位加1</p>&
71、lt;p> MOV [SI],AL</p><p> MOV AL,[SI+1]</p><p> ADD AL,01H</p><p><b> DAA</b></p><p> MOV [SI+1],AL</p><p> CMP AL,60H</p>
72、<p><b> JNZ REM</b></p><p> MOV AL,00H</p><p> MOV [SI+1],AL </p><p> MOV AL,[SI+2]</p><p> ADD AL,01H ;時(shí)位加1</p>
73、<p> DAA ;壓縮BCD碼調(diào)整指令</p><p> MOV [SI+2],AL</p><p> CMP AL,24H</p><p><b> JNZ REM</b></p><p> MOV AL,00H</p><p> M
74、OV [SI+3],AL ;重新計(jì)時(shí)</p><p> REM: JMP A1</p><p> REM2: JMP A2</p><p> JMP START </p><p> InitPCI PROCNEAR</p><p> MOV A
75、H,00H</p><p> MOV AL,03H</p><p> INT 10H ;清屏</p><p> MOV AH,0B1H</p><p> MOV AL,01H</p><p><b> INT 1AH</b></
76、p><p> CMP AH,0</p><p> JZ InitPCI2</p><p> LEA DX,msg0</p><p> InitPCI1:MOV AH,09H</p><p><b> INT 21H</b></p><p> J
77、MP Exit</p><p> InitPCI2: MOV AH,0B1H</p><p> MOV AL,02H</p><p> MOV CX,Device_ID</p><p> MOV DX,Vendor_ID</p><p> MOV SI,0</p>&l
78、t;p><b> INT 1AH</b></p><p> JNC InitPCI3 ;是否存在Star PCI9052板卡</p><p> LEA DX,msg1</p><p> JMP InitPCI1</p><p> InitPCI3:MOV DI,
79、PCIBAR3</p><p> MOV AH,0B1H</p><p> MOV AL,09H</p><p> INT 1AH ;讀取該卡PCI9052基地址</p><p> JNC InitPCI4</p><p> LEA DX,msg2</p&g
80、t;<p> JMP InitPCI1</p><p> InitPCI4: AND CX,0FFFCH</p><p> MOV IO_Bit8_BaseAddress,CX</p><p><b> RET</b></p><p> InitPCIENDP</p&g
81、t;<p> ModifyAddressPROCNEAR</p><p> ADDCOM_ADD,CX</p><p> ADDPA_ADD,CX</p><p> ADDPB_ADD,CX</p><p> ADDPC_ADD,CX</p><p><b>
82、RET</b></p><p> ModifyAddressENDP</p><p> Exit:MOV AH,4CH</p><p><b> INT 21H</b></p><p> END START</p><p><b> 4 上機(jī)調(diào)試過(guò)
83、程</b></p><p><b> 4.1 硬件調(diào)試</b></p><p> 本次課程設(shè)計(jì)采用的是STAR ES598PCI實(shí)驗(yàn)儀,通過(guò)借用上位機(jī)的CPU來(lái)完成實(shí)驗(yàn),這樣就不需要我們?cè)僭趩纹瑱C(jī)上另外插上一個(gè)CPU,而芯片74LS273都已經(jīng)集成在一塊電路板上,節(jié)省了連線,出此以外還需要8255A一片,十六位邏輯開(kāi)關(guān)一個(gè)。由于設(shè)計(jì)中所用的邏輯開(kāi)關(guān)內(nèi)部
84、已經(jīng)有74LS244作為驅(qū)動(dòng)器,所以在接線時(shí)不再需要接入74LS244。</p><p> 在硬件接線連接時(shí),應(yīng)將8255A(IC37)的PA0~PA7分別與邏輯電平開(kāi)關(guān)電路的K1~K8相連, PB7~PB0分別與LED顯示器的a~h相連,PC7~PC0分別與LED顯示器的LED0~LED7相連, CS0與8255A的片選(CS8255)相連。8086的8位數(shù)據(jù)線D7~D0與8255的D7~D0相連,地址線經(jīng)7
85、4LS373鎖存后其低位A0、A1分別與8255的A0、A1相連,至此,硬件線路已經(jīng)接好。 </p><p><b> 4.2 軟件調(diào)試</b></p><p> 在軟件部分,程序分為三個(gè)部分:8255A初始化部分,讀入開(kāi)關(guān)量部分,顯示出數(shù)字量部分。</p><p><b> 4.3 聯(lián)機(jī)調(diào)試</b></p&g
86、t;<p> 軟件和硬件分別調(diào)試完畢后,進(jìn)行聯(lián)機(jī)調(diào)試,出現(xiàn)了新的問(wèn)題:顯示在LED數(shù)碼管上的數(shù)字不停跳躍,變幻不定。</p><p> 要解決這個(gè)問(wèn)題,可以在每個(gè)延時(shí)子程序的后面加上MOV AL,0FFH和OUT DX,AL兩語(yǔ)句用來(lái)表示禁止顯示。因?yàn)樵谶M(jìn)入第二個(gè)數(shù)字的顯示時(shí),如果不關(guān)一個(gè)位選碼(即禁止顯示),則數(shù)字要在兩個(gè)數(shù)碼管之間跳躍。因此,要在每個(gè)數(shù)字顯示后均要禁止顯示,防止串位,使之看見(jiàn)
87、清楚。</p><p> 除此之外,每個(gè)數(shù)字顯示后的延時(shí)是利用延時(shí)子程序的循環(huán)次數(shù)來(lái)控制的,為了使數(shù)字編碼顯示得清楚,應(yīng)該通過(guò)調(diào)試,確定延時(shí)子程序的循環(huán)次數(shù)。在本設(shè)計(jì)中,循環(huán)次數(shù)設(shè)為16(10h)次。</p><p> 4.4 調(diào)試結(jié)果及問(wèn)題的提出</p><p> 4.4.1 調(diào)試結(jié)果</p><p> 調(diào)試后編碼結(jié)果正確,顯示清楚
88、,穩(wěn)定,且可通過(guò)開(kāi)關(guān)修改任一位的時(shí)間量。</p><p> 4.4.2 提出問(wèn)題</p><p> 怎樣解決條件轉(zhuǎn)移指令范圍溢出問(wèn)題?同時(shí)如何簡(jiǎn)化程序使之簡(jiǎn)潔明了?</p><p> 5 設(shè)計(jì)結(jié)果分析、問(wèn)題討論及總結(jié)體會(huì)</p><p> 5.1 課程設(shè)計(jì)結(jié)果及分析</p><p> 結(jié)果:當(dāng)程序開(kāi)始全速運(yùn)行
89、時(shí),LED顯示器上顯示“00 00 00 ”,一秒后變?yōu)椤?0 00 01”這樣每隔一秒秒位加1,顯示“ 00 00 59”的后一秒顯示為“00 01 00”,顯示“23 59 59”的后一秒顯示為“ 00 00 00”。</p><p> 當(dāng)開(kāi)關(guān)K8置1時(shí),無(wú)論怎樣改變K7~ K1,LED顯示器按正常計(jì)時(shí)顯示。</p><p> 當(dāng)開(kāi)關(guān)K8置0時(shí),改變K7~ K1,LED顯示器上的顯
90、示值會(huì)改變,具體情況如下:</p><p> K6~K4:000:修改秒位低位; 001:修改秒位高位;</p><p> 010:修改分位低位; 011:修改分位高位;</p><p> 100:修改時(shí)位低位; 101:修改時(shí)位高位;</p><p> K3~K1:用于改變顯示的值。</p><p>
91、 例如:若為0110,當(dāng)K6~K4為010時(shí),分位低位的數(shù)字即修改為6,一秒后秒位增一顯示。</p><p> 分析:將8255A的 A口(PA0-PA7)作為輸入用,B口(PB0-PB7)作為輸出用(送段選碼),C口作為輸出用(送位選碼)。程序首先從8255A的A口讀取開(kāi)關(guān)量,根據(jù)開(kāi)關(guān)K7判斷是否需要修改時(shí)間,若開(kāi)關(guān)K7為1,則在8255A的B口送段選碼,C口送位選碼后在LED顯示器上顯示時(shí)間;若開(kāi)關(guān)K7為0
92、,則將根據(jù)K6~ K5對(duì)應(yīng)的值將開(kāi)關(guān)量K4~ K1對(duì)應(yīng)的值經(jīng)段碼表轉(zhuǎn)換及程序轉(zhuǎn)換后在B口(PB0-PB7)輸出作為段選碼,在C口輸出位選碼后在LED顯示器上顯示時(shí)間。然后程序判斷之前設(shè)置的一秒的時(shí)間常量有沒(méi)有到,若一秒時(shí)間到,則將時(shí)間加一后接著顯示。</p><p><b> 5.2 問(wèn)題討論</b></p><p> 該試驗(yàn)一開(kāi)始較簡(jiǎn)單僅顯示分秒,沒(méi)有出現(xiàn)什么問(wèn)
93、題,后來(lái)加上時(shí)日和開(kāi)關(guān)致使程序變得復(fù)雜,條件跳轉(zhuǎn)超出范圍而調(diào)用子程序又有錯(cuò),后來(lái)終于使用JMP指令完成了程序,結(jié)果達(dá)到了要求但程序太繁雜條理不清,經(jīng)過(guò)小組在一起討論優(yōu)化終使程序較為理想。</p><p><b> 5.3 總結(jié)體會(huì)</b></p><p> 微機(jī)原理與接口技術(shù)是一門(mén)很有趣的課程,任何一個(gè)計(jì)算機(jī)系統(tǒng)都是一個(gè)復(fù)雜的整體,學(xué)習(xí)計(jì)算機(jī)原理是要涉及到整體的每
94、一部分。討論某一部分原理時(shí)又要涉及到其它部分的工作原理。這樣一來(lái),不僅不能在短時(shí)間內(nèi)較深入理解計(jì)算機(jī)的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,在循序漸進(jìn)的課堂教學(xué)過(guò)程中,我總是處于“學(xué)會(huì)了一些新知識(shí),弄清了一些原來(lái)保留的問(wèn)題,又出現(xiàn)了一些新問(wèn)題”的循環(huán)中,直到課程結(jié)束時(shí),才把保留的問(wèn)題基本搞清楚。</p><p> 學(xué)習(xí)該門(mén)課程知識(shí)時(shí),其思維方法也和其它課程不同,該課程偏重于工程思維,具體地說(shuō),
95、在了解了微處理器各種芯片的功能和外部特性以后,剩下額是如何將它們用于實(shí)際系統(tǒng)中,其創(chuàng)造性勞動(dòng)在于如何用計(jì)算機(jī)的有關(guān)技術(shù)和廠家提供的各種芯片,設(shè)計(jì)實(shí)用的電路和系統(tǒng),再配上相應(yīng)的應(yīng)用程序,完成各種實(shí)際應(yīng)用項(xiàng)目。</p><p> 這次實(shí)驗(yàn)并不是很難,主要的困難來(lái)自對(duì)程序的理解。功夫不負(fù)有心人,經(jīng)過(guò)同組三個(gè)人的合作和努力,我們最后對(duì)實(shí)驗(yàn)的原理有了清晰的認(rèn)識(shí)。雖然實(shí)驗(yàn)臺(tái)上的很多模塊單元沒(méi)有用到,但是就系統(tǒng)功能來(lái)說(shuō),我覺(jué)
96、得我們做的還是不錯(cuò)的。</p><p> 這次課程設(shè)計(jì),首先,讓我學(xué)習(xí)和掌握計(jì)算機(jī)中常用接口電路及8255A的應(yīng)用和設(shè)計(jì)技術(shù),充分認(rèn)識(shí)理論知識(shí)對(duì)應(yīng)用技術(shù)的指導(dǎo)性作用,進(jìn)一步加強(qiáng)理論知識(shí)與應(yīng)用相結(jié)合的實(shí)踐和鍛煉。通過(guò)實(shí)踐,進(jìn)一步加深了對(duì)專(zhuān)業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解,使自己的設(shè)計(jì)水平和對(duì)所學(xué)的知識(shí)的應(yīng)用能力以及分析問(wèn)題解決問(wèn)題的能力得到全面提高。</p><p> 再次,讓我們對(duì)實(shí)驗(yàn)
97、臺(tái)有了足夠的了解,讓我們知道了實(shí)驗(yàn)臺(tái)上各個(gè)模塊的用法;而且它還讓我們對(duì)自己動(dòng)手寫(xiě)程序來(lái)控制實(shí)驗(yàn)臺(tái)的運(yùn)作有了一定的基礎(chǔ)。雖然實(shí)驗(yàn)臺(tái)只是一個(gè)小型的模擬平臺(tái),但是通過(guò)對(duì)它的學(xué)習(xí)和操作,我們對(duì)有關(guān)接口的知識(shí)將會(huì)有一個(gè)更廣泛的認(rèn)識(shí),而且它對(duì)我們以后的學(xué)習(xí)也會(huì)有幫助的。</p><p> 實(shí)驗(yàn)中,我不僅復(fù)習(xí)和鞏固了微機(jī)原理中的很多知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。且充分了解到畫(huà)程序流程圖的必要性。通過(guò)程序流程
98、圖,在做設(shè)計(jì)的過(guò)程中,我們每一步要做什么,每一步要完成什么任務(wù)都有一個(gè)很清楚的思路,在程序測(cè)試的過(guò)程中也有利于查錯(cuò)。</p><p> 本次設(shè)計(jì)給我最大的收獲就是動(dòng)手能力的重要性,實(shí)踐和理論上是有差距的,理論與實(shí)際相結(jié)合是很重要的。只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之
99、處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固。動(dòng)手試驗(yàn)也讓自己對(duì)書(shū)本知識(shí)有了更深刻的認(rèn)識(shí),把書(shū)本知識(shí)真正的轉(zhuǎn)化為自己所掌握的東西,能加以利用。</p><p> 實(shí)驗(yàn)中個(gè)人的力量是不及群體的力量的,我們同組三個(gè)人分工合作,做事的效率高了很多。雖然有時(shí)候會(huì)為了一些細(xì)節(jié)爭(zhēng)論不休,但最后得出的總是最好的結(jié)論。而且實(shí)驗(yàn)也教會(huì)我們?cè)趫F(tuán)隊(duì)中要善于與人相處,與人共事,不要一個(gè)人解決所有問(wèn)題。</p>&
100、lt;p> 總之,這次課程設(shè)計(jì)對(duì)于我們有很大的幫助,通過(guò)課程設(shè)計(jì),我更加深入地理解了,微機(jī)原理課程上講到的各種芯片的功能,以及引腳的作用,同時(shí)加深了對(duì)于主要芯片的應(yīng)用的認(rèn)識(shí),同時(shí)在試驗(yàn)室的環(huán)境里熟悉了匯編程序的編寫(xiě)過(guò)程和運(yùn)行過(guò)程,最后還提高了自己的動(dòng)手能力。</p><p> 在此我還要感謝老師的悉心指導(dǎo)和同組人員的協(xié)助及配合,正是因?yàn)槟銈兊膸椭糯_保了本次課程設(shè)計(jì)的順利進(jìn)行,謝謝!</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)接口課程設(shè)計(jì)報(bào)告--數(shù)字鐘實(shí)驗(yàn)
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告(正文)
- 數(shù)字邏輯課程設(shè)計(jì)報(bào)告---數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告 (2)
- 數(shù)字鐘eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告--數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)--數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)--數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 微機(jī)接口電子表數(shù)字鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告---數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論