輸出入埠進階應用

64
111/06/15 例例8051 4-1 yiher 例例例例例例例例 例例例

Upload: colton

Post on 06-Jan-2016

71 views

Category:

Documents


0 download

DESCRIPTION

輸出入埠進階應用. 第四章. 本章內容. 硬體部分 : 8051 的省電模式 。 74138 、 7447 、 4×4 鍵盤、七節顯示器模組等 。 指令部分: 詳細說明算術運算指令 。 程式與實作部分: 鍵盤掃瞄程式、七節顯示器掃瞄程式、編碼與查表法等 。. 8051 之時鐘脈波電路. 8051 之省電模式. 閒置模式. 8051 之省電模式. 功率下降模式. 8051 之省電模式. PCON 暫存器. 4x4 鍵盤之內部結構. tack switch 之結構. 由 tack switch 所構成之 4  4 鍵盤. 連接提升電阻. 4x4 鍵盤. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 輸出入埠進階應用

112/04/20 例說8051 4-1

yiher

輸出入埠進階應用

第四章

Page 2: 輸出入埠進階應用

112/04/20 例說8051 4-2

yiher

本章內容 •硬體部分: 8051 的省電模式 。

74138 、 7447 、 4×4 鍵盤、七節顯示器模組等 。

• 指令部分:詳細說明算術運算指令 。•程式與實作部分:鍵盤掃瞄程式、七節顯示器掃瞄程式、編碼與查表法等 。

Page 3: 輸出入埠進階應用

112/04/20 例說8051 4-3

yiher

8051 之時鐘脈波電路

Page 4: 輸出入埠進階應用

112/04/20 例說8051 4-4

yiher

8051 之省電模式

閒置模式

Page 5: 輸出入埠進階應用

112/04/20 例說8051 4-5

yiher

8051 之省電模式

功率下降模式

Page 6: 輸出入埠進階應用

112/04/20 例說8051 4-6

yiher

8051 之省電模式PCON 暫存器

Page 7: 輸出入埠進階應用

112/04/20 例說8051 4-7

yiher

4x4 鍵盤之內部結構

Page 8: 輸出入埠進階應用

112/04/20 例說8051 4-8

yiher

tack switch 之結構

Page 9: 輸出入埠進階應用

112/04/20 例說8051 4-9

yiher

由 tack switch 所構成之 44 鍵盤

Page 10: 輸出入埠進階應用

112/04/20 例說8051 4-10

yiher

連接提升電阻

Page 11: 輸出入埠進階應用

112/04/20 例說8051 4-11

yiher

4x4 鍵盤

Page 12: 輸出入埠進階應用

112/04/20 例說8051 4-12

yiher

市售一體成型之 4x4 鍵盤

正 面 背 面

X0 X1 X2 X3 Y3 Y2 Y1 Y0 Y0 Y1 Y2 Y3 X3 X2 X1 X0

Page 13: 輸出入埠進階應用

112/04/20 例說8051 4-13

yiher

低態掃瞄-按下「 0 」鍵

Page 14: 輸出入埠進階應用

112/04/20 例說8051 4-14

yiher

高態掃瞄-按下「 0 」鍵

Page 15: 輸出入埠進階應用

112/04/20 例說8051 4-15

yiher

認識 MM74C922/MM74C923

Page 16: 輸出入埠進階應用

112/04/20 例說8051 4-16

yiher

MM74C922/MM74C923 資料傳輸模式

Page 17: 輸出入埠進階應用

112/04/20 例說8051 4-17

yiher

MM74C922/MM74C923 資料傳輸模式

Page 18: 輸出入埠進階應用

112/04/20 例說8051 4-18

yiher

七節顯示器掃瞄

Page 19: 輸出入埠進階應用

112/04/20 例說8051 4-19

yiher

認識七節顯示器

Page 20: 輸出入埠進階應用

112/04/20 例說8051 4-20

yiher

共陽極七節顯示器

Page 21: 輸出入埠進階應用

112/04/20 例說8051 4-21

yiher

共陰極七節顯示器

Page 22: 輸出入埠進階應用

112/04/20 例說8051 4-22

yiher

多個七節顯示器

Page 23: 輸出入埠進階應用

112/04/20 例說8051 4-23

yiher

七節顯示模組

Page 24: 輸出入埠進階應用

112/04/20 例說8051 4-24

yiher

七節顯示模組

Page 25: 輸出入埠進階應用

112/04/20 例說8051 4-25

yiher

市售四位數七節顯示器模組

Page 26: 輸出入埠進階應用

112/04/20 例說8051 4-26

yiher

市售四位數七節顯示器模組

Page 27: 輸出入埠進階應用

112/04/20 例說8051 4-27

yiher

7446 、 7447 、 7448 、 7449 之接腳

Page 28: 輸出入埠進階應用

112/04/20 例說8051 4-28

yiher

7447/7448 輸出

Page 29: 輸出入埠進階應用

112/04/20 例說8051 4-29

yiher

7447/7448 應用範例

Page 30: 輸出入埠進階應用

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

Page 31: 輸出入埠進階應用

112/04/20 例說8051 4-31

yiher

認識 74138/74139

Page 32: 輸出入埠進階應用

112/04/20 例說8051 4-32

yiher

算術運算指令 • 加法運算指令

Page 33: 輸出入埠進階應用

112/04/20 例說8051 4-33

yiher

算術運算指令 • 減減減減減減

Page 34: 輸出入埠進階應用

112/04/20 例說8051 4-34

yiher

算術運算指令 減減減減減減

Page 35: 輸出入埠進階應用

112/04/20 例說8051 4-35

yiher

算術運算指令

• 減減減減減減減 MUL AB • 減減減減減減減 DIV AB

Page 36: 輸出入埠進階應用

112/04/20 例說8051 4-36

yiher

算術運算指令 • BCD調整運算指令

Page 37: 輸出入埠進階應用

112/04/20 例說8051 4-37

yiher

實例演練 (4-5-1)• 連接電路

Page 38: 輸出入埠進階應用

112/04/20 例說8051 4-38

yiher

實例演練 (4-5-1)• 流程圖

Page 39: 輸出入埠進階應用

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 ; 從頭開始掃瞄

Page 40: 輸出入埠進階應用

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

Page 41: 輸出入埠進階應用

112/04/20 例說8051 4-41

yiher

自我練習• 連接電路

Page 42: 輸出入埠進階應用

112/04/20 例說8051 4-42

yiher

實例演練 (4-5-2)• 連接電路

Page 43: 輸出入埠進階應用

112/04/20 例說8051 4-43

yiher

實例演練 (4-5-2)• 流程圖

Page 44: 輸出入埠進階應用

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 ; 點亮右邊第二個位數

Page 45: 輸出入埠進階應用

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 ; 點亮最左邊位數

Page 46: 輸出入埠進階應用

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

Page 47: 輸出入埠進階應用

112/04/20 例說8051 4-47

yiher

實例演練 (4-5-3)• 連接電路

Page 48: 輸出入埠進階應用

112/04/20 例說8051 4-48

yiher

實例演練 (4-5-3)• 流程圖

Page 49: 輸出入埠進階應用

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 ; 重新開始

Page 50: 輸出入埠進階應用

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 ; 返回

Page 51: 輸出入埠進階應用

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 ; 返回

Page 52: 輸出入埠進階應用

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

Page 53: 輸出入埠進階應用

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

Page 54: 輸出入埠進階應用

112/04/20 例說8051 4-54

yiher

實例演練 (4-5-4)• 連接電路

Page 55: 輸出入埠進階應用

112/04/20 例說8051 4-55

yiher

實例演練 (4-5-4)• 流程圖

Page 56: 輸出入埠進階應用

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 ; 下一個按鍵

Page 57: 輸出入埠進階應用

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 ; 下一個按鍵

Page 58: 輸出入埠進階應用

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 調整

Page 59: 輸出入埠進階應用

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

Page 60: 輸出入埠進階應用

112/04/20 例說8051 4-60

yiher

自我練習• 連接電路

Page 61: 輸出入埠進階應用

112/04/20 例說8051 4-61

yiher

實例演練 (4-5-5)• 連接電路

Page 62: 輸出入埠進階應用

112/04/20 例說8051 4-62

yiher

實例演練 (4-5-5)• 流程圖

Page 63: 輸出入埠進階應用

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

Page 64: 輸出入埠進階應用

6464112/04/20112/04/20

輸出入埠進階應用輸出入埠進階應用

Bye Bye…Bye Bye…