




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于8086與Proteus仿真的4*4鍵盤計算器的設(shè)計一、設(shè)計目的本次課程設(shè)計的實驗目的是通過該實驗掌握較復雜程序的設(shè)計。能夠獨立完成用程序?qū)?086、8255控制鍵盤和LED顯示的控制,完成計算器加減法的應用。獨立編寫程序,明白和掌握程序的原理和實現(xiàn)方式。為以后的設(shè)計提供經(jīng)驗。學習和掌握計算機中常用接口電路的應用和設(shè)計技術(shù),充分認識理論知識對應用技術(shù)的指導性作用,進一步加強理論知識與應用相結(jié)合的實踐和鍛煉。通過這次設(shè)計實踐能夠進一步加深對專業(yè)知識和理論知識學習的認識和理解,使自己的設(shè)計水平和對所學的知識的應用能力以及分析問題解決問題的能力得到全面提高。二、 設(shè)計內(nèi)容 設(shè)計計算器,要求至少能
2、完成多位數(shù)的加減乘除運算。獨立完成用程序?qū)?086、8255控制鍵盤和LED顯示的控制,完成計算器加減乘除的應用。三、 設(shè)計原理與硬件電路設(shè)計的思路是:首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對輸入鍵的數(shù)值,通過調(diào)用子程序完成數(shù)據(jù)的儲存或者是加減的運算。運算完成后將運算的結(jié)果儲存并顯示到LED顯示器上。各部分硬件功能: 可編程并行通信接口芯片8255A 8255A內(nèi)部結(jié)構(gòu):1. 并行輸入/輸出端口A,B,C 8255A內(nèi)部包括三個8位的輸入輸出端口,分別是端口A、端口B、端口C,相應信號線是PA7PA0、PB7PB0、PC7PC0。
3、端口都是8位,都可以作為輸入或輸出。通常將端口A和端口B定義為輸入/輸出的數(shù)據(jù)端口,而端口C則既可以作數(shù)據(jù)端口,又可以作為端口A和端口B的狀態(tài)和控制信息的傳送端口。2.A組和B組控制部件端口A和端口C的高4位(PC7PC4)構(gòu)成A組;由A組控制部件實現(xiàn)控制功能。 端口B和端口C的低4位(PC3PC0)構(gòu)成B組;由B組控制部件實現(xiàn)控制功能。 A組和B組利用各自的控制單元來接收讀寫控制部件的命令和CPU通過數(shù)據(jù)總線(D0D7)送來的控制字,并根據(jù)他們來定義各個端口的操作方式。3. 數(shù)據(jù)總線緩沖存儲器三態(tài)雙向8位緩沖器,是8255A與8086CPU之間的數(shù)據(jù)接口。與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)
4、信息都是通過該緩沖器進行傳送。4. 讀/寫控制部件 8255A完成讀/寫控制功能的部件。能接收CPU的控制命令,并根據(jù)控制命令向各個功能部件發(fā)出操作指令。CS 片選信號:由CPU輸入,有效時表示該8255A被選中。 RD, WR 讀、寫控制信號:由CPU輸入。RD有效表示CPU讀8255A,WR有效表示CPU寫8255A。RESET 復位信號:由CPU輸入。RESET信號有效,清除8255A中所有控制字寄存器內(nèi)容,并將各個端口置成輸入方式。定義工作方式控制字:工作方式0:8255A中各端口的基本輸入/輸出方式。5.鍵盤輸入模塊鍵盤是常用信息輸入元件,其實鍵盤也是由一個個按鈕組成,如果是獨立按鈕
5、的話必須要需要一個I/O口對它進行檢測,而鍵盤往往這需要鍵盤按鈕數(shù)一半的I/O口數(shù)對它進行檢測,也許對一個比較簡單的系統(tǒng)I/O口數(shù)一般不是問題,但對于一個大型、復雜的系統(tǒng)來說I/O資源就顯得非常珍貴了,盡量減少I/O使用是非常利于降低成本,另外一方面鍵盤比用獨立按鍵要美觀,這也是鍵盤能夠長期得到人們青睞的原因,可是硬件上的節(jié)省必然導致軟件上編程的復雜,那就來看看鍵盤到底使軟件編程有多復雜?下圖是一個4*4鍵盤的結(jié)構(gòu)圖,它是四條I/O線作為行線,四條I/O線作為列線組成的鍵盤。在鍵盤的行線和列線的每一個交點上,設(shè)置一個按鍵,這樣鍵盤中按鍵的個數(shù)是4*4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單盤及系
6、統(tǒng)中I/O口的利用率。于是將鍵盤接8255A的PC口,至于為什么選擇PC是有原因的,進行鍵盤掃描一般要求有一部分的I/O口的工作方式是輸入,另一部分I/O是輸出,具體到4*4鍵盤則要求4個I/O口輸入,另外4個輸出,這一點PC口剛好符合,而PA、PB口要么全部輸入或輸出,所以只能是PC口接鍵盤。4*4鍵盤結(jié)構(gòu)圖五、設(shè)計流程圖六、實驗程序 DATA SEGMENT X DB ?,?,?,? ;存放數(shù)據(jù)的每一位 X1 DW ? ;存放第一個數(shù)據(jù)值 X2 DW ? ;存放第二個數(shù)據(jù)值 Y DW ? ;存放運算結(jié)果 S DB ? ;存放運算符號值 E DB ? ;按下等號鍵標記 CC DB ? ;存放
7、運算數(shù)據(jù)位數(shù) H DB 0 ;存放按鍵行號 L DB 0 ;存放按鍵列號 DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;段碼表DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,90H ;設(shè)置為A口輸入,B口輸出,C口輸出 OUT 46H,AL MOV DI,OFFSET X+3 ;DI指向X的高位 KKK: CALL KEY ;掃描按鍵 JMP KKK;以下為按鍵掃描子程序,程
8、序返回后,在變量H和L中存放當前按鍵的行列號KEY PROC CHECK: CALL DISP ;等待按鍵按下的同時進行顯示 MOV AL,0F0H ;所有行輸出低電平 OUT 44H,AL IN AL,40H CMP AL,0FFH ;讀列值 JZ CHECK ;若都為高電平則無鍵按下,等待 MOV CX,50 LOOP $ ;延時消抖 IN AL,DX ;重讀列值 CMP AL,0FFH JZ CHECK ;無鍵按下一直等待 MOV H,0 ;有鍵按下,先把行列號變量清0 MOV L,0 MOV BL,01H MOV BH,0FEH ;掃描法讀鍵值:從第一行開始測試,即PC0輸出低電平 N
9、EXT: MOV AL,BH OUT 44H,AL NEXTH: IN AL,40H ;讀列值,判斷是第幾列有鍵按下 TEST AL,BL ;從第一列開始判斷 JZ WAIT0 ROL BL,1 CMP BL,10H ;當前行狀態(tài)下沒有任何列有鍵按下,則轉(zhuǎn)為對下一行的測試 JZ NEXTL INC H ;每判斷一列,列號加1 JMP NEXTH ;再對下一列進行判斷 NEXTL: MOV H,0 MOV BL,01H ROL BH,1 ;對下一行測試,讓下一個PC口輸出低電平 CMP BH,0EFH JZ EXIT INC L JMP NEXTWAIT0: IN AL,40H ;若有鍵按下,則
10、等該按鍵松開后再計算鍵值 CMP AL,0FFH JNZ WAIT0 MOV CX,50 LOOP $ ;延時消抖 IN AL,40H CMP AL,0FFH JNZ WAIT0 CALL KEYVALUE ;調(diào)計算鍵值子程序 EXIT: RET KEY ENDP ;以下為計算鍵值子程序,通過行列號計算鍵值(鍵值=列號*4+行號) ;鍵值存放在DL寄存器中 KEYVALUE PROC MOV DL,L MOV DH,H SHL DL,1 SHL DL,1 ;列號乘4 ADD DL,DH CMP DL,9 ;按下的是數(shù)字鍵 JNG NUM_CALL CMP DL,14 JL CONT_CALL
11、;按下的是運算鍵 CMP DL,14 JZ OUTP_CALL ;按下的是等于鍵 CMP DL,15 JZ CLR_CALL ;按下的是清除鍵 NUM_CALL: CALL NUMBER ;調(diào)數(shù)字鍵處理子程序 JMP EXIT1 CONT_CALL: MOV S,DL ;存放運算鍵的鍵值 MOV E,0 CALL COUNT ;調(diào)運算鍵處理子程序,計算第一個加數(shù) JMP EXIT1 OUTP_CALL: CALL OUTP ;調(diào)等號鍵處理子程序 JMP EXIT1 CLR_CALL: CALL CLEAR ;調(diào)清除鍵處理子程序 EXIT1: RET KEYVALUE ENDP ;以下為清除鍵處
12、理子程序,按下清除鍵后,X變量全部清0 CLEAR PROC MOV X3,0 MOV X2,0 MOV X1,0 MOV X0,0 CALL BITP RET CLEAR ENDP;以下為等號鍵處理子程序,該子程序負責將第二個運算數(shù)據(jù)的數(shù)值計算出來存入X2變量;并根據(jù)運算符號,調(diào)用相應的運算子程序 OUTP PROC PUSH AX PUSH DX PUSH BX INC E CALL COUNT ;調(diào)運算鍵處理子程序,計算第二個運算數(shù)據(jù) CMP S,10 JZ ADD_CALL ;運算符為加號,則調(diào)用加法子程序 CMP S,11 JZ SUB_CALL ;運算符為減號,則調(diào)用減法子程序 C
13、MP S,12 JZ MUL_CALL ;運算符為乘號,則調(diào)用乘法子程序 CMP S,13 CALL DIVP ;運算符為除號,則調(diào)用除法子程序 JMP STORE1 ADD_CALL: CALL ADDP JMP STORE1 SUB_CALL: CALL SUBP JMP STORE1 MUL_CALL: CALL MULP STORE1: MOV AX,Y ;以下程序?qū)⒏鬟\算子程序返回的運算結(jié)果,按位分解,送入X變量 MOV DX,0 MOV BX,1000 DIV BX MOV X0, AL MOV AX,DX MOV BL,100 DIV BL MOV X1,AL MOV AL,AH
14、 MOV AH,0 MOV BL,10 DIV BL MOV X2,AL MOV X3,AH POP BX POP DX POP AX RET OUTP ENDP;以下為運算鍵處理子程序,該程序?qū)⒌谝粋€運算數(shù)據(jù)的數(shù)值計算出來并存入X1變量;或者將第二個運算數(shù)據(jù)的數(shù)值計算出來并存入X2變量;將運算符的值存入S變量 COUNT PROC PUSH AX PUSH BX PUSH DX MOV DX,0 CALL BITP ;測試X中的數(shù)據(jù)是多少位 CMP CC,4 ;輸入的數(shù)據(jù)是4位數(shù) ? JZ C4 CMP CC,3 ;輸入的數(shù)據(jù)是3位數(shù) ? JZ C3 CMP CC,2 ;輸入的數(shù)據(jù)是2位數(shù)
15、? JZ C2 JMP C1 ;輸入的數(shù)據(jù)是1位數(shù) ? C4: MOV AX,0 MOV AL,X0 MOV BX,1000 MUL BX MOV DX,AX C3: MOV AL,X1 MOV BL,100 MUL BL ADD DX,AX C2: MOV AL,X2 MOV BL,10 MUL BL ADD DX,AX C1: MOV AL,X3 MOV AH,0 ADD DX,AX CMP E,1 JNZ X1_S MOV X2,DX ;按下的是等號,則將第二個運算數(shù)據(jù)的值存入X2變量 JMP EXIT3 X1_S: MOV X1,DX ;按下的是運算符號,則將第一個運算數(shù)據(jù)的值存X1變
16、量 MOV X3,0 ;清空X變量 MOV X2,0 MOV X1,0 MOV X0,0 EXIT3: POP DX POP BX POP AX RET COUNT ENDP;以下為數(shù)字鍵處理子程序;該程序,將輸入的數(shù)據(jù)按位存放在X變量中,并由CC記錄數(shù)據(jù)的位數(shù) NUMBER PROC CMP E,1 JNZ CONTINUE MOV E,0 CALL CLEAR CONTINUE: CMP CC,0 ;目前數(shù)據(jù)為0位,即沒有數(shù)據(jù),則轉(zhuǎn)到SSS JZ SSS;若已有數(shù)據(jù),以下程序?qū)左移8位。;例如:先輸入“1”,當再輸入2時,;先要將“1”從個位移到十位,然后再將“2”存放到個位 PUSH
17、AX PUSH DX MOV AL,X3 MOV AH,X2 MOV DL,X1 MOV DH,X0 MOV CX,8 LL: SHL AX, 1 RCL DX,1 LOOP LL MOV X3,AL MOV X2,AH MOV X1,DL MOV X0,DH POP DX POP AX SSS: MOV DI,DL ;將當前鍵入的數(shù)據(jù)存放到X的最低位 INC CC ;數(shù)據(jù)位數(shù)加1 CMP CC,4 ;判斷數(shù)據(jù)位數(shù) JNG EXIT2 MOV CC,0 ;如果數(shù)據(jù)超過4位,重新從最低位開始存放 MOV X2,0 MOV X1,0 MOV X0,0 EXIT2: CALL DISP ;調(diào)顯示子程
18、序,顯示輸入的數(shù)據(jù) RET NUMBER ENDP ;加法子程序 ADDP PROC PUSH AX MOV AX,X1 ADD AX,X2 MOV Y,AX POP AX RET ADDP ENDP;減法子程序 SUBP PROC PUSH AX MOV AX,X1 SUB AX,X2 MOV Y,AX POP AX RET SUBP ENDP;乘法子程序 MULP PROC PUSH AX PUSH DX MOV AX,X1 MOV DX,X2 MUL DX MOV Y,AX POP DX POP AX RET MULP ENDP;除法子程序 DIVP PROC PUSH AX PUSH
19、BX PUSH DX MOV DX,0 MOV AX,X1 MOV BX,X2 DIV BX MOV Y,AX POP DX POP BX POP AX RET DIVP ENDP ;顯示子程序 ,將X中的數(shù)值按位顯示出來 DISP PROC PUSH BX PUSH AX MOV BH,0 LEA SI,DISCODE CALL BITP ;測試X位數(shù) CMP CC,4 JZ QIAN CMP CC,3 JZ BAI CMP CC,2 JZ SHI CMP CC,1 JMP G JMP NONE QIAN: MOV AH,11100000B ;從第4位開始顯示 MOV AL,AH OUT 4
20、4H,AL MOV BL,X0 MOV AL,SI+BX OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL BAI: MOV AH,11010000B ;從第3位開始顯示 MOV AL,AH OUT 44H,AL MOV BL,X1 MOV AL,SI+BX OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL SHI: MOV AH,10110000B ;從第2位開始顯示 MOV AL,AH OUT 44H,AL MOV BL,X2 MOV AL,SI+BX OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL G: MOV AH,01110000B ;從第1位開始顯示 MOV AL,AH OUT 44H,AL MOV BL,X3 MOV AL,SI+BX OUT 42H,AL CALL DELY JMP EXIT4 NONE: MOV AL,0 ;X中沒有數(shù)據(jù),不顯示 OUT 42H,AL EXIT4: POP AX POP BX RET DISP ENDP;分析數(shù)據(jù)位數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聘請會計師協(xié)議書
- 西咸區(qū)拆遷安置協(xié)議書
- 民家庭寄養(yǎng)協(xié)議書
- 購房共有人協(xié)議書
- 工程結(jié)算終協(xié)議書
- 果酷鮮果切協(xié)議書
- 老人由子女撫養(yǎng)協(xié)議書
- 生物修復技術(shù)聯(lián)合應用行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 生物絮凝劑行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 電子光學透明材料企業(yè)制定與實施新質(zhì)生產(chǎn)力項目商業(yè)計劃書
- 【甲子光年】2024自動駕駛行業(yè)報告-“端到端”漸行漸近
- DL∕T 5551-2018 架空輸電線路荷載規(guī)范
- 江蘇省常州市重點中學2025屆高考歷史三模試卷含解析
- 小學五年級下冊道德與法治期末測試卷帶答案【考試直接用】
- 甘肅省蘭州市城七里河區(qū)-2023-2024學年六年級下學期小學期末畢業(yè)測試語文試卷
- 《裝飾材料與施工》考試復習題庫(含答案)
- 中小學生民法典主題班會-民法典宣講課件
- 第一單元大單元教學設(shè)計(表格式) 2023-2024學年統(tǒng)編版語文八年級下冊
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- 小學高段學生數(shù)學應用意識培養(yǎng)的實踐研究 開題報告
- GB/T 17592-2024紡織品禁用偶氮染料的測定
評論
0/150
提交評論