You are on page 1of 19

4/12/2022

ĐẠI HỌC ĐÀ NẴNG


TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

Bài giảng: VI ĐIỀU KHIỂN

ThS. Phan Ngọc Kỳ


0983234494
ngockyphan@gmail.com

- CR1: Phân biệt được các loại địa chỉ.


- CR2: Đọc và giải thích được ý nghĩa các câu lênh.
- CR3: Ghép nối và điều khiển được các thiết bị ngoại vi cơ
bản với vi điều khiển.
- CR4: Phân tích, giải thích được lưu đồ thuật toán phù
hợp với sơ đồ nguyên lý hoạt động của một số mạch điều
khiển dựng sẵn.
- CR5: Sử dụng được các thanh ghi có chức năng đặc biệt
(SFR) cho các mục đích điều khiển khác nhau (Timer,
Counter, Interrup).
- CR6: Giải quyết được các lỗi đơn giản phát sinh trong
quá trình gỡ lỗi (Debug).
- CR7: Vận dụng các kiến thức vi điều khiển để thiết kế
chương trình (sơ đồ ghép nối, lưu đồ thuật toán và lập
trình) điều khiển các ngoại vi đơn giản.

1
4/12/2022

Học liệu
- Giáo trình chính: Giáo trình Kỹ thuật Vi điều khiển 8051, bộ môn Điện
tử, Khoa Điện, Trường Đại Học Sư Phạm Kỹ thuật (Giáo trình lưu hành
nội bộ).
- Sách, tài liệu tham khảo tham khảo:
1. Họ vi điều khiển 8051, Tống Văn On, NXB Khoa học Kỹ thuật, 2003.
2. Lập trình cho vi điều khiển 8051, Nguyễn Tăng Cường, NXB Giáo
dục, 2009.
3. 8051 Tutorial, http://www.hobbyprojects.com/8051_tutorial/
- Công cụ (phần mềm):
1. IDE 8051.
2. KeilC.
3. ProTues.

Chương 2: Vi điều khiển


2.Vi điều khiển họ 8051
• 8031- không có ROM on-chip
• 8751- Có EPROM on-chip
• 8052- 8051bổ sung 128 byte RAM, bộ định thời 16 bit và
SFR (Special Function Register) được bộ định thời sử
dụng.
• Atmel AT89C51- Có Flash ROM on-chip
• Dallas Semicondustor DS5000
– NV-RAM on-chip và có thể lập trình hệ thống qua cổng nối tiếp
• Lõi 8051 được cung cấp từ các nhà sản xuất FPGA
– Xilinx, Altera, vv
• 8051 có mạch lôgic khả trình
– Hãng Triscend …

2
4/12/2022

Chương 2: Vi điều khiển


2.1. Cấu trúc bên trong

2.2 Cấu trúc vỏ, chân

U1
39 21
38 P0.0/AD0 P2.0/A8 22
37 P0.1/AD1 P2.1/A9 23
36 P0.2/AD2 P2.2/A10 24
35 P0.3/AD3 P2.3/A11 25
34 P0.4/AD4 P2.4/A12 26
33 P0.5/AD5 P2.5/A13 27
32 P0.6/AD6 P2.6/A14 28
P0.7/AD7 P2.7/A15
1 10
2 P1.0 P3.0/RXD 11
3 P1.1 P3.1/TXD 12
4 P1.2 P3.2/INT0 13
5 P1.3 P3.3/INT1 14
6 P1.4 P3.4/T0 15
7 P1.5 P3.5/T1 16
8 P1.6 P3.6/WR 17
P1.7 P3.7/RD
19 30
18 XTAL1 AL E/PROG 29
XTAL2 PSEN
31
9 EA/VPP
RST

AT89C51

3
4/12/2022

Vc

2.3 Chức năng các chân c

1 40
2
3
• Vcc(pin 40):

AT89C51
– Cung cấp nguồn cho chip.
31
– Vcc= +5V. 10

• GND(pin 20):ground
D1
T1 (220V-9V)
U2 LM7805
J1 - + 1 3
VIN GND VOUT
J2 = 5VDC
C1 C2
2

104

>1000uF 20 21

• XTAL1 , XTAL2(pins 19,18): mạch giao động


C2
XTAL2 NC XTAL2
33pF

C1
Dao
XTAL1 động XTAL1
33pF ngoài

GND GND

• C1, C2= 30PF 10PF (33PF)


• Crystal : 2MHz÷32MHz (11,0592MHz/ 12MHz)

4
4/12/2022

http://computeraideddesignguide.com/wp-
content/uploads/2014/05/Planetary-
gears.gif

Vcc

31
• Reset (Pin 9) + 10 uF
EA/VPP
• Mức cao phải tồn tại
tối thiểu 2 chu kỳ máy

Register Reset Value 9 RST


PC 0000 8.2 K
ACC 0000
B 0000
PSW 0000
SP 0007
P0, P1, P2, P3 FFH/ 11111111B/ 255
DPTR 0000

RAM are all zero.

5
4/12/2022

• /EA(pin 31):External Access


– 8031, 8032 không có .
– /EA nối GND: chương trình lưu ở bộ nhớ ngoài
– /EA nối Vcc: chương trình lưu ở bộ nhớ trong
• /PSEN (pin 29): Program Store Enable
– Dùng khi kết nối với bộ nhớ ngoài (external ROM).
– Nối với chân OE của ROM
• ALE(pin 30):Address Latch Enable
– Chân output tích cực mức cao.
– Chân ALE giải đa hợp địa chỉ và dữ liệu (nối chân G của bộ chốt 74LS373)
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip
và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống.

• I/O port pins


– 4 cổng (Port) vào ra dữ liệu P0, P1, P2, P3.
– Mỗi cổng có 8 chân.
▪ Port 0 (pins 32-39):P0(P0.0~P0.7)
▪ Port 1(pins 1-8) :P1(P1.0~P1.7)
▪ Port 2(pins 21-28) :P2(P2.0~P2.7)
▪ Port 3(pins 10-17) :P3(P3.0~P3.7)

1 0 0 1 0 1 1 0

.7 .6 .5 .4 .3 .2 .1 .0

P 0.X

6
4/12/2022

PORT 0
• Port 0 là port có 2 chức năng ở các chân 32 – 39
của 8951.
• Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở
rộng nó có chức năng như các đường IO
• Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó
được kết hợp giữa bus địa chỉ và bus dữ liệu
40 VCC

39 P0.0/AD0

38 P0.1/AD1

37 P0.2/AD2

36 P0.3/AD3

35 P0.4/AD4

34 P0.5/AD5

33 P0.6/AD6

32 P0.7/AD7

Port 1
• Là port IO trên các chân 1-8.
• Có thể dùng cho giao tiếp với các thiết bị ngoài
nếu cần.
• Port 1 không có chức năng khác, vì vậy chúng chỉ
được dùng cho giao tiếp với các thiết bị bên ngoài.
P1.0 1 40

P1.1 2

P1.2 3

P1.3 4

P1.4 5

P1.5 6

P1.6 7

P1.7 8

7
4/12/2022

Port 2
• Port 2 là 1 port có tác dụng kép trên các chân 21
- 28
• Được dùng như các đường xuất nhập hoặc là
byte cao của bus địa chỉ đối với các thiết bị
dùng bộ nhớ mở rộng.
28 P2.7/A15

27 P2.6/A14

26 P2.5/A13

25 P2.4/A12

24 P2.3/A11

23 P2.2/A10

22 P2.1/A9

21 P2.0/A8

Port 3
• Có tác dụng kép trên các chân 10 - 17.
• Các chân của port này có nhiều chức năng, các
công dụng chuyển đổi có liên hệ với các đặc
tính đặc biệt của 8951 như ở bảng sau:
P3.0/RXT 10
Bit Tên Chức năng chuyển đổi
P3.1/TXD 11
P3.0 RXT Ngõ vào dữ liệu nối tiếp.
P3.1 TXD Ngõ xuất dữ liệu nối tiếp. P3.2/INT0 12
P3.2 INT0\ Ngõ vào ngắt cứng thứ 0.
P3.3 INT1\ Ngõ vào ngắt cứng thứ 1. P3.3/INT1 13
P3.4 T0 Ngõ vào của TIMER/COUNTER thứ 0.
P3.5 T1 Ngõ vào của TIMER/COUNTER thứ 1. P3.4/T0 14
P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
P3.5/T1 15
P3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài.
P3.6/WR 16

P3.7/RD 17

8
4/12/2022

2.4 Tổ chức bộ nhớ

AT89C51

2.4 Tổ chức bộ nhớ


1 40

2 39

3 Ram Ram
(Internal) (External)
4

5
31

30

Rom 29
(Internal) Rom
(External)

AT89C51

9
4/12/2022

8051 có 256 byte Ram (00 đến FF) với 210 vị


trí bit được định địa chỉ bao gồm:
- 16 byte định địa chỉ từng bit ở địa chỉ từ 20H đến
2FH (16 byte x 8 bit = 128 bit).
- Vùng RAM đa mục đích ( đa dụng): 80 byte đặt ở
địa chỉ từ 30H đến 7FH.
31 byte từ
địa chỉ 00H đến 1FH.
- 21 thanh ghi chức năng đặc biệt SFR chiếm phần
trên của Ram nội từ địa chỉ 80H đến FFH.

10
4/12/2022

Bộ nhớ mở rộng (Memory expansion)

EA

P0 Dữ liệu từ
A0-A7
89C51
A15-A8

CHÂN 30
ALE IC NHỚ
A7-A0
P2 A8-A15 D7-D0

WR
WR

Chu kì ghi bộ nhớ

22

11
4/12/2022

- Vùng nhớ dữ liệu: 89C51 có khả năng quản lý vùng không gian nhớ dữ liệu lên đến
64Kb (do có 16 tín hiệu địa chỉ), được đánh địa chỉ từ (0000H-FFFFH), dùng để chứa dữ liệu.

P0 Dữ liệu từ
A0-A7
IC nhớ A15-A8

CHÂN 30
ALE IC NHỚ
A7-A0
D7-D0
P2
A8-A15
RD
RD

Chu kì đọc (dữ liệu) bộ nhớ

23

- Vùng nhớ chương trình: 89C51 có khả năng quản lý vùng không gian nhớ lên đến
64Kb (do có 16 tín hiệu địa chỉ), được đánh địa chỉ từ (0000H-FFFFH), dùng để chứa mã lệnh
(chương trình của người dùng), vùng nhớ này chỉ được sử dụng khi chân 31 của vi điều khiển
được nối mass.

P0 A0-A7 Mã lệnh
A15-A0

ALE
IC NHỚ
D7-D0
P2 A8-A15

RD
PSEN

RD

24
Chu kì đọc (mã lệnh) bộ nhớ

12
4/12/2022

Reading ROM (1/2)


PSEN 0
1 RD
0
ALE 1 1 OC
1 G 74LS573
0 0
P0.01 1 A0
0 0 D
1 1
P0.7 0 0 A7
1 1
1 Address
1
1
1
D0 1
1
0
D7 0
EA 0
1
1
1
1
P2.0 0 A8
1
P2.7 0
1 A15
1

8051 ROM

Reading ROM (1/2)


1. Send address to 2. 74573 latches the address and send to
ROM ROM
PSEN OE
ALE 74LS573 OC
G
P0.0 A0
D
P0.7 A7
Address
D0
D7
EA

P2.0 A8
P2.7 A12

8051 ROM

13
4/12/2022

Reading ROM (2/2)


2. 74573 latches the address and send to ROM

PSEN OE
ALE
G 74LS373 OC
P0.0 A0
D
P0.7 Address A7

D0
D7
EA 3. ROM send the
instruction back
P2.0 A8
P2.7 A12

8051 When ALE=0, P0 gởi data D0-D7. ROM


When ALE=1, P0 gởi address A0-A7

Thanh ghi ACC (Accumulator)

• Kí hiệu là A.
• Có độ lớn 8-bit (1-byte).
• Thanh ghi A ở địa chỉ E0H.
• Thanh ghi tính toán chính của vi điều
khiển (sử dụng linh hoạt nhất cho các câu
lệnh).
X X X X X X X X
E0 ACC

14
4/12/2022

Thanh ghi B
• Thanh ghi tính toán phụ có độ lớn 8-bit
(1-byte)
• Thanh ghi B ở địa chỉ F0H
• Thường được dùng chung với thanh ghi A
trong các phép toán nhân, chia.
• Các bit được định địa chỉ của thanh ghi B
từ F0H đến F7H.
X X X X X X X X
F0 B

Thanh ghi Rn
• Có 8 thanh ghi Rn:
R0; R1; R2; R3; R4; R5; R6; R7.
• Thanh ghi Rn ở địa chỉ 00 đến 07.
• Có độ lớn 8-bit (1-byte).
Bank 0 Bank 1 Bank 2 Bank 3

7 R7 F R7 17 R7 1F R7

6 R6 E R6 16 R6 1E R6

5 R5 D R5 15 R5 1D R5

4 R4 C R4 14 R4 1C R4

3 R3 B R3 13 R3 1B R3

2 R2 A R2 12 R2 1A R2

1 R1 9 R1 11 R1 19 R1

0 R0 8 R0 10 R0 18 R0

15
4/12/2022

Ngăn xếp trong 8051 (SP)


• Ngăn xếp là một vùng bộ nhớ RAM được CPU sử
dụng để lưu thông tin tạm thời.
• Thanh được dùng để chỉ đến ngăn xếp thanh ghi
con trỏ ngăn xếp SP (Stack Pointer) có địa chỉ
81H.
• Con trỏ ngăn xếp trong 8051 chỉ rộng 8 bit.
• Khi 8051 được cấp nguồn thì SP chứa giá trị 07.
• Việc lưu lại một thanh ghi CPU trong ngăn xếp
được gọi là một lần cất vào PUSH và việc nạp nội
dung của ngăn xếp trở lại thanh ghi CPU được gọi
là lấy ra POP.

Thanh ghi PC
• Bộ đếm Chương trình (Program Counter)
có độ rộng 2-byte
• Khi 8051 khởi động, PC chứa luôn bắt đầu
từ giá trị 0000 và được tăng lên mỗi khi
một lệnh được thực hiện.
• Chức địa chỉ câu lệnh thực thi ở chu kỳ
tiếp theo (cho biết 8051 nơi lệnh tiếp theo
để thực hiện được tìm thấy trong bộ nhớ).

16
4/12/2022

• I/O port pins


– 4 cổng (Port) vào ra dữ liệu P0, P1, P2, P3.
– Mỗi cổng có 8 chân.
▪ Port 0 (pins 32-39):P0(P0.0~P0.7)
▪ Port 1(pins 1-8) :P1(P1.0~P1.7)
▪ Port 2(pins 21-28) :P2(P2.0~P2.7)
▪ Port 3(pins 10-17) :P3(P3.0~P3.7)
1 0 0 1 0 1 1 0

.7 .6 .5 .4 .3 .2 .1 .0

P 0.X

Hoạt động vào ra


Read latch Vcc
TB2
2. Chân ic nối
1. Xuất “0” đến chân Load(L1) đất
D Q
0 P1.X
Internal CPU
bus P1.X pin
1 output 0
Write to latch Clk Q M1

TB1
Read pin

8051 IC

17
4/12/2022

Read latch Vcc


TB2
1. Xuất “1” đến chân IC Load(L1) 2. Chân IC=“1”

1 1 P1.X pin
Internal CPU D Q
bus
P1.X
0 M1
Write to latch Clk Q

TB1
Read pin

Reading “High” at Input Pin

Read latch Vcc 2. MOV A,P1


TB2 external pin=High
1. write a 1 to the pin MOV Load(L1)
P1,#0FFH

1 1 P1.X pin
Internal CPU D Q
bus
P1.X
0 M1
Write to latch Clk Q

TB1
Read pin
3. Read pin=1 Read
latch=0 Write to latch=1

18
4/12/2022

Port 0 with Pull-Up Resistors

Vcc
8xR
10 K
P0.0
8051 P0.1

Port
P0.2
P0.3
P0.4 0
P0.5
P0.6
P0.7

19

You might also like