小鍵盤按鍵識(shí)別(微機(jī)原理課程設(shè)計(jì))_第1頁
小鍵盤按鍵識(shí)別(微機(jī)原理課程設(shè)計(jì))_第2頁
小鍵盤按鍵識(shí)別(微機(jī)原理課程設(shè)計(jì))_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余11頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告專業(yè):班級(jí):姓名:學(xué)號(hào):指導(dǎo)教師評(píng)語:成績(jī):簽名:年月日小鍵盤按鍵識(shí)別一課題任務(wù)與要求實(shí)驗(yàn)箱上有一個(gè) 24 鍵小鍵盤,出廠時(shí)按鍵接點(diǎn)已經(jīng)按圖所示連接。小 鍵盤有8根橫向引出線。實(shí)驗(yàn)前將8根橫向引出線與PALPA7相連,3根縱 向引出線與PBA PB2相連,再從“I/O 口地址譯碼器”選擇一個(gè)譯碼器輸出 連接到 8255的片選端,做好上述連接之后,就構(gòu)成了以 8255 為核心的鍵盤 輸入電路要求:在實(shí)際的自動(dòng)控制系統(tǒng)中,鍵盤輸入電路的作用是輸入數(shù)據(jù)(09, A F)或者輸入控制信號(hào)(G, M P, R, W X, Y, S)。實(shí)現(xiàn)上述功能的核心程 序是“按鍵識(shí)別”。

2、本實(shí)驗(yàn)要求設(shè)計(jì)按鍵識(shí)別程序, 當(dāng)按下小鍵盤上某一個(gè)鍵的時(shí)候, 主機(jī) 屏幕顯示閉合鍵的鍵名,按下小鍵盤“ R'鍵之后停止演示。二完成任務(wù)的方法或方案簡(jiǎn)介本程序顯示數(shù)字 0 到 9,剛剛開始提出兩中解決方案一是用跳轉(zhuǎn)法直接顯示數(shù)值,二是用查 找法間接顯示數(shù)值, 本程序是用第一種方案, 雖然程序多了些,但直觀容易理解, 故采納第 一種方案。DISPLAY 函數(shù)用來將 BUFFER 中的鍵值顯示在數(shù)碼管上。設(shè)定A 口方式0輸出,B 口方式0輸入。GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值, 并將它保存在 AL 中,如果輸入是R,則AL賦值為FFH;如果輸入非法字符,則 AL賦值為0AH

3、。設(shè)定如果是 R 則退出程序 .CHANGE 函數(shù)用來改變 BUFFER 中保存的鍵值, 將 BUFFER 中的鍵值移位, 最后一 位加入 AL 中的新鍵值。CLOSEALL 此函數(shù)用在退出程序時(shí)將數(shù)碼管關(guān)閉 .以上是主題函數(shù), 在設(shè)計(jì)過程中還碰到了一些細(xì)節(jié)問題, 例數(shù)碼管的顯示才用延遲 20MS 的 辦法解決,具體方案在 DISPLAY 函數(shù)中。實(shí)現(xiàn)系統(tǒng)1程序框圖:2、實(shí)驗(yàn)電路圖:510J 1 亠 3 A cJ rD J o 1 2 3 4 -LI- 6 7 bbbbbebe p p ppp ppp ppp pppppPCOPC1PC2P3P:PCSPC6PC7LED823數(shù)碼管顯示電路NA

4、NUSSisNuniiaW.7跡Di瑰站DImDftmRDWR削 MRES3C58J55inNODS3、8255方式選擇控制字A組方式:00 =方式001 =方式1、源程序:1X =方式A 口 101=輸入 0=輸出C上半口 10 :1=輸入 0 =輸出B組方式: 0 =方式01 =方式1B 口 10 :1 =輸入0 =輸出C下半口I0 :1 =輸入0 =輸出1D6D5D4D3D2D1D0TITLE LITTLEKEYBOARDSSEG SEGMENT PARA STACK 'STACK'DB 256 DUP (0)SSEG ENDSDSEG SEGMENTA_8255 EQU

5、 210HB_8255 EQU 211HCON_8255 EQU 213HBUFFER DB 6 DUP(0)HANG DB ?LIE DB ?NEWHANG DB ?NEWLIE DB ?TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,DSEG ENDSCSEG SEGMENTASSUME CS:CSEG , DS:DSEG,SS:SSEGSTART PROC NEARMOV AX,DSEGMOV DS,AXCALL CLOSEALL(關(guān)掉數(shù)碼管,防止因?yàn)樽畛鯏?shù)碼管有顯示而使程序執(zhí)行不正常。)CMPAGAIN:CALL DISPLAY(DIS

6、PLAY 函數(shù)用來將 BUFFER 中的鍵值顯示在數(shù)碼管上。 )MOV DX,CON_8255MOV AL,10000010BOUT DX,AL(設(shè)定A 口方式0輸出,B 口方式0輸入)AGAIN:CALL DISPLAYMOV DX,A_8255MOV AL,0OUT DX,AL ( 0PA7-PA0 )MOV DX,B_8255IN AL,DXAND AL,00000111B ( 取出 PB0 PB2CMP AL,00000111BJE AGAINMOV LIE,AL (將列值保存)CALL DELAY1 (延時(shí) 20ms)MOV DX,CON_8255MOV AL,10010000BOU

7、T DX,AL(預(yù)置 A 口方式 0 輸入, B 口方式 0 輸入)MOV DX,A_8255IN AL,DXMOV HANG ,AL (將行值保存)CALL GETINPUT(GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在 AL 中,如果輸入是 R, 則AL賦值為FFH ;如果輸入非法字符,則 AL賦值為OAH。CMP AL,0AHJE CMPAGAIN(如果是非法字符則跳回)CMP AL,0FFHJNE CONTINUE(如果是 R 則退出程序 .)CALL CLOSEALLMOV AH,4CHINT 21HCONTINUE:CALL CHANGE(CHANGE 函數(shù)用來

8、改變 BUFFER 中保存的鍵值 )MOV DX,CON_8255MOV AL,10000010BOUT DX,AL(設(shè)定A 口方式0輸出,B 口方式0輸入)LLL:CALL DISPLAYMOV DX,B_8255IN AL,DXAND AL,00000111B(取出 PB0PB2)CMP AL,00000111BJNE LLLJMP CMPAGAIN(不斷掃描 ,如果不松開按鍵,那么就循環(huán)等待;直到按鍵松開就跳回。)RETSTART ENDP*J(此函數(shù)用以延時(shí) 20MS )DELAY1 PROC NEARPUSH AXPUSH CXPUSH DXMOV AH,86HMOV CX,0MOV

9、 DX,20000INT 15HPOP DXPOP CXPOP AXRETDELAY1 ENDP*J(GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在 AL 中,如果輸入是 R, 則AL賦值為FFH ;如果輸入非法字符,則AL賦值為OAH。GETINPUT PROC NEARCMP LIE,00000110BJE LIE0CMP LIE,00000101BJE LIE1CMP LIE,00000011BJE LIE2MOV AL,0AHRETLIE2:CMP HANG,00010000BJE NEXTMOV AL,0AHRETNEXT:MOV AL,0FFHRETLIE0:CM

10、P HANG,01111111BJE KEY8CMP HANG ,10111111BJE KEY9MOV AL,0AHRETKEY8:MOV AL,8RETKEY9:MOV AL,9RETLIE1:CMP HANG,01111111BJE KEY0CMP HANG ,10111111BJE KEY1CMP HANG ,11011111BJE KEY2CMP HANG ,11101111BJE KEY3CMP HANG ,11110111BJE KEY4CMP HANG ,11111011BJE KEY5CMP HANG,11111101BJE KEY6CMP HANG ,11111110BJE

11、 KEY7MOV AL,0AHRETKEY0:MOV AL,0RETKEY1:MOV AL,1RETKEY2:MOV AL,2RETKEY3:MOV AL,3RETKEY4:MOV AL,4RETKEY5:MOV AL,5RETKEY6:MOV AL,6RETKEY7:MOV AL,7RETGETINPUT ENDP*J(CHANGE 函數(shù)用來改變 BUFFER 中保存的鍵值,將 BUFFER 中的鍵值移位,最后一位加 入 AL 中的新鍵值。 )CHANGE PROC NEARPUSH AXPUSH SIMOV SI,OFFSET BUFFERMOV AH,SI+1MOV SI,AHMOV A

12、H,SI+2MOV SI+1,AHMOV AH,SI+3MOV SI+2,AHMOV AH,SI+4MOV SI+3,AHMOV AH,SI+5MOV SI+4,AHMOV SI+5,ALPOP SIPOP AXRETCHANGE ENDP*J(DISPLAY 函數(shù)用來將 BUFFER 中的鍵值顯示在數(shù)碼管上。 )DISPLAY PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIMOV BX,OFFSET TABLEMOV SI,OFFSET BUFFERMOV CL,1XUNHUAN:MOV AL,SIXLATMOV DX,201HOUT DX,ALMO

13、V DX,200HMOV AL,CLOUT DX,ALMOV DX,200HMOV AL,0OUT DX,ALINC SISHL CL,1CMP CL,40HJNE XUNHUANPOP SIPOP DXPOP CXPOP BXPOP AXRETDISPLAY ENDP*(此函數(shù)用在退出程序時(shí)將數(shù)碼管關(guān)閉 .)CLOSEALL PROC NEARPUSH AXPUSH CXPUSH DXMOV CL,1XUNHUAN1:MOV DX,200HMOV AL,CLOUT DX,ALMOV AL,0OUT DX,ALSHL CL,1CMP CL,20HJNE XUNHUAN1POP DXPOP CXPOP AXRETCLOSEALL ENDPCSEG ENDEND START四、程序運(yùn)行結(jié)果分析:六實(shí)驗(yàn)總結(jié):1. 實(shí)驗(yàn)電路板上 8255的端口地址位210H 213H,這與書上給的不一樣,開始時(shí)在這 方面花費(fèi)了較多時(shí)間。2. 通過此次程序設(shè)計(jì),我對(duì)計(jì)算機(jī)讀取鍵盤值的過程有了一定的認(rèn)識(shí)。最開始編程序 時(shí)并沒有想到如果始終按同一個(gè)鍵不放, 數(shù)碼管上就會(huì)一下子出來很多字符。 調(diào)試時(shí)發(fā)現(xiàn)了 這個(gè)問題, 想到的解決方法有兩種, 一種是每一次按鍵后檢測(cè)鍵是否松開, 直到松開后再繼 續(xù)執(zhí)行下一次判斷;另一種是按鍵后延緩一個(gè)固定的時(shí)間(大約 0.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論