Tải bản đầy đủ (.pdf) (56 trang)

Ứng dụng vi điều khiển trần văn hùng 2016

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (594.23 KB, 56 trang )

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


×