Thứ Ba, 21 tháng 1, 2014

Giáo trình Vi điều khiển bên trong cơ điện tử

Các loại vi điều khiển chuyên dụng của các hãng sản xuất khác: Các loại
vi điều khiển này được sử dụng chuyên dụng theo chức năng cần điều khiển.
II.SƠ LƯỢC PHẦN CỨNG VI ĐIỀU KHIỂN-GIAO TIẾP BÊN NGOÀI
Các thành viên của họ MCS-51 (Atmel) có các đặc điểm chung như sau:
Có 4/8/12/20 Kbyte bộ nhớ FLASH ROM bên trong để lưu chương trình.
Nhờ vậy Vi điều khiển có khả năng nạp xoá chương trình bằng điện đến 10000
lần.
128 Byte RAM nội
4 Port xuất/nhập 8 bit
Từ 2 đến 3 bộ định thời 16-bit
Có khả năng giao tiếp truyền dữ liệu nối tiếp
Có thể mở rộng không gian nhớ chương trình ngoài 64KByte (bộ nhớ
ROM ngoại): khi chương trình do người lập trình viết ra có dung lượng lớn
hơn dung lượng bộ nhớ ROM nội, để lưu được chương trình này cần bộ nhớ
ROM lớn hơn, cách giải quyết là kết nối Vi điều khiển với bộ nhớ ROM từ bên
ngoài (hay còn gọi là ROM ngoại). Dung lượng bộ nhớ ROM ngoại lớn nhất
mà Vi điều khiển có thể kết nối là 64KByte
Có thể mở rộng không gian nhớ dữ liệu ngoài 64KByte (bộ nhớ RAM
ngoại)
Bộ xử lí bit (thao tác trên các bit riêng rẽ)
210 bit có thể truy xuất đến từng bit
1.2.KHẢO SÁT SƠ ĐỒ CHÂN
Mặc dù các thành viên của họ MSC-51 có nhiều kiểu đóng vỏ khác nhau,
chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông
QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip
Carrier) và đều có 40 chân cho các chức năng khác nhau như vào ra I/0, đọc ,
ghi , địa chỉ, dữ liệu và ngắt. Tuy nhiên, vì hầu hết các nhà phát triển chính
dụng chíp đóng vỏ 40 chân với hai hàng chân DIP, nên chúng ta cùng khảo sát
Vi điều khiển với 40 chân dạng DIP.
Hình 1.2.1
1.2.1. Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho Vi điều
khiển
Nguồn điện cấp là +5V±0.5.
1.2.2. Chân GND:Chân số 20 nối GND(hay nối Mass).
Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn
giản là sử dụng IC ổn áp 7805.
1.2.3. Port 0 (P0)
Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
Chức năng xuất/nhập :các chân này được dùng để nhận tín hiệu từ bên
ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín
hiệu để điều khiển led đơn sáng tắt.
Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này
(hoặc Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có
kết nối với bộ nhớ ngoài), đồng thời Port 0 còn được dùng để định địa chỉ của
bộ nhớ ngoài.
1.2.4.Port 1 (P1)
Port P1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường
xuất/nhập, không có chức năng khác.
1.2.5.Port 2 (P2)
Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:
Chức năng xuất/nhập
Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài
có dung lượng lớn,cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm
nhận, byte cao do P2 này đảm nhận.
1.2.6.Port 3 (P3)
Port 3 gồm 8 chân (từ chân 10 đến 17):
Chức năng xuất/nhập
Với mỗi chân có một chức năng riêng thứ hai như trong bảng sau

Bit Tên Chức năng
P3.0 RxD Ngõ vào nhận dữ liệu nối tiếp
P3.1 TxD Ngõ xuất dữ liệu nối tiếp
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.4 T0 Ngõ vào của Timer/Counter thứ 0
P3.5 T1 Ngõ vào của Timer/Counter thứ 1
P3.6 WR Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài
P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài
P1.0 T2 Ngõ vào của Timer/Counter thứ 2
P1.1 T2X Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2
1.2.7. Chân RESET (RST)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban
đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ
này ở mức 1 tối thiểu 2 chu kì máy.
1.2.8.Chân XTAL1 và XTAL2
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung
clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ
để tạo nguồn xung clock ổn định.
1.2.9. Chân cho phép bộ nhớ chương trình PSEN
PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy
xuất bộ nhớ chương trình ngoài. Chân này thường được nối với
chân OE (output enable) của ROM ngoài.
Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra
tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì máy
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức
logic không tích cực (logic 1)
(Không cần kết nối chân này khi không sử dụng đến)
1.2.10. Chân ALE (chân cho phép chốt địa chỉ-chân 30)
Khi Vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng là
bus địa chỉ, vừa có chức năng là bus dữ liệu do đó phải tách các đường dữ liệu
và địa chỉ. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp
các đường địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi
điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock cung
cấp cho các phần khác của hệ thống.
Ghi chú: khi không sử dụng có thể bỏ trống chân này
1.2.11. Chân EA
Chân EA dùng để xác định chương trình thực hiện được lấy từ ROM nội
hay ROM ngoại.
Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy
từ bộ nhớ nội
Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy từ
bộ nhớ ngoại

1.3.KẾT NỐI PHẦN CỨNG
1.3.1.Kết nối trên hai chân XTAL1 và XTAL2.
Mạch dao động được đưa vào hai chân này thông thường được kết nối với
dao động thạch anh như sau:
Hình 1.2.2
Ghi chú: C1,C2= 30pF±10pF (thường
được sử dụng với C1,C2 là tụ 33pF) dùng
ổn định dao động cho thạch anh.

Hình 1.2.3
Hoặc có thể cấp tín hiệu xung clock lấy từ
một mạch tạo dao động nào đó và đưa vào Vi
điều khiển theo cách sau:
NC: để trống, chân XTAL2 để trống
1.3.2.Chu kì máy
Gọi f
zat
là tần số dao động của thạch anh. Đối với 89Sxx có thể sử dụng
thạch anh có tần số f
zat
từ 2MHz đến 33MHz.
Chu kì máy là khoảng thời gian cần thiết được qui định để Vi điều khiển
thực hiện hoàn thành một lệnh cơ bản. Một chu kì máy bằng 12 lần chu kì dao
động của nguồn xung dao động cấp cho nó.
T
ck
= 12.T
oc
Với: T
ck
là chu kì máy
T
oc
là chu kì của nguồn xung dao động cấp cho Vi điều khiển
Như vậy:
Với: T
ck
là chu kì máy
f
oc
là tần số dao động cấp cho Vi điều khiển.
Ví dụ: Ta kết nối Vi điều khiển với thạch anh có tần số f
zat
là 12MHz, thì chu
kì máy
T
ck
=12/(12.10
6)
=10
-6
s =1µs
Chính vì lí do thạch anh có tần số f
zat
là 12MHz tạo ra chu kì máy là
1µs, thuận lợi cho việc tính toán thời gian khi lập trình do đó thạch anh có tần
số f
zat
là 12MHz thường được sử dụng trong thực tế.
Khi giao tiếp truyền nối tiếp với máy vi tính dùng thạch anh có tần số f
zat

11.0592MHz.
1.3.3. Kết nối chân RESET-chân 9
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều
khiển được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho
Vi điều khiển hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái
hoạt động ban đầu. Vì vậy chân RESET được kết nối như sau:
Với Vi điều khiển sử dụng thạch anh có tần số f
zat
= 12MHz sử dụng
C=10µF và R=10KΩ.

Với Vi điều khiển sử dụng thạch anh có tần số f
zat
=
12MHz sử dụng C=10µF và R=10KΩ.

Hình 1.2.4
1.3.4. Kết nối các Port với led.
Các Port khi xuất tín hiệu ở mức logic 1 thường không đạt đến 5V mà dao
động trong khoảng từ 3.5V đến 4.9V và dòng xuất ra rất nhỏ dưới 5mA(P0,P2
dòng xuất khoảng 1mA; P1,P3 dòng xuất ra khoảng 1mA đến 5mA)
vì vậy dòng xuất này không đủ để có thể làm led sáng
Tuy nhiên khi các Port xuất tín hiệu ở mức logic 0 dòng điện cho phép đi
qua lớn hơn rất nhiều:
Chân Vi điều khiển khi ở mức 0:
Dòng lớn nhất qua P0 : -25mA
Dòng lớn nhất qua P1,P2,P3 : -15mA

Do đó khi kết nối với led hoặc các thiết bị khác Vi điều khiển sẽ gặp trở
ngại là nếu tác động làm led sáng khi Vi điều khiển xuất ở mức 1, lúc này dòng
và áp ra không đủ để led có thể sáng rõ (led đỏ sáng ở điện áp 1.6V-2.2V và
dòng trong khoảng 10mA). Khắc phục bằng cách sau:
a.Cho led sáng khi Vi điều khiển ở mức 0:
Px.x thay cho các chân xuất của các
Port. Ví dụ: Chân P1.1, P2.0, v.v
Khi Px.x ở mức 1 led không sáng
Khi Px.x ở mức 0 led sáng
Hình 1.2.5
b. Cho led sáng khi Vi điều khiển xuất ở mức 1:
Như đã trình bày vì ngõ ra Vi điều khiển khi xuất ở mức 1 không đủ để cho
led sáng, để led sáng được cần đặt thêm một điện trở kéo lên nguồn VCC(gọi là
điện trở treo).
Hình 1.2.6
Tuỳ từng trường hợp mà chọn R2 để dòng và áp phù hợp với thiết bị nhận.
Khi Px.x ở mức 0, có sự chênh lệch áp giữa nguồn VCC và chân Px.x
-dòng điện đi từ VCC qua R2 và Px.x về Mass, do đó hiệu điện thế giữa hai
chân led gần như bằng 0, led không sáng.
Khi Px.x ở mức 1 (+5V),dòng điện không chạy qua chân Vi điều khiển để
về mass được, có sự lệch áp giữa hai chân led, dòng điện trong trường hợp này
qua led về Mass do đó led sáng.
R2 thường được sử dụng với giá trị từ 4.7KΩ đến 10KΩ. Nếu tất cả các
chân trong 1 Port đều kết nối để tác động ở mức cao thì điện trở R2 có thể thay
bằng điện trở thanh 9 chân vì nó có hình dáng và sử dụng dễ hơn khi làm mạch
điện.
c. Ngoài cách sử dụng điện trở treo, việc sử dụng cổng đệm cũng có tác
dụng thay đổi cường độ dòng điện xuất ra khi ngõ ra ở mức 1, cổng đệm xuất ra
tín hiệu ở mức 1 với áp và dòng lớn khi có tín hiệu mức 1 đặt ở ngõ vào. Tùy
theo yêu cầu của người thiết kế về dòng và áp cần thiết mà chọn IC đệm cho
phù hợp. Chẳng hạn từ một ngõ ra P0.0 làm nhiều led sáng cùng lúc thì việc sử
dụng IC đệm được ưu tiên hơn.
Có thể sử dụng 74HC244 hoặc 74HC245, tuy nhiên 74HC245 được cải tiến
từ 74HC244 nên việc sử dụng 74HC245 dễ dàng hơn trong thiết kế mạch.
Hình 1.2.7
CẤU TRÚC BÊN TRONG CỦA VI ĐIỀU KHIỂN
1.4.BỘ NHỚ CHƯƠNG TRÌNH- BỘ NHỚ ROM
Bộ nhớ ROM dùng để lưu chương trình do người viết chương trình viết ra. Chương
trình là tập hợp các câu lệnh thể hiện các thuật toán để giải quyết các công việc cụ thể,
chương trình do người thiết kế viết trên máy vi tính, sau đó được đưa vào lưu trong ROM
của vi điều khiển, khi hoạt động, vi điều khiển truy xuất từng câu lệnh trong ROM để
thực hiện chương trình. ROM còn dùng để chứa số liệu các bảng, các tham số hệ thống,
các số liệu cố định của hệ thống. Trong quá trình hoạt động nội dung ROM là cố định,
không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương
trình (do các mạch điện riêng biệt thực hiện).
Bộ nhớ ROM được tích hợp trong chip Vi điều khiển với dung lượng tùy vào chủng
loại cần dùng, chẳng hạn đối với 89S52 là 8KByte, với 89S53 là 12KByte.
Bộ nhớ bên trong Vi điều khiển 89Sxx là bộ nhớ Flash ROM cho phép xóa bộ nhớ
ROM bằng điện và nạp vào chương trình mới cũng bằng điện và có thể nạp xóa nhiều lần
Bộ nhớ ROM được định địa chỉ theo từng Byte, các byte được đánh địa chỉ theo số
hex-số thập lục phân, bắt đầu từ địa chỉ 0000H, khi viết chương trình cần chú ý đến địa
chỉ lớn nhất trên ROM, chương trình được lưu sẽ bị mất khi địa chỉ lưu vượt qua vùng
này. Ví dụ: AT89S52 có 8KByte bộ nhớ ROM nội, địa chỉ lớn nhất là 1FFFH, nếu
chương trình viết ra có dung lượng lớn hơn 8KByte các byte trong các địa chỉ lớn hơn
1FFFH sẽ bị mất.
Ngoài ra Vi điều khiển còn có khả năng mở rộng bộ nhớ ROM với việc giao tiếp với bộ
nhớ ROM bên ngoài lên đến 64KByte(địa chỉ từ 0000H đến FFFFH).
1.5.BỘ NHỚ DỮ LIỆU- BỘ NHỚ RAM
Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và
kết quả cuối cùng của các phép toán, xử lí thông tin. Nó cũng dùng để tổ chức các vùng
đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu.
RAM nội trong Vi điều khiển được tổ chức như sau:
Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập lục phân
(số Hex)
Các bank thanh ghi có địa chỉ 00H đến 1FH
210 vị trí được định địa chỉ bit
các vị trí RAM bình thường
Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH.
Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ" , nếu các ô nhớ có chức năng
đặc biệt thường được gọi là "thanh ghi" , nếu là bit thì được gọi là "bit nhớ" .
Cấu trúc bộ nhớ RAM bên trong Vi điều khiển
địa chỉ
byte
Địa chỉ bit

địa chỉ
byte
Địa chỉ bit
Kí hiệu

Không có nhận xét nào:

Đăng nhận xét