欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
我的單片機接口實驗:編碼鍵盤的設計及按鍵檢測程序
[打印本頁]
作者:
夏天的風@你
時間:
2020-6-7 09:41
標題:
我的單片機接口實驗:編碼鍵盤的設計及按鍵檢測程序
1.
連接實驗箱上的數碼管,編程在上面顯示數字
2017
2. 連接實驗箱上的鍵盤和數碼管,編寫程序,將鍵盤輸入值寫在數碼管的最右端,原來的數值,向左端移動。
3. 消除按鍵一次,輸入多次的情況
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
圖片1.png
(48 KB, 下載次數: 84)
下載附件
2020-6-7 09:37 上傳
單片機源程序如下:
ORG 0000H
MAIN: CLR P1.0 ;因為是共陰極的二極管,故當P1.0電平為低電平時,二極管會亮
MOV P0,#5BH ;2
LCALL D1MS ;延時
SETB P1.0 ;置位,不選中這一位
CLR P1.1 ;和上述方法一樣
MOV P0,#3FH ;0
LCALL D1MS;
SETB P1.1
CLR P1.2 ;和上述方法一樣
MOV P0,#06H ;1
LCALL D1MS
SETB P1.2
CLR P1.3 ;和上述方法一樣
MOV P0,#07H ;7
LCALL D1MS
SETB P1.3
LJMP MAIN ;循環顯示
D1MS: MOV R7,#02H
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
RET
END
2和3:
KBUF DATA 30H ;顯示緩沖區,存放要顯示的數據
ORG 0000H
LJMP START1
ORG 0100H
START1: LCALL KEY ;調用KEY,有沒有鍵按下
JC START4 ;判斷進位位,如果進位位為1,證明沒鍵按下
PUSH ACC ;A中存放的是鍵值的序號
MOV R0,#KBUF ;顯示器的位置左移
MOV R1,#KBUF+1
MOV R7,#7
START2: MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,START2
POP ACC
MOV @R0,A
;功能鍵的按鈕
CJNE A,#0FH,START4 ;判斷累加器的值是否是0F,如果不是跳轉到START4
START: MOV R0,#KBUF
MOV R7,#8
MOV A,#0
START0: MOV @R0,A
INC R0
DJNZ R7,START0
START4: LCALL DISP
SJMP START1
;①判斷有沒有鍵按下
KEY: MOV P1,#0FFH ;讓顯示器熄滅
MOV P3,#0FFH ;通過P3口讀入信息,提前送入1
MOV P0,#00H
MOV A,P3
ANL A,#0FH ;只要低四位的數據
CJNE A,#0FH,KEY1 ;判斷是不是全1,若全1,證明沒鍵按下,否則,證明有鍵按下,跳轉到KTY1
SJMP NOKEY
;②抖動問題
KEY1: CALL DELAY ;延時,先消除抖動
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY2 ;判斷是不是全1,若全1,證明是抖動,沒鍵按下,否則,是真正的有鍵按下
SJMP NOKEY
;③確實哪一列的鍵被按下
KEY2: MOV R6,#04H ;循環4次
MOV R5,#0FEH ;存放的是每一列應該輸入的值
KEY3: MOV P0,R5 ;P0.0為0
MOV A,P3 ;讀取P3口
ANL A,#0FH ;只要低四位
CJNE A,#0FH,KEY4 ;判斷是不是全1,若全1,證明此列沒鍵按下,順序執行,否則,在此列有鍵按下,轉到KEY4
MOV A,R5
RL A ;循環左移一位
MOV R5,A
DJNZ R6,KEY3 ;判斷4次循環是否結束,沒結束,繼續執行上述過程
SJMP NOKEY ;四次都結束,且中間沒有轉到KEY4,證明沒鍵按下
;④此列上有鍵按下,顯示鍵值
KEY4: SWAP A ;半字節交換,高4位有效
MOV B,A ;B存儲
MOV A,R5 ;R5是列值
ANL A,#0FH ;只要低四位
ORL B,A ;組合值,去查表
MOV DPTR,#TAB1
MOV R7,#16 ;共16個鍵,循環16次
MOV R5,#0 ;從第0個開始
KEY5: MOV A,R5
MOVC A,@A+DPTR ;讀取值
CJNE A,B,KEY7 ;判斷是否和獲得的組合值是否相等。相等,順序執行,否則,轉到KEY7
;⑤鍵是否抬起的問題
KEY6: MOV A,P3 ;等著鍵抬起
ANL A,#0FH ;只要低四位
CJNE A,#0FH,KEY6 ;不是0FH,證明沒抬起來
MOV A,R5 ;A中存放的是鍵值的序號
SJMP EXIT
KEY7: INC R5 ;序號加1,繼續循環
DJNZ R7,KEY5
NOKEY: SETB C ;進位位為1,證明沒鍵按下
EXIT: RET
;延時程序
DELAY: MOV R5,#02H
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R5,DL
RET
;顯示程序
DISP: MOV DPTR,#TAB
MOV R0,#KBUF ;存放要顯示的數據
MOV R7,#8 ;共8個字節
MOV R4,#1 ;存放字位
DISP0: MOV A,@R0 ;通過R0得到要顯示的值
MOVC A,@A+DPTR ;查表得到字型碼
MOV P1,A ;送到P1口顯示
MOV A,R4
MOV P0,A ;字位送到P0口
RL A ;左移一位
MOV R4,A ;又送到R4
LCALL DELAY ;延時
MOV P1,#0FFH ;關顯示
INC R0 ;R0加一
DJNZ R7,DISP0 ;判斷8位是否全部顯示,若沒有,則繼續顯示,否則返回
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,82H,0C6H,0A1H,86H,8EH ;共陽極字型碼
TAB1: DB 0EEH,0EDH,0EBH,0E7H,0DEH,0DDH,0DBH,0D7H,0BEH,0BDH,0BBH,0B7H,07EH,07DH,07BH,77H ;鍵值表
END
復制代碼
51hei.png
(5.11 KB, 下載次數: 73)
下載附件
2020-6-7 19:45 上傳
所有資料51hei提供下載:
實驗連接圖 源碼.zip
(18.43 KB, 下載次數: 12)
2020-6-7 09:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1