版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微機(jī)原理與接口技術(shù)課程設(shè)計報告專 業(yè):班級:姓 名:學(xué)號:指導(dǎo)教師評語:成績:簽名:年 月 日小鍵盤按鍵識別1 課 題任務(wù)與要求實驗箱上有一個24 鍵小鍵盤,出廠時按鍵接點(diǎn)已經(jīng)按圖所示連接。小鍵盤有8根橫向引出線。實驗前將8根橫向引出線與PAgPA7相連,3根縱 向引出線與PB0- PB2相連,再從“I/O 口地址譯碼器”選擇一個譯碼器輸出 連接到8255的片選端,做好上述連接之后,就構(gòu)成了以8255為核心的鍵盤輸入電路要求:在實際的自動控制系統(tǒng)中,鍵盤輸入電路的作用是輸入數(shù)據(jù)(09, A F)或者輸入;f5制信號(G, M P, R, W X, Y, S)。實現(xiàn)上述功能的核心程 序是“按鍵識
2、別”。本實驗要求設(shè)計按鍵識別程序,當(dāng)按下小鍵盤上某一個鍵的時候,主機(jī)屏幕顯示閉合鍵的鍵名,按下小鍵盤" R'鍵之后停止演示。2 完成任務(wù)的方法或方案簡介本程序顯示數(shù)字0 到 9,剛剛開始提出兩中解決方案一是用跳轉(zhuǎn)法直接顯示數(shù)值,二是用查找法間接顯示數(shù)值,本程序是用第一種方案,雖然程序多了些,但直觀容易理解,故采納第一種方案。DISPLAY 函數(shù)用來將BUFFER 中的鍵值顯示在數(shù)碼管上。設(shè)定 A 口方式 0 輸出 ,B 口方式 0 輸入。GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在AL 中, 如果輸入是R,則AL賦值為FFH;如果輸入非法字符,則 AL賦值
3、為0AH。設(shè)定如果是R 則退出程序.CHANGE 函數(shù)用來改變BUFFER 中保存的鍵值,將 BUFFER 中的鍵值移位,最后一位加入 AL 中的新鍵值。CLOSEALL 此函數(shù)用在退出程序時將數(shù)碼管關(guān)閉.以上是主題函數(shù),在設(shè)計過程中還碰到了一些細(xì)節(jié)問題,例數(shù)碼管的顯示才用延遲20MS 的辦法解決,具體方案在DISPLAY 函數(shù)中。3.實現(xiàn)系統(tǒng)1、程序框圖:2、實驗電路圖:wDIDiDiMDJDftDrRDWR前河曄CS5沁Sis Nuniia數(shù)碼管顯示電路o 1 2 3 4 -LI- 6 7PPP PPPPPMOV DX,A_825593、8255方式選擇控制字TITLE LITTLEKEY
4、BOARDSSEG SEGMENT PARA STACK 'STACK'DB 256 DUP (0)SSEG ENDSDSEG SEGMENTA_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 SEGMENTASSUME CS:CSEG , DS:DSEG,SS:SSEGSTART PROC NEA
5、RMOV AX,DSEGMOV DS,AXCALL CLOSEALL(關(guān)掉數(shù)碼管,防止因為最初數(shù)碼管有顯示而使程序執(zhí)行不正常。CMPAGAIN:CALL DISPLAY(DISPLAY 函數(shù)用來將BUFFER 中的鍵值顯示在數(shù)碼管上。)MOV DX,CON_8255MOV AL,10000010BOUT DX,AL(設(shè)定 A 口方式 0 輸出 ,B 口方式 0 輸入)AGAIN:CALL DISPLAYMOV AL,0OUT DX,AL ( 0 >PA7-PA0)MOV DX,B_8255IN AL,DXAND AL,00000111B ( 取出 PB0 PB2CMP AL,000001
6、11BJE AGAINMOV LIE,AL (將列值保存)CALL DELAY1 (延時20ms)MOV DX,CON_8255MOV AL,10010000BOUT DX,AL(預(yù)置 A 口方式 0 輸入, B 口方式 0 輸入)MOV DX,A_8255IN AL,DXMOV HANG ,AL (將行值保存)CALL GETINPUT( GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在AL 中,如果輸入是R,則AL賦值為FFH;如果輸入非法字符,則 AL賦值為0AH。)CMP AL,0AHJE CMPAGAIN(如果是非法字符則跳回)CMP AL,0FFHJNE CONTI
7、NUE(如果是R 則退出程序.)CALL CLOSEALLMOV AH,4CHINT 21HCONTINUE:CALL CHANGE(CHANGE 函數(shù)用來改變BUFFER 中保存的鍵值)MOV DX,CON_8255MOV AL,10000010BOUT DX,AL(設(shè)定 A 口方式 0 輸出 ,B 口方式 0 輸入)LLL:CALL DISPLAYMOV DX,B_8255IN AL,DXAND AL,00000111B(取出PB0 PB2)CMP AL,00000111BJNE LLLJMP CMPAGAIN(不斷掃描,如果不松開按鍵,那么就循環(huán)等待;直到按鍵松開就跳回。RETSTART
8、 ENDP;(此函數(shù)用以延時20MS)DELAY1 PROC NEARPUSH AXPUSH CXPUSH DXMOV AH,86HMOV CX,0MOV DX,20000INT 15HPOP DXPOP CXPOP AXRETDELAY1 ENDP;( GETINPUT 函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在AL 中,如果輸入是R,則AL賦值為FFH;如果輸入非法字符,則 AL賦值為0AH。)GETINPUT PROC NEARCMP LIE,00000110BJE LIE0CMP LIE,00000101BJE LIE1CMP LIE,00000011BJE LIE2MOV AL,
9、0AHRETLIE2:CMP HANG,00010000BJE NEXTMOV AL,0AHRETNEXT:MOV AL,0FFHRETLIE0:CMP HANG,01111111BJE KEY8CMP HANG ,10111111BJE KEY9MOV AL,0AHRETKEY8:MOV AL,8RETKEY9:MOV AL,9LIE1:CMP HANG,01111111BJE KEY0CMP HANG ,10111111BJE KEY1CMP HANG ,11011111BJE KEY2CMP HANG ,11101111BJE KEY3CMP HANG ,11110111BJE KEY4
10、CMP HANG ,11111011BJE KEY5CMP HANG,11111101BJE KEY6CMP HANG ,11111110BJE KEY7MOV AL,0AHRETKEY0:MOV AL,0RETKEY1:MOV AL,1RETKEY2:MOV AL,2RETKEY3:MOV AL,3RETKEY4:MOV AL,4RETKEY5:MOV AL,5RET13KEY6:MOV AL,6RETKEY7:MOV AL,7RETGETINPUT ENDP;(CHANGE 函數(shù)用來改變BUFFER 中保存的鍵值,將BUFFER 中的鍵值移位,最后一位加入 AL 中的新鍵值。)CHANGE
11、 PROC NEARPUSH AXPUSH SIMOV SI,OFFSET BUFFERMOV AH,SI+1MOV SI,AHMOV AH,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;(DISPLAY 函數(shù)用來將BUFFER 中的鍵值顯示在數(shù)碼管上。)PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIMOV BX,OFFSET TABLEMOV SI,OFFSET BUFFERMO
12、V CL,1XUNHUAN:MOV AL,SIXLATMOV DX,201HOUT DX,ALMOV DX,200HMOV AL,CLOUT DX,ALMOV DX,200HMOV AL,0OUT DX,ALINC SISHL CL,1CMP CL,40HJNE XUNHUANPOP SIPOP DXPOP CXPOP BXPOP AXRETDISPLAY ENDP15*(此函數(shù)用在退出程序時將數(shù)碼管關(guān)閉.)CLOSEALL PROC NEARPUSH AXPUSH CXPUSH DXMOV CL,1XUNHUAN1:MOV DX,200HMOV AL,CLOUT DX,ALMOV AL,0O
13、UT DX,ALSHL CL,1CMP CL,20HJNE XUNHUAN1POP DXPOP CXPOP AXRETCLOSEALL ENDPCSEG ENDEND START四、程序運(yùn)行結(jié)果分析:六實驗總結(jié):1.實驗電路板上 8255的端口地址位210H 213H,這與書上給的不一樣,開始時在這 方面花費(fèi)了較多時間。2通過此次程序設(shè)計,我對計算機(jī)讀取鍵盤值的過程有了一定的認(rèn)識。最開始編程序時并沒有想到如果始終按同一個鍵不放,調(diào)試時發(fā)現(xiàn)了數(shù)碼管上就會一下子出來很多字符。這個問題,想到的解決方法有兩種,一種是每一次按鍵后檢測鍵是否松開,直到松開后再繼續(xù)執(zhí)行下一次判斷;另一種是按鍵后延緩一個固定的時間(大約0.2 秒)再判斷(計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度網(wǎng)絡(luò)游戲試用及用戶行為分析合同4篇
- 2024藝術(shù)品買賣合同作品真?zhèn)渭皺?quán)利證明
- 2025年度個人二手房買賣合同交易風(fēng)險提示與防范措施合同
- 2025年度高校后勤集團(tuán)食堂承包與便利店管理合同3篇
- 2025年度數(shù)字經(jīng)濟(jì)領(lǐng)域派遣員工勞動合同及網(wǎng)絡(luò)安全協(xié)議3篇
- 二零二五年度出國勞務(wù)中介服務(wù)收費(fèi)標(biāo)準(zhǔn)規(guī)范合同7篇
- 2025年度勞動合同終止及離職員工經(jīng)濟(jì)補(bǔ)償金支付協(xié)議4篇
- 連云港市個人租房合同書
- 2025年度蟲草養(yǎng)生產(chǎn)品原料采購合同4篇
- 2025年度船舶光船租賃合同船舶租賃項目合同終止后的船舶處置協(xié)議4篇
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計)(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 單位往個人轉(zhuǎn)賬的合同(2篇)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運(yùn)動能力測評規(guī)范
- 高危妊娠的評估和護(hù)理
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會成長相冊展示(共二篇)
評論
0/150
提交評論