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