版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微機原理與接口技術課程設計報告題目:倒計時學 院 專 業(yè) 計算機科學與技術班 級 學 號 學生姓名 指導教師 課程成績 完成日期 2011年6月23日目 錄一設計功能3二設計原理及原理圖31.系統(tǒng)總設計原理32.硬件框架原理圖33.硬件介紹44.功能電路7三程序模塊及流程圖81.8255A初始化82.顯示程序模塊83.延時程序模塊94.控制程序模塊95.LED燈點亮程序模塊10四源程序11五實驗結果15六總結16附錄1:系統(tǒng)硬件框架17附錄2:系統(tǒng)總程序流程圖18附錄3:8086/88計算機主板圖19題目:倒計時一 設計功能 本次課程設計我們在TD-PIT+實驗系統(tǒng)和PC機平臺上利用并行接口8
2、255A、鍵盤及數(shù)碼管顯示單元、開關及LED顯示單元、鍵盤按鍵和電腦顯示屏設計成一個倒計時器。具體功能包括:1. 用2位8段共陰數(shù)碼管顯示倒計時時間;2. 使用開關K0實現(xiàn)暫停/啟動功能,開關K1實現(xiàn)倒計時復位功能;3. 倒計時為0時8盞LED燈實現(xiàn)跑馬燈功能;4. 利用數(shù)字鍵輸入倒計時初始數(shù)值,按鍵“r”實現(xiàn)重新啟動倒計時器,按鍵“e”實現(xiàn)退出程序進入DOS環(huán)境下,并對其他按鍵進行屏蔽;5. 屏幕顯示相應的提示信息,包括提示用戶輸入數(shù)據(jù)、倒計時結束、倒計時結束后用戶進行的操作;6. 可以任意設定倒計時的初始時間,每隔1秒鐘計時器減1,直到為0;7. 在倒計時過程中可通過開關K1實現(xiàn)退出當前的
3、倒計時并開始新一輪的倒計時。二 設計原理及原理圖1. 系統(tǒng)總設計原理我們選擇并行接口8255A芯片,在程序中使用延時語句來輸出秒脈沖,并在其中調用顯示函數(shù)不斷刷新數(shù)碼管進行數(shù)值顯示。使用8255A作為輸入/輸出接口,其中A端口為輸出口,連接LED顯示單元的D8D15;B端口為輸出口,連接數(shù)碼管的ADp,進行數(shù)碼管的段鎖存;C端口高4位為輸出口,連接數(shù)碼管的X4X1,進行位鎖存,低4位為輸入端,連接開關的K3K0。采用在軟件中控制循環(huán)程序的方式來控制倒計時的復位和暫停功能,并通過程序來顯示語句和讀入用戶的鍵盤輸入,以進行相應操作。此方案性價比高,但由于使用了軟件延時,當芯片損耗以及芯片在工作時間
4、過長后會出現(xiàn)倒計時不夠準確。2. 硬件框架原理圖圖1 系統(tǒng)設計硬件框架3. 硬件介紹3.1 并行接口8255A(1) 8255A的內部結構圖2 8255A的內部結構1) 8255A有3個8位數(shù)據(jù)接口,即接口A、接口B和接口C,可利用編程方法設置3個端口是作為輸入端口還是輸出端口;2) 8255A能適應CPU和I/O接口之間的多種數(shù)據(jù)傳送方式的要求,如無條件傳送、查詢方式傳送、中斷方式傳送。8255A設置了方式0、方式1以及方式2;3) 數(shù)據(jù)總線緩沖器是個雙向三態(tài)8位數(shù)據(jù)緩沖器,與CPU系統(tǒng)數(shù)據(jù)總線相連,是8255A與CPU之間傳輸數(shù)據(jù)的必經(jīng)之路。輸入數(shù)據(jù)、輸出數(shù)據(jù)、控制命令字都是通過數(shù)據(jù)總線緩
5、沖器進行傳遞的;4) 讀/寫控制邏輯電路接收來自CPU地址總線的信號和控制信號,并發(fā)出命令到兩個控制組(A組和B組)。它控制把CPU發(fā)出的控制命令或輸出的數(shù)據(jù)送到相應的端口,或者把外設的狀態(tài)或輸入的數(shù)據(jù)相應的端口送到CPU;5) A組控制和B組控制一方面接收芯片內部總線上的控制字,一方面接收來自讀/寫控制邏輯電路的讀/寫命令,從而解決端口的工作方式和讀/寫操作。其中,A組控制電路控制端口A和端口C高4位(PC7-PC4)的工作方式和讀/寫操作:而B組控制電路控制端口B和端口C低4位(PC3-PC0)工作方式和讀寫操作。(2) 8255A的外部引腳圖3 8255A的功能引腳圖1) 與外部設備端相
6、連的引腳 PA7-PA0:A端口的輸入/輸出引腳; PB7-PB0:B端口的輸入/輸出引腳; PC7-PC0:C端口的輸入/輸出引腳;2) 與CPU相連的引腳RESET:復位信號,低電平有效。當RESET信號來到時,所有內部寄存器都被清0,同時3個端口被自動設為輸入端口;D7-D0:8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連;CS:芯片選擇信號。只有當CS有效時,讀出信號RD和寫入信號WR才對8255A有效;RD:讀出信號。CPU通過IN指令使RD有效,將數(shù)據(jù)或狀態(tài)信息從8255A中讀到CPU; WR:寫入信號。CPU通過OUT指令使WR有效,將數(shù)據(jù)或狀態(tài)信息從CPU中寫道8255A;A1,A0:
7、端口選擇信號。8255A內部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定A1,A0為00、01、10和11時,分別選中端口A、端口B、端口C和控制端口。(3) 8255A的控制字1) 8255A的方式控制字 8255A共有兩個控制字,即工作方式控制字和對C口置位/復位控制字。8255A的工作方式字格式和各位的含義如圖4圖4 8255A工作方式控制字格式方式0為基本的輸入輸出方式;方式1為選通式輸入/輸出;方式3為雙向選通輸入/輸出方式。2) C口置位/復位控制字8255A的C口置位/復位控制字的格式如圖5圖5 8255A的C口置位/復位控制字3.2 八段共陰數(shù)碼管一般8段LED顯示器的內部結
8、構和引腳如圖6(a)所示。每段都是一個發(fā)光二極管,通過點亮不同的字段,可以顯示0,1,9和A,B,F。其內部各發(fā)光二極管之間的連接方法有共陰極和共陽極兩種,如圖6(b)和圖6(c)所示。(a)結構和引腳 (b)共陰極接法 (c)共陽極接法圖6 八段LED顯示器(1) 共陰極接法:把發(fā)光二極管的陰極連在一起構成公共陰極。使用時公共陰極接地,這樣陽極端輸入高電平的段發(fā)光二極管就導通點亮,而輸入低電平的則不點亮。實驗中使用的數(shù)碼管為共陰極接法;(2) 共陽極接法:把發(fā)光二極管的陽極連在一起構成公共陽極。使用時公共陽極 接5V。這樣陰極端輸入低電平的段發(fā)光二極管就導通點亮,而輸入高電平的則不點亮。表1
9、 8段LED顯示字形段碼字型共陰極字形代碼字型共陰極字形代碼字型共陰極字形代碼03FH67DHC39H106H707HD5EH25BH87FHE79H34FH96FHF71H466HA77H滅00H56DHB7CH4. 功能電路4.1 數(shù)碼管顯示電路圖7 顯示連接電路實驗箱上有四個LED顯示器,本實驗利用PC口的最高兩位選中X4和X3兩個數(shù)碼管,即進行位鎖存;八段數(shù)碼管為陽極LED器件。要讓A段點亮,要求PB0輸出高電平“1”;要使B段熄滅,要求從PB1輸出低電平“0”。其余各段以此類推。要使LED上顯示0-9十個數(shù)字,需要按照如下段碼表來驅動數(shù)碼管的八段LED:表2 8段數(shù)碼管段碼表顯示字符
10、0123456789八段代碼3FH06H5BH4FH66H6DH7DH07H7FH6FH4.2 開關與LED燈控制電路圖8 開關與LED燈控制電路設置8255的A端口工作在方式0下,作為輸出端,電路連接如上圖,在倒計時到0的時候LED燈從左到右接著再從右往左依次點亮,實現(xiàn)跑馬燈功能。開關K1為復位開關,在倒計時過程中置K1為“1”可以實現(xiàn)退出當前倒計時,置K1為“0”時又開始重新倒計時。開關K0為暫停開關,在倒計時過程中置K0為“1”可以暫停倒計時,置K0為“0”時,數(shù)碼管接著當前的顯示數(shù)據(jù)執(zhí)行遞減,并且在暫停過程中數(shù)碼管始終顯示暫停時的數(shù)據(jù)。三 程序模塊及流程圖1. 8255A初始化程序開始
11、時對8255A進行初始化,A組和B組控制工作在方式0,因此方式字中的D6D5和D2為0。A口為輸出,因此D4為0;C口高4位為輸出,因此D3為0,低4位為輸入,因此D0為1;B口為輸出,因此D1為0。根據(jù)程序設計要求,8255A的方式控制字為1000 0001B,即81H。2. 顯示程序模塊根據(jù)方式控制字和連線可知,B口連接數(shù)碼管的ADp進行段鎖存,C口的高4位連接X4X1進行位鎖存。顯示程序如下:DIS PROC NEAR;數(shù)碼管顯示子程序 PUSH AX;保護現(xiàn)場 PUSH DX MOV SI,3000H;找到存數(shù)的緩沖區(qū) MOV AL,0BFH ;1011 1111B,選中X3數(shù)碼管 M
12、OV DX,MY8255_C;選中PC口,進而選中數(shù)碼管 OUT DX,AL MOV AL,SI;取出緩沖區(qū)中存放的鍵值 XLAT;查表指令,將以BX為基地址,AL為位移量的字節(jié)存儲單元中的數(shù)賦給AL MOV DX,MY8255_B;寫入數(shù)碼管ADp OUT DX,AL CALL DALLY1;調用延時函數(shù) MOV AL,7FH ;0111 1111B,選中X4數(shù)碼管 MOV DX,MY8255_C;選中PC口,進而選中數(shù)碼管 OUT DX,AL MOV AL,SI+1;取出緩沖區(qū)中存放的鍵值 XLAT MOV DX,MY8255_B;寫入數(shù)碼管ADp OUT DX,AL CALL DALLY
13、1;調用延時函數(shù) POP AX POP DXDIS ENDP3. 延時程序模塊控制一個循環(huán)程序循環(huán)N次以到達延時的目的。具體語句如下:DALLY: PUSH CX;保護現(xiàn)場 PUSH AX MOV CX,0FFFFHA1: MOV AX,4FFFHA2: DEC AX;自減 JNZ A2 LOOP A1;計數(shù)循環(huán) POP AX POP CXRET程序循環(huán)次數(shù)為N=(FFFF+1)*(4FFF+1),延時時間為N*n(n為程序語句執(zhí)行時間)4. 控制程序模塊控制程序有暫停和復位,其中暫??梢杂靡粋€循環(huán)程序來實現(xiàn),當暫停鍵撥下時,循環(huán)程序會進入死循環(huán)狀態(tài),直至暫停鍵撥回。復位則只需按條件跳轉至輸入
14、初始時間的程序語句處即可。C口低4位為輸入,讀入開關狀態(tài),判斷“0”和“1”狀態(tài)進行控制。程序代碼如下:PAUSE: CALL DIS;調用顯示子程序 MOV DX,MY8255_C;C口低4位為輸入 IN AL,DX;讀入C口的最低位的狀態(tài) TEST AL,01H;0000 0001B JNZ PAUSE ;最低位為1暫停倒計時RESET1: MOV DX,MY8255_C ;C口低4位為輸入 IN AL,DX TEST AL,02H ;0000 0010B JNZ RESET2 ;第2位置1后執(zhí)行RESET2 DEC TIME ;減1倒計時 MOV CL,TIME CMP CL,0FFH
15、;當從初始值減到0后繼續(xù)減1則值為0FFH,說明計數(shù)結束 JNZ DISPY ;倒計時未到0,繼續(xù)倒計時 JMP OUTPUT1 ;跳到流水燈點亮;重新開始倒計時 RESET2: JMP SHURU5. LED燈點亮程序模塊當程序運行至倒計時結束的語句時啟動點亮LED燈程序。A口連接LED顯示單元的D15D8,通過A口送入的數(shù)據(jù)控制LED燈的點亮情況。程序代碼如下:OUTPUT1: PUSH CX;點亮流水燈,流水燈0滅1亮 MOV CX,7;循環(huán)計數(shù)初值 MOV LA,80H;流水燈從左往右依次點亮P4: MOV AL,LA MOV DX,MY8255_A OUT DX,AL;通過A口輸出控
16、制LED點亮 CALL DALLY ROR AL,1;不進位的循環(huán)右移 MOV LA,AL LOOP P4 MOV CX,8 MOV LB,01H;流水燈從右往左依次點亮P5: MOV AL,LB MOV DX,MY8255_A OUT DX,AL CALL DALLY ROL AL,1;不進位的循環(huán)左移 MOV LB,AL LOOP P5 JMP prompt;流水燈顯示結束跳轉到prompt四 源程序;利用8255A設計倒計時,其中A端口連接LED顯示單元的D8D15,B口連接數(shù)碼管的ADp,;進行段鎖存,C口高4位連接數(shù)碼管的X4X1,進行位鎖存,C口的低4位作為輸入端,連;接開關的K3
17、K0,其他引腳與系統(tǒng)總線相連;*根據(jù)CHECK配置信息修改下列符號值*IOY0 EQU 9C00H ;PCI卡中斷控制寄存器地址;*MY8255_A EQU IOY0+00H*4 ;8255計數(shù)器0端口地址MY8255_B EQU IOY0+01H*4 ;8255計數(shù)器1端口地址MY8255_C EQU IOY0+02H*4 ;8255計數(shù)器2端口地址MY8255_MODE EQU IOY0+03H*4 ;8255控制寄存器端口地址;*DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;對應09 TIME DB ?;存儲
18、倒計時的初始時間 CHU DB 10;存儲被除數(shù)10 LA DB ?;存儲數(shù)碼管從左往右亮的數(shù)值 LB DB ?;存儲數(shù)碼管從右往左亮的數(shù)值 BUF DB ?;存儲輸入的十位數(shù) TISHI DB 13,10,Input the time:,$ TIMESUP DB 13,10,Times up!,$ STRMSG DB 13,10,press r to restart, e to exit:,$ ENDMSG DB 13,10,Thanks for using!,$DATA ENDS;*STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDS;*CODE SE
19、GMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX;裝載數(shù)據(jù)段 MOV DX,MY8255_MODE ;初始化8255 MOV AL,81H ;置8255的C口PC0PC3輸入開關狀態(tài),PC4PC7進行數(shù)碼管的位鎖存B;口的PB0PB7進行數(shù)碼管的段鎖存,A口的PA0PA7控制流水燈的點亮 OUT DX,ALSHURU: LEA DX,TISHI;給出輸入時間提示 MOV AH,09H INT 21H;顯示輸入倒計時時間的提示 MOV AH,01H INT 21H;輸入第1個數(shù)作為十位數(shù) SUB AL,30H;將
20、AL的ASCLL減30H變?yōu)槭M制的值 MOV CL,10 MUL CL;將操作數(shù)10和AL相乘結果存入AX中 MOV BUF,AL;把十位數(shù)存入BUF中 MOV AH,01H;輸入第2個數(shù)作為個位數(shù) INT 21H SUB AL,30H;將AL的ASCII減30H變?yōu)槭M制的值 ADD AL,BUF;將兩數(shù)相加作為倒計時的開始時間 MOV TIME,AL;將數(shù)給TIMEDISPY: MOV BX,OFFSET DTABLE;取DTABLE的偏移值 MOV AL,TIME;初值給AL CBW;將AX的高8位置0 MOV CL,CHU;除數(shù)10給CL DIV CL;商/十位數(shù)存入AL,余數(shù)/個位
21、數(shù)存入AH MOV SI,3000H;定義一個緩沖區(qū) MOV SI,AL;商/十位數(shù)存入SI,X3中 MOV SI+1,AH;余數(shù)/個位數(shù)存入SI+1,X4中 PUSH AX;保護現(xiàn)場 PUSH CX MOV CX,1FFFH;通過延時不斷刷新數(shù)碼管C1: MOV AX,0FFFHC2: DEC AX CALL DIS;調用顯示子程序 JNZ C2 LOOP C1;通過循環(huán)調用不斷刷新數(shù)碼管顯示 POP CX POP AX;彈出現(xiàn)場 PAUSE: CALL DIS;調用顯示子程序 MOV DX,MY8255_C;C口低4位為輸入 IN AL,DX;讀入C口的最低位的狀態(tài) TEST AL,01H
22、;0000 0001B JNZ PAUSE ;最低位為1暫停倒計時RESET1: MOV DX,MY8255_C;C口低4位為輸入 IN AL,DX TEST AL,02H;0000 0010B JNZ RESET2 ;第2位置1后執(zhí)行RESET2 DEC TIME ;減1倒計時 MOV CL,TIME CMP CL,0FFH ;當從初始值減到0后減1則值為0FFH,計數(shù)結束 JNZ DISPY ;倒計時未到0,繼續(xù)倒計時 JMP OUTPUT1;跳到流水燈點亮RESET2: JMP SHURU;重新開始倒計時OUTPUT1: PUSH CX;點亮流水燈,流水燈0滅1亮 MOV CX,7;循環(huán)
23、計數(shù)初值 MOV LA,80H;流水燈從左往右依次點亮P4: MOV AL,LA MOV DX,MY8255_A OUT DX,AL;通過A口輸出控制LED點亮 CALL DALLY ROR AL,1;不進位的循環(huán)右移 MOV LA,AL LOOP P4 MOV CX,8 MOV LB,01H;流水燈從右往左依次點亮P5: MOV AL,LB MOV DX,MY8255_A OUT DX,AL CALL DALLY ROL AL,1;不進位的循環(huán)左移 MOV LB,AL LOOP P5 JMP prompt;流水燈顯示結束跳轉到promptDALLY: PUSH CX;流水燈點亮延時函數(shù) PU
24、SH AX MOV CX,0FFFFHA1: MOV AX,4FFFHA2: DEC AX JNZ A2 LOOP A1 POP AX POP CXRET DIS PROC NEAR;數(shù)碼管顯示子程序 PUSH AX;保護現(xiàn)場 PUSH DX MOV SI,3000H;找到存數(shù)的緩沖區(qū) MOV AL,0BFH ;1011 1111B,選中X3數(shù)碼管 MOV DX,MY8255_C;選中PC口,進而選中數(shù)碼管 OUT DX,AL MOV AL,SI;取出緩沖區(qū)中存放的鍵值 XLAT;查表指令,將以BX為基地址,AL為位移量的字節(jié)存儲單元中的數(shù)賦給AL MOV DX,MY8255_B;寫入數(shù)碼管ADp OUT DX,AL CALL DALLY1;調用延時函數(shù) MOV AL,7FH ;0111 1111B,選中X4數(shù)碼管 MOV DX,MY8255_C;選中PC口,進而選中數(shù)碼管 OUT DX,AL MOV AL,SI+1;取出緩沖區(qū)中存放的鍵值 XLAT MOV DX,MY8255_B;寫入數(shù)碼管ADp OUT DX,AL CALL DALLY1;調用延時函數(shù) POP AX POP DXDIS ENDPDALLY1 PROC NEAR;數(shù)碼管顯示延時函數(shù) PUSH AX PUSH CX MOV CX,0FFHC3: MOV A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學初中說課稿
- 好朋友起玩說課稿
- 治療糖尿病周圍神經(jīng)病變
- 臨時行政主管
- 學校園區(qū)噴泉施工合同
- 精密儀器公司法務聘用合同
- 體育場館隔離墻安裝合同
- 市政排水工程級配碎石施工合同
- 綠色制造車間環(huán)保操作規(guī)程
- 2022年大學林業(yè)工程專業(yè)大學物理下冊期中考試試題B卷-附解析
- GB/T 11270.2-2002超硬磨料制品金剛石圓鋸片第2部分:燒結鋸片
- 統(tǒng)編版高中語文選擇性必修上冊各課知識點梳理
- 物業(yè)裝修管理(培訓課件)
- 機器人創(chuàng)新性教學平臺實踐與探索報告
- 專題:普世價值思潮課件
- 銷售目標的設定與管理培訓課件
- 【期末復習】概括與評析標題及角度-部編版道德與法治九年級上冊
- 醫(yī)美加盟模板課件
- 部編三年級上語文《17 古詩三首》優(yōu)質教學設計
- 甾體化合物的微生物轉化課件
- 乒乓球一級裁判培訓班規(guī)程講座課件
評論
0/150
提交評論