點擊下載此文件

Download Report

Transcript 點擊下載此文件

主講:唐慧玲 老師
學習目標
 介紹電子元件實物,及其代表符號
及運作原理。
 介紹基本電路原理,結合電子元件
實作應用電路。
 了結單晶片電腦結構、運作原理、
操作指令及程式寫作原則。
 利用單晶片控制元件實作電子控制
應用。
實務講習項目
1.
2.
3.
4.
5.
6.
7.
8.
9.
電路與電子元件
認識電阻
R-C 電路介紹
電晶體介紹
電子閃爍燈實驗
單晶片微控制器 - 8051
單晶片微控制器 I/O 實驗
延時副程式及其應用
程式查表應用
電路與電子元件
1.
常用電子元件







電阻(Resistor)
電容(Capacitor)
二極體(Diode)
電晶體(Transistor)
發光二極體(LED)
開關(Switch)
其它元件
2. 電路上的元件符號
3. 電路的繪製
常用電子元件
電容(Capacitor)
電阻(Resistor)
其它元件
發光二極體(LED)
二極體(Diode)
開關(Switch)
電晶體
(Transistor)(Q)
電路圖的繪製
認識電阻-電阻色碼介紹
顏色
第一環
數值 1
第二環
數值 2
第三環
次方
黑
0
0
100
棕
1
1
101
紅
2
2
102
橙
3
3
103
黃
4
4
104
綠
5
5
105
藍
6
6
106
紫
7
7
107
灰
8
8
108
白
9
9
109
金
10-1
銀
-2
10
第四環
誤差比
2%
5%
10%
認識電阻-練習
歐姆定律
並聯
I
+
應用
V
串聯
電壓/電流實驗
R-C 電路介紹
1. 電鍵 Sw 接到 a 點, R,C,電池 e0串聯
iR + q/C = R(dq/dt) + q/C = e0
q(t) = Ce0[1 – exp(-t/RC)]
電容器 C 充電, 時間常數 = RC
2. 充電到qmax, 電鍵Sw 接到b 點, R,C串聯
R(dq/dt) + q/C = 0
q(t) = qmexp(-t/RC)
電容器放電,
t =  = RC (鬆弛時間)
q(t) = qm/e = qm/2.718
q(T1/2) = qm/2
電晶體介紹
NPN
小電流
大電流
大電流
小電流
PNP
Vcc
Gnd
Vcc
Gnd
電子閃爍燈實驗
單晶片微控制器 – MCS-51
AT89C51/AT89S51 腳位介紹
正電源
輸出入埠P1
輸出入埠P0
&擴充記憶
系統Reset
擴充記憶/IO
特殊用途
輸出/入埠P3
&特殊用途
震盪輸入
系統接地
輸出入埠P2
&擴充記憶
AT89C51 特性
AT59C51 內部結構圖
記憶體與特殊記憶體
MCS-51 基本線路接法
+5V
輸出/入埠
P0
10uF
可做一般 I/O 用
10K
22p
接地
輸出/入埠
P2
12M
22p
接地
接地
MCS-51 組合語言介紹
指令集
與
定址法
 算數運算指令
 直接訂址法
 邏輯運算指令
 立即定址法
 布林運算指令
 暫存器定址法
 資料轉移指令
 暫存器間接定址法
 程式分支指令
 基底暫存器加索引
暫存器間接定址法
算數運算指令
指令
INC A
INC Rn
INC direct
INC @Ri
INC DPTR
DEC A
DEC Rn
DEC direct
DEC @Ri
MUL AB
DIV AB
DA A
說明
A 累加器內容加 1
暫存器內容加 1
直接位址內容加 1
間接位址內容加 1
資料指標 DPTR 內容加 1
A 累加器內容減 1
暫存器內容減 1
直接位址內容減 1
間接位址內容減 1
A 累加器乘以暫存器 B,相乘結果之高 8 位
元存入 B,低 8 位元存入 A
A 累加器除以暫存器 B,相除結果之商存入
A,餘數存入 B
A 累加器內容調整成 10 進制 BCD 數
指令
ADD A,Rn
ADD A,direct
ADD A,@Ri
ADD A,#data
ADDC A,Rn
ADDC A,direct
ADDC A,@Ri
ADDC A,#data
Byte MC SUBB A,Rn
1 1 SUBB A,direct
1 1 SUBB A,@Ri
2 1
SUBB A,#data
1
1
1
1
2
1
1
1
2
1
1
1
1
4
1
4
1
1
說明
將暫存器內容加入 A 累加器
將直接位址內容加入 A 累加器
將間接位址內容加入 A 累加器
將 8 位元常數資料加入 A 累加器
將暫存器與進位 CF 加入 A 累加器
直接位址內容與進位 CF 加入累加器
間接位址內容與進位 CF 加入累加器
將 8 位元常數資料與進位加入累加器
A 累加器內容減暫存器與借位 CF
A 累加器內容減直接位址內容與借位
A 累加器內容減間接位址內容與借位
累加器內容減 8 位元常數資料與借位
Byte
1
2
1
2
1
2
1
2
1
2
1
2
MC
1
1
1
1
1
1
1
1
1
1
1
1
邏輯運算指令
指令
XRL A,Rn
XRL A,direct
XRL A,@Ri
XRL A,#data
XRL direct,A
XRL direct,#data
CLR A
CPL A
RL A
RLC A
RR A
RRC A
SWAP A
說明
暫存器 XOR 至 A 累加器內
直接位址內容 XOR 至 A 累加器內
間接位址內容 XOR 至 A 累加器內
8 位元資料 XOR 至 A 累加器內
A 累加器內容 XOR 至直接位址內
8 位元資料 XOR 至直接位址內
清除 A 累加器
A 累加器內容取補數
A 累加器內容向左旋轉 1 位元
A 累加器與進位 CF 一起左旋 1 位元
A 累加器內容向右旋轉 1 位元
A 累加器與進位 CF 一起右旋 1 位元
A 累加器的高低 4 位元互相交換
Byte
1
2
1
2
2
3
1
1
1
1
1
1
1
MC
1
1
1
1
1
2
1
1
1
1
1
1
1
指令
ANL A,Rn
ANL A,direct
ANL A,@Ri
ANL A,#data
ANL direct,A
ANL direct,#data
ORL A,Rn
ORL A,direct
ORL A,@Ri
ORL A,#data
ORL direct,A
ORL direct,#data
說明
暫存器 AND 至 A 累加器內
直接位址內容 AND 至 A 累加器內
間接位址內容 AND 至 A 累加器內
8 位元資料 AND 至 A 累加器內
A 累加器內容 AND 至直接位址內
8 位元資料 AND 至直接位址內
暫存器 OR 至 A 累加器內
直接位址內容 OR 至 A 累加器內
間接位址內容 OR 至 A 累加器內
8 位元資料 OR 至 A 累加器內
A 累加器內容 OR 至直接位址內
8 位元資料 OR 至直接位址內
Byte
1
2
1
2
2
3
1
2
1
2
2
3
MC
1
1
1
1
1
2
1
1
1
1
1
2
布林運算指令
指令
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
ANL C,bit
ANL C,/bit
ORL C,bit
ORL C,/bit
MOV C,bit
MOV bit,C
JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel
說明
清除進位旗標 CF=0
清除位元位址內容
設定進位旗標 CF=1
設定位元位址內容
將進位旗標 CF 內容取補數
將位元位址內容取補數
將位元位址內容 AND 至 CF 內
將位元位址內容取補數 AND 至 CF 內
將位元位址內容 OR 至 CF 內
將位元位址內容取補數 OR 至 CF 內
將位元位址內容移入進位旗標 CF 內
將進位旗標 CF 移入位元位址內
若 CF=1,則跳至相對位址 rel
若 CF=0,則跳至相對位址 rel
若 (bit)=1,則跳至相對位址 rel
若 (bit)=0,則跳至相對位址 rel
若 (bit)=1,則跳至相對位址 rel,bit=0
Byte
1
2
1
2
1
2
2
2
2
2
2
2
2
2
3
3
3
MC
1
1
1
1
1
1
1
2
2
2
1
2
2
2
2
2
2
資料轉移指令
指令
MOV DPTR,#data16
MOVC A,@A+DPTR
MOVC A,@A+PC
MOVX A,@Ri
MOVX A,@DPTR
MOVX @Ri,A
MOVX @DPTR,A
PUSH direct
POP direct
XCH A,Rn
XCH A,direct
XCH A,@Ri
XCHD A,@Ri
說明
將 16 位元常數資料移入資料指標內
將程式記憶體內容移入 A 累加器內
將程式記憶體內容移入 A 累加器內
將外部資料記憶體內容移入 A 累加器
將外部資料記憶體內容移入 A 累加器
將 A 累加器內容移入外部資料記憶體
將 A 累加器內容移入外部資料記憶體
將直接位址內容存入堆疊內
自堆疊頂端取出資料存入直接位址內
A 累加器內容與暫存器內容互換
A 累加器內容與直接位址內容互換
A 累加器內容與間接位址內容互換
累加器與間接位址低 4 位元內容互換
Byte
3
1
1
1
1
1
1
2
2
1
2
1
1
MC
2
2
2
2
2
2
2
2
2
1
1
1
1
指令
MOV A,Rn
MOV A,direct
MOV A,@Ri
MOV A,#data
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
MOV direct,A
MOV direct,Rn
MOV direct,direct
MOV direct,@Ri
MOV direct,#data
MOV @Ri,A
MOV @Ri,direct
MOV @Ri,#data
說明
Byte MC
將暫存器內容移入 A 累加器
1 1
將直接位址內容移入 A 累加器
2 1
暫存器間接位址內容移入 A 累加器
1 1
將 8 位元常數資料移入 A 累加器
2 1
將 A 累加器內容移入暫存器
1 1
將直接位址內容移入暫存器
2 2
將 8 位元常數資料移入暫存器
2 1
將 A 累加器內容移入直接位址內
2 1
將暫存器內容移入直接位址內
2 2
將直接位址內容移入直接位址內
3 2
暫存器間接定址內容移入直接位址內 2 2
將 8 位元常數資料移入直接位址內
3 2
將 A 累加器內容移入間接位址內
1 1
將直接位址內容移入間接位址內
2 2
將 8 位元常數資料移入間接位址內
2 1
程式分支指令
指令
說明
byte
CJNE A,direct, 若 A 累加器與直接位址內
3
rel
容不相等,則跳至 rel 位址
範圍-128byte ~ +127byte
CJNE A,#data, 若 A≠data,則跳至 rel 位址,範圍-128byte ~ 3
rel
+127byte
CJNE Rn,#data, 若暫存器內容≠data,則跳至 rel 位址
3
rel
範圍-128byte ~ +127byte
CJNE @Ri,
若間接位址內容≠data,則跳至 rel 位址,範 3
#data,rel
圍-128byte ~ +127byte
DJNZ Rn,rel
暫存器內容減 1,若不等於 0,則跳
2
至 rel 位址
DJNZ direct,rel 直接位址內容減 1,若不等於 0,則
3
跳至 rel 位址
NOP
無動作
1
MC
2
指令
ACALL addrl1
ACALL addrl6
RET
RETI
AJMP addrl1
LJMP addrl6
SJMP rel
JMP @A+DPTR
JZ rel
JNZ rel
2
2
2
2
2
1
說明
副程式呼叫 (可定址 2KB 範圍)
副程式呼叫 (可定址 64KB 範圍)
自副程式返回主程式
自中斷副程式返回主程式
絕對跳躍 (2KB 範圍)
遠程跳躍 (64KB 範圍)
相對跳躍 (-128byte ~ +127byte)
間接跳躍 (64KB 範圍)
若 A=0,則跳至 rel 位址
範圍-128byte ~ +127byte
若 A≠0,則跳至 rel 位址
範圍-128byte ~ +127byte
byte
2
3
1
1
3
3
2
1
2
MC
2
2
2
2
2
2
2
2
2
2
2
組合語言程式設計介紹-I
; Project : LED Show Program
說明 -- ;
宣告
指定位址
組合語言程式碼
程式結束
; I/O Delaration
LED
Reg
Data0
Equ
Data1
Equ
IND
Reg
;
ORG
JMP
P1.0
55H
0AAH
LED.0
000H
START
; System Beginning from Here
ORG
020H
START:
Mov
A,#Data0
Mov
LED,A
Call
Delay200ms
Mov
A,#Data1
Mov
LED,A
Jmp
START:
;
END
;Declare P1 as LED Port
;Reset Vector
組合語言程式設計介紹-II
標記區
START:
指令碼
運算元
ORG
Mov
Mov
Call
Mov
Mov
Jmp
020H
A,#Data0
LED,A
Delay200ms
A,#Data1
LED,A
START:
;
END
程式註解
; 載入資料0 到 Acc
阻譯程序及晶片燒錄
程式燒錄
編譯流程
編寫程式
Edition
組譯
Assembling
原始碼檔
Source Code
燒錄
目的碼檔
Object Code
鏈結
Linking
2/16進位檔
Hex File
實際應用
單晶片微控制器 I/O 實驗
基本輸出實驗 - LED 亮不亮
+5V
LED x 4
220 x 4
LEDs 作為輸出
10uF
10K
22p x 2
按壓開關作為輸入
12Mhz
SW x 4
基本輸入實驗 - 開關控制
延時副程式及其應用
開始
延時
LED 亮
延時
LED 滅
延時副程式及其應用-I
延時
共延時多少時間????
設定R6,
R7值
R7減 1
N
Delay:
R7=0?
Dly1:
Y
R6減 1
R6=0?
Y
返回
N
Mov
Mov
Djnz
Djnz
Ret
R6,#100
R7,#200
R7,$
R6,Dly1
;設定R6值
;設定R7值
延時副程式及其應用-II
延時
共延時多少時間????
設定R6值
設定R7值
Delay:
Dly1:
Dly2:
R7減 1
N
R7=0?
Y
R6減 1
R6=0?
Y
返回
N
Mov
Mov
Djnz
Djnz
Ret
R6,#100
R7,#200
R7,Dly2
R6,Dly1
;設定R6值
;設定R7值
單晶片版LED閃爍燈
+5V
開始
延時(時間)
10uF
LED 亮
10K
延時(時間)
LED 滅
22p x 2
12Mhz
LED x 4
220 x 4
單晶片版LED閃爍燈
; Project : LED Show Program
; I/O Delaration
LED
Reg
Data0
Equ
Data1
Equ
IND
Reg
;
ORG
JMP
;
ORG
START:
Mov
Mov
Call
Mov
Mov
Call
Jmp
P0
01H
02H
LED.0
000H
START
020H
A,#Data0
LED,A
Delay
A,#Data1
LED,A
Delay
START
Delay:
Dly1:
Dly2:
Mov
Mov
Djnz
Djnz
Ret
R6,#100
R7,#200
R7,Dly2
R6,Dly1
;設定R6值
;設定R7值
各式劈靂燈實驗
各式劈靂燈實驗
實習測驗
數字式計時
實習測驗 -- 數字式計時
七段顯示器接腳圖
實習測驗 -- 數字式計時
0~9 數字顯示
實習測驗 -- 數字式計時
 題目說明




讓 LED七段顯示器依序顯示 0 到 9 數字
每次顯示的切換時間為一秒鐘
顯示到數字9後 下一次顯示又從一開始
顯示六次輪循 應該發費一分鐘整
實習測驗 -- 數字式計時
提示



找出 0 到 9 數字顯示接腳供電組合(0/1)
設計一Delay副程式時間為一秒鐘
切換組合之間呼叫Delay副程式一次
實習測驗 -- 數字式計時
提示
MC
....
Mov
P0,#00110010B
Call
Delay
2
....
....
Delay:
Dly0:
Dly1:
Dly2:
Mov
Mov
Mov
Djnz
Djnz
Djnz
Ret
總呼叫時間
2 + 3+(3+(3+ZZ*2)*YY )*XX
R5,#XX
R6,#YY
R7,#ZZ
R7,Dly2
R6,Dly1
R5,Dly0
;設定R5值
;設定R6值
;設定R7值
1
1
1
2
2
2
2
1+(1+(1+ZZ*2+2)*YY +2)*XX+2
實習測驗 -- 數字式計時
提示
Result:999999
Result:999999
Result:999999
Result:999999
Result:999999
Result:1000003
Result:1000001
XX:23
XX:23
XX:46
XX:46
XX:46
XX:127
XX:167
YY:185
YY:235
YY:88
YY:104
YY:152
YY:17
YY:15
ZZ:116
ZZ:91
ZZ:122
ZZ:103
ZZ:70
ZZ:230
ZZ:198
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000001
Result:1000003
XX:167
XX:167
XX:167
XX:167
XX:167
XX:167
XX:167
XX:167
XX:167
XX:167
XX:254
YY:19
YY:21
YY:35
YY:45
YY:57
YY:63
YY:95
YY:105
YY:133
YY:171
YY:14
ZZ:156
ZZ:141
ZZ:84
ZZ:65
ZZ:51
ZZ:46
ZZ:30
ZZ:27
ZZ:21
ZZ:16
ZZ:139