小鍵盤(pán)按鍵識(shí)別微機(jī)原理課程設(shè)計(jì)報(bào)告_第1頁(yè)
小鍵盤(pán)按鍵識(shí)別微機(jī)原理課程設(shè)計(jì)報(bào)告_第2頁(yè)
小鍵盤(pán)按鍵識(shí)別微機(jī)原理課程設(shè)計(jì)報(bào)告_第3頁(yè)
小鍵盤(pán)按鍵識(shí)別微機(jī)原理課程設(shè)計(jì)報(bào)告_第4頁(yè)
小鍵盤(pán)按鍵識(shí)別微機(jī)原理課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、非法字符,則 AL 賦值為 0AH。設(shè)定如果是 R 則退出程序.CHANGE 函數(shù)用來(lái)改變 BUFFER 中保存的鍵值,將 BUFFER 中的鍵值移位,最后一位參加 AL 中的新鍵值。CLOSEALL 此函數(shù)用在退出程序時(shí)將數(shù)碼管關(guān)閉.以上是主題函數(shù),在設(shè)計(jì)過(guò)程中還碰到了一些細(xì)節(jié)問(wèn)題,例數(shù)碼管的顯示才用延遲 20MS 的方法解決,具體方案在 DISPLAY 函數(shù)中。三實(shí)現(xiàn)系統(tǒng)1 1、程序框圖、程序框圖: :-. z預(yù)置:A 口為方式 0 輸出 B 口為方式 0 輸入0PA7-PA0PB2-PB0 AHAH=7?延時(shí) 20ms預(yù)置:B 口為方式 0 輸出A 口為方式 0 輸入列值 PB2-PB0

4、PA7-PA0 AL根據(jù) A*內(nèi)容,查找鍵值表,顯示相應(yīng)的鍵值。是 R.完畢演示2 2、實(shí)驗(yàn)電路圖:、實(shí)驗(yàn)電路圖:3 3、82558255 方式選擇控制字方式選擇控制字 1 D6 D5 D4 D3 D2 D1 D0方式選擇控制字標(biāo)志A 組方式:00方式 001方式 11*方式 2A 口 IO1輸入0輸出C 上半口 IO:1輸入0輸出B 組方式:0方式 01方式 1B 口IO:1輸入0輸出C 下半口 IO:1=輸入0輸出 -. z4 4、源程序:、源程序:TITLE LITTLEKEYBOARDSSEG SEGMENT PARA STACK STACK DB 256 DUP (0)SSEG EN

5、DSDSEG SEGMENT A_8255 EQU 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 SEGMENT ASSUMECS:CSEG, DS:DSEG,SS:SSEG START PROC NEAR MOV A*,DSEG MOV DS,A*CALL CLOSEALL(關(guān)掉數(shù)碼管,防止因?yàn)樽畛鯏?shù)碼管有顯示而使程序執(zhí)行不正

6、常。)CMPAGAIN: CALL DISPLAY(DISPLAY 函數(shù)用來(lái)將 BUFFER 中的鍵值顯示在數(shù)碼管上。)MOV D*,CON_8255MOV AL,10000010BOUT D*,AL 設(shè)定 A 口方式 0 輸出,B 口方式 0 輸入-. zAGAIN: CALL DISPLAY MOV D*,A_8255 MOV AL,0 OUT D*,AL 0PA7-PA0 MOV D*,B_8255 IN AL,D*AND AL,00000111B (取出 PB0PB2CMP AL,00000111B JE AGAIN MOV LIE,AL將列值保存 CALL DELAY1延時(shí) 20ms

7、 MOV D*,CON_8255MOV AL,10010000BOUT D*,AL預(yù)置 A 口方式 0 輸入,B 口方式 0 輸入 MOV D*,A_8255 IN AL,D* MOV HANG,AL將行值保存CALL GETINPUTGETINPUT 函數(shù)通過(guò)行值和列值查出輸入的鍵值,并將它保存在 AL 中,如果輸入是 R,則AL 賦值為 FFH;如果輸入非法字符,則 AL 賦值為 0AH。 CMP AL,0AHJE CMPAGAIN如果是非法字符則跳回 CMP AL,0FFHJNE CONTINUE如果是 R 則退出程序. CALL CLOSEALL MOV AH,4CH-. z INT

8、21HCONTINUE:CALL CHANGE(CHANGE 函數(shù)用來(lái)改變 BUFFER 中保存的鍵值) MOV D*,CON_8255MOV AL,10000010BOUT D*,AL 設(shè)定 A 口方式 0 輸出,B 口方式 0 輸入LLL:CALL DISPLAYMOV D*,B_8255IN AL,D*AND AL,00000111B (取出 PB0PB2)CMP AL,00000111BJNE LLLJMP CMPAGAIN(不斷掃描,如果不松開(kāi)按鍵,則就循環(huán)等待;直到按鍵松開(kāi)就跳回。) RETSTART ENDP;*此函數(shù)用以延時(shí) 20MSDELAY1 PROC NEAR PUSH

9、A* PUSH C* PUSH D* MOV AH,86H MOV C*,0 MOV D*,20000 INT 15H-. z POP D* POP C* POP A*RETDELAY1 ENDP;*GETINPUT 函數(shù)通過(guò)行值和列值查出輸入的鍵值,并將它保存在 AL 中,如果輸入是 R,則AL 賦值為 FFH;如果輸入非法字符,則 AL 賦值為 0AH。 GETINPUT PROC NEAR CMP LIE,00000110B JE LIE0 CMP LIE,00000101B JE LIE1 CMP LIE,00000011B JE LIE2 MOV AL,0AH RETLIE2:CMP

10、 HANG,00010000B JE NE*T MOV AL,0AH RETNE*T:MOV AL,0FFH RETLIE0:CMP HANG,01111111B JE KEY8 CMP HANG,10111111B JE KEY9 MOV AL,0AH RETKEY8:MOV AL,8-. z RETKEY9:MOV AL,9 RETLIE1:CMP HANG,01111111B JE KEY0 CMP HANG,10111111B JE KEY1 CMP HANG,11011111B JE KEY2 CMP HANG,11101111B JE KEY3 CMP HANG,11110111B

11、 JE KEY4 CMP HANG,11111011B JE KEY5CMP HANG,11111101B JE KEY6 CMP HANG,11111110B JE KEY7 MOV AL,0AH RETKEY0:MOV AL,0 RETKEY1:MOV AL,1 RETKEY2:MOV AL,2 RETKEY3:MOV AL,3 RETKEY4:MOV AL,4-. z RETKEY5:MOV AL,5 RETKEY6:MOV AL,6 RETKEY7:MOV AL,7 RETGETINPUT ENDP;*(CHANGE 函數(shù)用來(lái)改變 BUFFER 中保存的鍵值,將 BUFFER 中的鍵值

12、移位,最后一位參加 AL中的新鍵值。)CHANGE PROC NEAR PUSH A* PUSH SI MOV SI,OFFSET BUFFER MOV AH,SI+1 MOV SI,AH MOV AH,SI+2 MOV SI+1,AH MOV AH,SI+3 MOV SI+2,AH MOV AH,SI+4 MOV SI+3,AH MOV AH,SI+5 MOV SI+4,AH MOV SI+5,AL POP SI POP A*RETCHANGE ENDP-. z;*(DISPLAY 函數(shù)用來(lái)將 BUFFER 中的鍵值顯示在數(shù)碼管上。)DISPLAY PROC NEAR PUSH A* PUS

13、H B* PUSH C* PUSH D* PUSH SI MOV B*,OFFSET TABLE MOV SI,OFFSET BUFFER MOV CL,1*UNHUAN: MOV AL,SI *LAT MOV D*,201H OUT D*,AL MOV D*,200H MOV AL,CL OUT D*,AL MOV D*,200H MOV AL,0 OUT D*,AL INC SI SHL CL,1 CMP CL,40H JNE *UNHUAN POP SI POP D* POP C* POP B*-. z POP A* RETDISPLAY ENDP;*此函數(shù)用在退出程序時(shí)將數(shù)碼管關(guān)閉.C

14、LOSEALL PROC NEAR PUSH A* PUSH C* PUSH D* MOV CL,1*UNHUAN1: MOV D*,200H MOV AL,CL OUT D*,AL MOV AL,0 OUT D*,AL SHL CL,1 CMP CL,20H JNE *UNHUAN1 POP D* POP C* POP A* RETCLOSEALL ENDPCSEG END END START四、程序運(yùn)行結(jié)果分析:六實(shí)驗(yàn)總結(jié):六實(shí)驗(yàn)總結(jié): 1實(shí)驗(yàn)電路板上 8255 的端口地址位 210H213H,這與書(shū)上給的不一樣,開(kāi)場(chǎng)時(shí)在這方面花費(fèi)了較多時(shí)間。-. z2通過(guò)此次程序設(shè)計(jì),我對(duì)計(jì)算機(jī)讀取鍵盤(pán)值的過(guò)程有了一定的認(rèn)識(shí)。最開(kāi)場(chǎng)編程序時(shí)并沒(méi)有想到如果始終按同一個(gè)鍵不放,數(shù)碼管上就會(huì)一下子出來(lái)很多字符。調(diào)試時(shí)發(fā)現(xiàn)了這個(gè)問(wèn)題,想到的解決方法有兩種,一種是每一次按鍵后檢測(cè)鍵是否松開(kāi),直到松開(kāi)后再繼續(xù)執(zhí)行下一次判斷;另一種

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論