18/02/16
MÔN HỌC
Ứng dụng Vi điều khiển
(Microcontroller Applications)
By Trần Văn Hùng
Mechatronics Dept
/>Email:
Tài liệu tham khảo
1. Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio,
Prentice Hall, 2003
2. Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster, Prentice Hall, 1998
3. Vi xử lý, Văn Thế Minh, NXB Giáo Dục.
4. Họ vi điều khiển 8051,
8051, Tống Văn On.
5. Kỹ thuật Vi điều khiển với AVR, Ngô Diên Tập, NXB KH&KT, 2003
1
18/02/16
Nội dung chương trình
Ch01
Ch01:: Các hệ đếm và mã hoá
Ch02
Ch02:: Hệ thống vi xử lý
Ch03
Ch03:: Bộ nhớ
Ch04
Ch04:: Họ vi điều khiển AVR
Ch05
Ch05:: Ngôn ngữ lập trình CodevisionAVR
Ch06
Ch06:: Input/Output
Chương 1: Các hệ đếm và mã hoá
Các hệ đếm dùng trong máy tính
Các phép toán số học đối với hệ hai
Mã ASCII
2
18/02/16
1.1 Các hệ đếm dùng trong máy tính
1.1.1 Hệ mười và hệ hai
Con người thì quen dùng hệ cơ số mười (hệ mười)
1234,56 = 1.103 + 2.102 + 3.101 + 4.100 + 5.10-1 + 6.10-2
Máy tính thì chỉ làm việc với hệ cơ số hai (hệ hai)
1011,01 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 MSB
LSB
Nibble gồm 4 bit
3
0
Byte gồm 8 bit
7
0
Word gồm 16 bit
15
0
1.1.2 Chuyển đổi giữa hệ mười và hệ hai
Đổi hệ hai sang hệ mười
1011,,012 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 = 11
1011
11,,2510
Đổi hệ mười sang hệ hai
4610 = 1011102
46
0
2
23
1
2
11 2
1 5 2
1 2
0
2
1
1
2
0
Hình 1. Một cách đổi hệ mười sang hệ hai
3
18/02/16
1.1.2 Chuyển đổi giữa hệ mười và hệ hai (tiếp)
Đổi số thập phân hệ mười sang hệ hai
0,12510 = 0,0012
0,125
x
2
=
0 ,250
0,250
x
2
=
0 ,500
0,500
x
2
=
1 ,000
Số BCD (số hệ mười mã hoá bằng hệ hai)
Số BCD thích hợp cho các thiế bị đo có hiển thị số ở đầu ra.
123410 = 0001 0002 0003 0004BCD
Hệ mười sáu
123410 =
0100 1101 00102 =
4D216
1.2 Các phép toán số học đối với hệ hai
1.2.1 Phép cộng
ana(n
(n--1) ... a2a1a0 + bmb(m(m-1) ... b2b1b0 = ckc(k
(k--1) ... c2c1c0 (hệ cơ số x)
ci
=
(ai + bi + (ai-1 + bi-1)%x )/x
Ví dụ cộng hệ hai
+
1101 1001
0001 1011
1111 0100
1.2.2 Phép trừ và số bù hai
a. Phép trừ
ana(n
(n--1) ... a2a1a0 - bmb(m(m-1) ... b2b1b0 = ckc(k
(k--1) ... c2c1c0 (hệ cơ số x)
ci
=
(ai – Bi-1) – bi
(nếu (ai – Bi-1) >= bi và Bi = 0)
ci
=
(ai – Bi-1 + x) – bi
(nếu (ai – Bi-1) < bi và Bi = 1)
Ví dụ trừ hệ hai
-
1101 1001
0001 1011
1011 1110
4
18/02/16
1.2.2 Phép trừ và số bù hai (tiếp
tiếp))
b. Số bù hai
Ta có thể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ.
Để tìm số bù hai của một số A ta làm theo các bước sau:
+ Biểu diễn số A số hệ hai của nó.
+ Tìm số bù một ((bù
bù logic)
logic) của số đó (đảo
(đảo bít).
bít).
+ Cộng một vào số bù một ở trên để nhận được số bù hai của A.
1.2.3 Phép nhân
Ví dụ nhân 2 số hệ hai có độ dài 4 bít
a
0
0
1
1
b a.b
0 0
1 0
0 0
1 1
Bảng 1. Quy tắc phép nhân
0
0 0
1 1 0
1 1 1
1
1
1
0
0
1
0
1
0
1
0
0
0 1
0 1
0 1
0
1 0 1
1.2.2 Phép chia
b. Chia trực tiếp
Ví dụ: 35/5 = 7
1 0 0 0 1 1
0 0 0
1 0 0 0
1 0 1
1 1 1
1 0 1
1 0 1
1 0 1
0
1 0 1
0 1 1 1
b. Chia gián tiếp
Lấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán
tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0.
5
18/02/16
Chương 2: Hệ thống vi xử lý
Ưu và nhược điểm hệ nhúng
Vi xử lý, vi điều khiển
Các họ vi điều khiển
2.1 Tại sao lại sử dụng hệ nhúng?
2.1.1 Ưu điểm
Khả năng thích nghi cao
Tính linh động
Khả năng thay đổi dễ dàng
Khả năng tái sử dụng tài nguyên (thư viện,…)
Giá thành rẻ
...
2.1.2 Nhược điểm
Tốc độ phản ứng chậm
Độ ổn định thấp
Không xử lý được gía trị liên tục
...
6
18/02/16
2.2 Vi điều khiển, vi xử lý
Data bus
CPU
GeneralPurpose
Microprocessor
RAM
ROM
I/O
PORT
Timer,
Wdg,
ADC,
DAC,
…
USB,
UARST,
I2C,…
Address bus
TERMINOLOGY
Microcontroller vs. Microprocessor vs. Microcomputer
A microprocessor is a central processing unit on a
single chip.
A microprocessor combined with support circuitry ,
peripheral I/O components and memory (RAM & ROM)
used to be called a “microcomputer
“microcomputer.”
.”
A microprocessor where all the components mentioned
above are combined on the same single chip that the
microprocessor is on, is called a microcontroller
microcontroller..
7
18/02/16
2.3 Kiến trúc vi điều khiển
Đơn vị xử lý số học (ALU)
Bộ nhớ
Input
Output
Đơn vị điều khiển
2.3.1 Đơn vị xử lý số học (ALU)
Thực hiện phép toán và phép logic trên dữ liệu
Dữ liệu có thể lấy trên bộ nhớ hoặc I/O
Kết quả có thể được đưa ra ngoài hoặc vào bộ nhớ
(kết quả được lưu lại)
General
Purpose
Registrers
ALU
8
18/02/16
2.3.2 Bộ nhớ
Lưu trữ lệnh hay dữ liệu
Có thể để lưu trữ dữ liệu tạm thời
Có thể ghi/đọc được bởi bộ điều khiển
Program Memory
$000
Program Flash
(4K x 16)
Data Memory
32 Gen. Purpose $0000
Working Resisters $001F
$0020
64 I/O Resisters
$005F
$0060
Data Memory
$000
EEPROM
(512 x 8)
$1FF
Internal SRAM
(512 x 8)
$025F
$FFF
2.3.3 Input
Thiết bị cho phép thông tin và dữ liệu vào bên trong
bộ vi điều khiển
Ví dụ: ADC, I2C, UART, …
2.3.4 Output
Thiết bị chuyển đổi thông tin và dữ liệu từ bộ nhớ ra
thiết bị ngoại vi.
Thiết bị ngoại vi: LED, LCD, máy in, …
9
18/02/16
2.3.5 Đơn vị điều khiển
Cung cấp xung nhịp và điều khiển tín hiệu
Tìm nạp lệnh và dữ liệu
Chuyển dữ liệu tới/từ I/O
Giải mã lệnh
Thực hiện phép tính số học/logic
Đáp ứng tín hiệu ngoài (Reset/Ngắt)
2.3.6 Một số họ vi điều khiển
Vi điều khiển 8051
8051, 89Cxx, 89Sxx, 89Dxx,…
Vi điều khiển AVR
AVR 8 bít, AVR 16 bít,…
Vi điều khiển PIC
PIC 8 bít, PIC 16 bít,…
Vi điều khiển MCUs của Philips
P8xCxx,…
…
10
18/02/16
2.3.6 Các họ vi điều khiển (tiếp – so sánh)
Tốc độ xử lý (clock, clock cycle execution)
Khả năng tích hợp (ADC, DAC, UART, I2C,…)
Dải điện áp hoạt động (Operating Voltages)
Công suất đầu ra (DC current per I/O pin)
Khả năng chống nhiễu (Noise Reduction)
Tập lệnh (Instruction)
Công suất IC (Power consumption)
...
Chương 3: Bộ nhớ
Bộ nhớ bán dẫn
Giải mã địa chỉ cho bộ nhớ
Phối ghép bộ nhớ
Mở rộng bộ nhớ
11
18/02/16
3.1 Bộ nhớ bán dẫn
Các nhóm tín hiệu
ROM (read only memory)
RAM (random access memory)
Memory
ROM
PROM
EPROM
EEPROM
RAM
Read
Only
Memory
Programmable ROM
Radom
Access
Memory
SRAM
DRAM
Static RAM
Dynamic RAM
Erasable PROM
Electrically EPROM
CACHE
L1, L2, L3
3.1.1 Các nhóm tín hiệu
Address
WR
A0
A1
A2
..
.
D0
D1
D2
..
.
An
Dm
Data
WE
CS
Select IC
OE
RD
Hình 3. Sơ đồ khối của bộ nhớ
12
18/02/16
a. Nhóm tín hiệu địa chỉ
Có tác dụng chọn ra một ô nhớ cụ thể
Số đường địa chỉ sẽ quyết định có tối đa bao nhiêu ô
nhớ. Ví dụ có m đường địa chỉ vậy thì tối đa 2m ô nhớ.
b. Nhóm tín hiệu dữ liệu
Thường là đầu ra của ROM và là vào/ra đối với RAM
Các mạch nhớ thường có đầu vào/ra là 3 trạng thái.
Số đường dây dữ liệu quyết định độ dài từ nhớ của
mỗi ô nhớ.
c. Nhóm tín hiệu chọn vi mạch
Chọn vi mạch sẽ trao đổi dữ liệu.
Các tín hiệu này thường được nối với đầu ra của bộ
giải mã địa chỉ.
Vi mạch không được chọn thì bus dữ liệu của nó bị
treo (ở trạng thái trở kháng cao).
d. Nhóm tín hiệu điều khiển
Cho phép dữ liệu ra bus.
Bus dữ liệu bị treo nếu không có tín hiệu điều khiển.
Mạch thường chỉ có một tín hiệu điều khiển đọc/ghi.
13
18/02/16
3.1.2 ROM
Bộ nhớ có nội dung đã ghi sẵn chỉ để đọc ra
Chỉ nạp vào một lần duy nhất
Không bị mất thông tin khi mất điện
Address
WR
A0
A1
A2
..
.
D0
D1
D2
..
.
An
Dm
Data
WE
CS
OE
Select IC
RD
Hình 3. Bộ nhớ ROM
3.1.3 ROM có thể lập trình được
a. PROM (Programmable ROM)
Thời gian truy cập nhanh 120120-250ns
Chỉ nạp một lần duy nhất bằng các đốt cháy các cầu chì
Điện áp khi lập trình khoảng 1010-13V
VCC
0
Address
Bus
Address
decoder
1
2
D2
D1
D0
14
18/02/16
b. EPROM (erasable PROM)
Thời gian truy cập khoảng 120 – 450 ns
Điện áp lập trình khoảng 1010-25V
Nó có thể được xoá toàn bộ bằng tia cực tím.
Thời gian lập trình cho một ô nhớ lâu (khoảng 50ms)
c. EEPROM (electrically EPROM)
Xoá từng đơn vị nhớ bằng điện, không cần tia cực tím.
Thời gian lập trình cho một ô nhớ khoảng 5ms.
15
18/02/16
d. Flash memory
Thời gian truy cập nhanh (khoảng 120ns).
Thời gian ghi nhanh 10µs
Xóa từng khối nhớ
3.1.4 RAM
Bị mất dữ liệu khi mất điện.
Thời gian truy cập nhanh (có loại 15ns).
Address
input
Input buffers
Decoder
6 line to 64 line
Register 0
Register 1
Register 2
.
.
.
Register 62
Register 63
R/W
CS
Output buffers
Hình 3. Cấu tạo bên trong của 64 x 4 RAM
16
18/02/16
3.1.4 RAM (tiếp)
SRAM (static RAM)
Chế tạo đơn giản
Dễ dàng bảo trì
Thường được sử dụng trong hệ thống có bộ nhớ nhỏ
DRAM (dynamic RAM)
Giá thành thấp
Đòi hỏi mạch phụ trợ
Phải làm tươi (refresh) thường xuyên
Thường được sử dụng trong hệ thống có bộ nhớ lớn
3.2 Giải mã địa chỉ cho bộ nhớ
Phân định không gian tổng thể thành các vùng nhớ khác nhau
Đảm bảo tính đơn trị của xung chọn
Khi thiết kế thường có dự phòng (spare) để có thể mở rộng
mà không phải thiết kế lại mạch.
Tín hiệu địa chỉ
Mạch giải
mã địa chỉ
Các tín hiệu chon chip
Tín hiệu điều khiển
Hình 3. Mạch giải mã địa chỉ
17
18/02/16
3.2.1 Giải mã bằng các mạch NAND
Mạch giải mã địa chỉ đơn giản với đầu ra hạn chế
A0 – A10
D0 - D7
Memory
CE
OE
A11 – A19
RD
IO/M
Hình 3. Mạch giải mã đơn giản dùng NAND
3.2.2 Giải mã bằng các mạch 74138
Là mạch giải mã 3 đầu vào, 8 đầu ra
A0 – A12
Memory
CE
74LS138
A13 – A15
A16 – A18
6
A
Y0
15
B
Y1
14
C
Y2
13
Y3
12
Y4
11
G2A
Y5
10
G2B
Y6
9
G1
Y7
7
5
IO/M
A19
4
D0 – D7
OE
RD
Hình 3. Sơ đồ giải mã dùng 74LS138
18
18/02/16
3.2.2 Giải mã bằng các mạch 74138 (tiếp)
Mức tích cực là mức 0
Chỉ duy nhất một đầu ra ở mức tích cực
3.2.3 Giải mã dùng ROM
Cùng một chức năng như 74138
Giảm thiểu số mạch phụ trợ
A0 – A12
Memory
CE
A13 – A19
A0
Y0
15
A1
Y1
14
A2
Y2
13
A3
Y3
12
A4
Y4
11
A5
Y5
10
A6
Y6
9
Y7
7
A7
D0 – D7
OE
RD
G1
IO/M
Hình 3. Sơ đồ giải mã dùng PROM
19
18/02/16
3.2.3 Giải mã dùng ROM (tiếp)
Chỉ sử dụng 8 byte đầu tiên, các byte khác đều chứa cùng
một giá trị FFh
Các đầu vào
G A7
A
A
6
5
A4
Các đầu ra
A
A
3
2
A1
A
0
O7
O
O
6
5
O4
O
O
3
2
O1
O
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
0
1
1
1
1
1
1
0
0
1
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
0
0
1
1
0
0
1
1
1
1
0
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
1
0
1
1
0
0
1
1
1
1
1
1
0
1
1
1
1
1
1
0
1
0
0
1
1 1 1 1 1
Các địa chỉ khác
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
3.3 Ghép nối bộ nhớ
Định địa chỉ các ô nhớ.
Dung lượng bộ nhớ.
Tốc độ bộ nhớ ko đáp ứng đươc tốc độ VĐK thì ta phải có
mạch tăng thêm chu kỳ đợi
A0 – A11
Bộ tạo xung trễ
Ready
CS
CE
74LS138
A12 – A14
A15 – A19
6
IO/M
A
Y0
15
B
Y1
14
C
Y2
13
Y3
12
Y4
11
Y5
10
G2B
Y6
9
G1
Y7
7
G2A
5
+Vcc
4
D0 – D7
Memory
OE
F8000-F8FFF
RD
FF000-FFFFF
Hình 3. Phối ghép bộ nhớ
20
18/02/16
3.3 Ghép nối bộ nhớ (tiếp)
Sử dụng bộ dồn kênh để giảm số chân, tăng dung lượng bộ
nhớ lên
A0/A7
-------
A6/A13
7 bit
Column address register
CAS
A7 A8 A9 A10 A11 A12 A13
RAS
Column address decoder
-----------
A0
A1
A0/ A7 – A6/A13
7 bit
Row
address
register
A2
A3
A4
R/W
Row
address
decoder
A5
|
|
|
|
|
|
|
|
128 x 128
Cell array
Data in
A6
Data out
Hình 3. Kiến trúc của bộ nhớ 4116
3.4 Mở rộng bộ nhớ
3.4.1 Mở rộng kích thước ô nhớ
Address bus (AB0 – AB3)
R/W
CS
A3
R/W
A2
A1
A0
R/W
RAM-0
16 x 4
CS
I/03
I/02
I/01
A3
A1
A0
RAM-1
16 x 4
CS
I/00
A2
I/03
I/02
I/01
I/00
Data bus (DB0 – DB7)
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 16 x 8
21
18/02/16
3.4.1 Mở rộng kích thước ô nhớ (tiếp)
Address bus (AB0 – AB10)
R/W
R/W
RAM-0
2K x 8
R/W
RAM-2
2K x 8
2K x 8
CS
CS
I/00 - I/07
R/W
RAM-1
RAM-3
2K x 8
CS
CS
I/08 - I/015
I/016 - I/023
I/024 - I/031
Data bus (DB0 – DB31)
Hình 3. Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32
3.4.2 Mở rộng số lượng ô nhớ
Address bus (AB0 – AB3)
R/W
AB4
A3
R/W
A2
A1
A0
R/W
RAM-0
16 x 4
CS
I/03
I/02
I/01
A3
A1
A0
RAM-1
16 x 4
CS
I/00
A2
I/03
I/02
I/01
I/00
Data bus (DB0 – DB3)
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 32 x 4
22
18/02/16
Bài tập chương 3
Từ 4K x 8 thành các bộ nhớ sau:
sau:
a.
b.
c.
d.
4K x 32
8K x 8
16K x 8
8K x 32
e. 32K x 32
2
2
3
4
5
Chương 4: Họ vi điều khiển AVR
Giới thiệu chung
Các chức năng điều khiển
Tập lệnh và ngôn ngữ lập trình
23
18/02/16
4.1 Giới thiệu chung
AVR - Kiến trúc RISC
Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
32 thanh ghi đa năng 8 bit
Có thể lên tới 16 MIPS tại tần số 16MHz
Bộ nhớ :
8..256K Flash Mem cho chương trình, ghi/xoá được 10.000
lần
512..4K Byte EEPROM, ghi/xoá 100.000
512…8K Byte SRAM
4.1 Giới thiệu chung (tiếp)
Các modul vào ra (I/O moduls)
ADC 10bit và từ 8..16 kênh Analog
1 đến 2 Programmable UART
Master/Slave ISP Serial Interface
3..4 Timer/Counter: 1 x 16 bit, 2 x 8 bit
WatchDog Timer
Analog Comparator
PWM
Công suất (Power Management):
- 3 chế độ nghỉ (Sleep Mode):
Idle : 1.9 mA
Power--Down: <1µA
Power
PowerSave
(chế độ chạy bình thường: 6mA)
24
18/02/16
4.1 Giới thiệu chung (tiếp)
– Điện áp làm việc :
Vcc 4.04.0-6.0V với AT90S8535
Vcc 2.72.7-6.0V với AT90LS8535
– Tần số CLOCK
0-8MHz với AT90S8535
0-4MHz với AT90LS8535
0-16MHz với Atmegaxx
4.1 Giới thiệu chung (tiếp)
25