輸出入埠進階應用
DESCRIPTION
輸出入埠進階應用. 第四章. 本章內容. 硬體部分 : 8051 的省電模式 。 74138 、 7447 、 4×4 鍵盤、七節顯示器模組等 。 指令部分: 詳細說明算術運算指令 。 程式與實作部分: 鍵盤掃瞄程式、七節顯示器掃瞄程式、編碼與查表法等 。. 8051 之時鐘脈波電路. 8051 之省電模式. 閒置模式. 8051 之省電模式. 功率下降模式. 8051 之省電模式. PCON 暫存器. 4x4 鍵盤之內部結構. tack switch 之結構. 由 tack switch 所構成之 4 4 鍵盤. 連接提升電阻. 4x4 鍵盤. - PowerPoint PPT PresentationTRANSCRIPT
112/04/20 例說8051 4-1
yiher
輸出入埠進階應用
第四章
112/04/20 例說8051 4-2
yiher
本章內容 •硬體部分: 8051 的省電模式 。
74138 、 7447 、 4×4 鍵盤、七節顯示器模組等 。
• 指令部分:詳細說明算術運算指令 。•程式與實作部分:鍵盤掃瞄程式、七節顯示器掃瞄程式、編碼與查表法等 。
112/04/20 例說8051 4-3
yiher
8051 之時鐘脈波電路
112/04/20 例說8051 4-4
yiher
8051 之省電模式
閒置模式
112/04/20 例說8051 4-5
yiher
8051 之省電模式
功率下降模式
112/04/20 例說8051 4-6
yiher
8051 之省電模式PCON 暫存器
112/04/20 例說8051 4-7
yiher
4x4 鍵盤之內部結構
112/04/20 例說8051 4-8
yiher
tack switch 之結構
112/04/20 例說8051 4-9
yiher
由 tack switch 所構成之 44 鍵盤
112/04/20 例說8051 4-10
yiher
連接提升電阻
112/04/20 例說8051 4-11
yiher
4x4 鍵盤
112/04/20 例說8051 4-12
yiher
市售一體成型之 4x4 鍵盤
正 面 背 面
X0 X1 X2 X3 Y3 Y2 Y1 Y0 Y0 Y1 Y2 Y3 X3 X2 X1 X0
112/04/20 例說8051 4-13
yiher
低態掃瞄-按下「 0 」鍵
112/04/20 例說8051 4-14
yiher
高態掃瞄-按下「 0 」鍵
112/04/20 例說8051 4-15
yiher
認識 MM74C922/MM74C923
112/04/20 例說8051 4-16
yiher
MM74C922/MM74C923 資料傳輸模式
112/04/20 例說8051 4-17
yiher
MM74C922/MM74C923 資料傳輸模式
112/04/20 例說8051 4-18
yiher
七節顯示器掃瞄
112/04/20 例說8051 4-19
yiher
認識七節顯示器
112/04/20 例說8051 4-20
yiher
共陽極七節顯示器
112/04/20 例說8051 4-21
yiher
共陰極七節顯示器
112/04/20 例說8051 4-22
yiher
多個七節顯示器
112/04/20 例說8051 4-23
yiher
七節顯示模組
112/04/20 例說8051 4-24
yiher
七節顯示模組
112/04/20 例說8051 4-25
yiher
市售四位數七節顯示器模組
112/04/20 例說8051 4-26
yiher
市售四位數七節顯示器模組
112/04/20 例說8051 4-27
yiher
7446 、 7447 、 7448 、 7449 之接腳
112/04/20 例說8051 4-28
yiher
7447/7448 輸出
112/04/20 例說8051 4-29
yiher
7447/7448 應用範例
112/04/20 例說8051 4-30
yiher
編 碼TABLE: ; abcdefgx
DB 00000011B ; 共陽極之 0
DB 10011111B ; 共陽極之 1
DB 00100101B ; 共陽極之 2
DB 00001101B ; 共陽極之 3
DB 10011001B ; 共陽極之 4
DB 01001001B ; 共陽極之 5
DB 01000001B ; 共陽極之 6
DB 00011111B ; 共陽極之 7
DB 00000001B ; 共陽極之 8
DB 00001001B ; 共陽極之 9
112/04/20 例說8051 4-31
yiher
認識 74138/74139
112/04/20 例說8051 4-32
yiher
算術運算指令 • 加法運算指令
112/04/20 例說8051 4-33
yiher
算術運算指令 • 減減減減減減
112/04/20 例說8051 4-34
yiher
算術運算指令 減減減減減減
112/04/20 例說8051 4-35
yiher
算術運算指令
• 減減減減減減減 MUL AB • 減減減減減減減 DIV AB
112/04/20 例說8051 4-36
yiher
算術運算指令 • BCD調整運算指令
112/04/20 例說8051 4-37
yiher
實例演練 (4-5-1)• 連接電路
112/04/20 例說8051 4-38
yiher
實例演練 (4-5-1)• 流程圖
112/04/20 例說8051 4-39
yiher
Ch4-1.asm-1ORG 0 ; 程式從 0 位址開始
START: MOV P1, #1EH ; 將最右邊數字顯示 1
CALL DELAY ; 延遲 4ms
MOV P1, #5DH ; 將右邊第二個數字顯示 5
CALL DELAY ; 延遲 4ms
MOV P1, #0BH ; 將右邊第三個數字顯示 0
CALL DELAY ; 延遲 4ms
MOV P1, #87H ; 將最左邊數字顯示 8
CALL DELAY ; 延遲 4ms
JMP START ; 從頭開始掃瞄
112/04/20 例說8051 4-40
yiher
Ch4-1.asm-2;========= 延遲約 4ms=( 即 2usxR7xR7)=============
DELAY: MOV R7, #10
D1: MOV R6, #200
DJNZ R6, $
DJNZ R7, D1
RET
END
112/04/20 例說8051 4-41
yiher
自我練習• 連接電路
112/04/20 例說8051 4-42
yiher
實例演練 (4-5-2)• 連接電路
112/04/20 例說8051 4-43
yiher
實例演練 (4-5-2)• 流程圖
112/04/20 例說8051 4-44
yiher
Ch4-2.asm-1ORG 0 ; 程式從 0 位址開始
START:
MOV P1, #FFH ; 關閉所有數字MOV P2, #10011001B ; 輸出「 4 」的七節顯示碼MOV P1, #11111110B ; 點亮最右邊位數CALL DELAY ; 延遲 4ms
;==========================================
MOV P1, #FFH ; 關閉所有數字MOV P2, #00000011B ; 輸出「 0 」的七節顯示碼MOV P1, #11111101B ; 點亮右邊第二個位數
112/04/20 例說8051 4-45
yiher
Ch4-2.asm-2CALL DELAY ; 延遲 4ms
;=============================================
MOV P1, #FFH ; 關閉所有數字MOV P2, #00000011B ; 輸出「 0 」的七節顯示碼MOV P1, #11111011B ; 點亮右邊第三個位數CALL DELAY ; 延遲 4ms
;=============================================
MOV P1, #FFH ; 關閉所有數字MOV P2, #00100101B ; 輸出「 2 」的七節顯示碼MOV P1, #11110111B ; 點亮最左邊位數
112/04/20 例說8051 4-46
yiher
Ch4-2.asm-3CALL DELAY ; 延遲 4ms
JMP START ; 從頭開始掃瞄;========== 延遲約 4ms=( 即 2usxR7xR7)============
DELAY:
MOV R7, #10
D1: MOV R6, #200
DJNZ R6, $
DJNZ R7, D1
RET
END
112/04/20 例說8051 4-47
yiher
實例演練 (4-5-3)• 連接電路
112/04/20 例說8051 4-48
yiher
實例演練 (4-5-3)• 流程圖
112/04/20 例說8051 4-49
yiher
Ch4-3.asm-1• COUNTS EQU 50H ; 每組字顯示時間• SCAN EQU 01110111B ; 掃瞄信號• ORG 0 ; 程式從 0 位址開始• START: MOV DPTR, #DISP1 ; 指定第一組字位置• CALL DISPLAY4 ; 呼叫顯示字組副程式• MOV DPTR, #DISP2 ; 指定第二組字位置• CALL DISPLAY4 ; 呼叫顯示字組副程式• MOV DPTR, #DISP3 ; 指定第三組字位置• CALL DISPLAY4 ; 呼叫顯示字組副程式• JMP START ; 重新開始
112/04/20 例說8051 4-50
yiher
Ch4-3.asm-2• ;============= 顯示一組字副程式 ==================
• DISPLAY4: MOV R4, #COUNTS ; 指定顯示次數• LOOP1: MOV R3, #SCAN ; 載入掃瞄信號• MOV R2, #4 ; 顯示字數• MOV R1, #0 ; 指定偏移值• LOOP2: MOV A, R1 ; 偏移值放入 ACC
• MOVC A, @A+DPTR ; 取出所要顯示的字• INC R1 ; 偏移值加 1
• CALL DISPLAT1 ; 點亮最右邊位數• DJNZ R2, LOOP2 ; 是否已顯示四個字?• DJNZ R4, LOOP1 ; 是否完成顯示次數?• RET ; 返回
112/04/20 例說8051 4-51
yiher
Ch4-3.asm-3• ;============= 顯示一個字副程式 ====================• DISPLAY1:• PUSH DPTR ; 儲存資料指標暫存器• MOV DPTR, SEG_CODE; 指定七節顯示器編碼位置• MOVC A, @A+DPTR ; 轉換七節顯示碼• MOV P2, A ; 輸出顯示碼• MOV A, R3 ; 將掃瞄信號放入 ACC• MOV P1, A ; 輸出掃瞄信號 ( 點亮 )• RR A ; 下一個掃瞄信號• MOV R3, A ; 掃瞄信號存回 R3• CALL DELAY ; 延遲 4ms• POP DPTR ; 取回資料指標暫存器• RET ; 返回
112/04/20 例說8051 4-52
yiher
Ch4-3.asm-4• ;============= 延遲約 4ms( 即 2usxR7xR6)===========
====• DELAY:MOV R7, #10• D1: MOV R6, #200• DJNZ R6, $• DJNZ R7, D1• RET• ;==============================================
===• DISP1: DB 8,0,5,1 ;8051• DISP2: DB 2,0,0,8 ;2008• DISP3: DB 0,2,1,8 ;0218
112/04/20 例說8051 4-53
yiher
Ch4-3.asm-5• ;=================================================• SEG_CODE: ; abcdefgx• DB 00000011B ; 共陽極之 0• DB 10011111B ; 共陽極之 1• DB 00100101B ; 共陽極之 2• DB 00001101B ; 共陽極之 3• DB 10011001B ; 共陽極之 4• DB 01001001B ; 共陽極之 5• DB 01000001B ; 共陽極之 6• DB 00011111B ; 共陽極之 7• DB 00000001B ; 共陽極之 8• DB 00001001B ; 共陽極之 9• END
112/04/20 例說8051 4-54
yiher
實例演練 (4-5-4)• 連接電路
112/04/20 例說8051 4-55
yiher
實例演練 (4-5-4)• 流程圖
112/04/20 例說8051 4-56
yiher
Ch4-4.asm-1ORG 0 ; 程式從 0 位址開始
START: MOV R0, #0 ; 按鍵初始值MOV R1, #4 ; 掃瞄行數MOV R2, #EFH ; 掃瞄碼初始值
SCAN: MOV A, R2 ; 指定掃瞄碼MOV P2, A ; 掃瞄,並設定輸入模式
;=========ROW 0 =========================
JNB P2.0, KEYIN ; 偵測第一列INC R0 ; 下一個按鍵
112/04/20 例說8051 4-57
yiher
Ch4-4.asm-2;==========ROW 1 =======================
JNB P2.1, KEYIN ; 偵測第二列INC R0 ; 下一個按鍵
;==========ROW 2 =======================
JNB P2.2, KEYIN ; 偵測第三列INC R0 ; 下一個按鍵
;==========ROW 3 =======================
JNB P2.3, KEYIN ; 偵測第四列INC R0 ; 下一個按鍵
112/04/20 例說8051 4-58
yiher
Ch4-4.asm-3;==========NEXT COLUMN ================
MOV A, R2 ; 載入掃瞄碼RL A ; 下一個掃瞄碼MOV R2, A ; 存回掃瞄碼DJNZ R1, SCAN ; 掃瞄下一行JMP START ; 重新掃瞄;=======================================
KEYIN: CALL DEBOUNCE ; 呼叫防彈跳副程式MOV A, R0 ; 取回按鍵值DA A ;BCD 調整
112/04/20 例說8051 4-59
yiher
Ch4-4.asm-4MOV P1, A ; 顯示按鍵值JMP START ; 重新掃瞄;======== 延遲約 16ms=( 即 2usxR7xR7)=========
DEBOUNCE:
MOV R7, #40
D1: MOV R6, #200
DJNZ R6, $
DJNZ R7, D1
RET
END
112/04/20 例說8051 4-60
yiher
自我練習• 連接電路
112/04/20 例說8051 4-61
yiher
實例演練 (4-5-5)• 連接電路
112/04/20 例說8051 4-62
yiher
實例演練 (4-5-5)• 流程圖
112/04/20 例說8051 4-63
yiher
Ch4-5.asmORG 0 ;程式從 0位址開始
START: MOV P2, #FFH ;關閉七節顯示器,並將P2; 設定為輸入模式
SETB P3.2 ;將P3.2設定為輸入模式LOOP: JNB P3.2, LOOP ;判讀是否按下按鍵
MOV A, P2 ;讀入鍵盤資料SWAP A ;將A的高四位元與低四位元互換ORL A, #F0H ;讓高四位元為高態MOV P2, A ;輸出到七節顯示器
RELEASE:JB P3.2, RELEASE ;判讀是否放開按鍵JMP LOOP ;跳至 LOOP形成一個迴圈END
6464112/04/20112/04/20
輸出入埠進階應用輸出入埠進階應用
Bye Bye…Bye Bye…