Đồ Án Môn Vi Điều khiển
LỜI MỞ ĐẦU
Ngày nay bộ vi điều khiển (Micro-controller) đã rất phổ biến trong các
thiết bị điện và điện tử dân dụng, các bộ vi điều khiển khống chế hoạt động
của các thiết bị như TV, máy giặt, đầu đọc laser, điện thoại…Trong hệ thống
sản xuất tự động, bộ vi điều khiển được sử dụng trong robot, dây chuyền tự
động. Các hệ thống càng thông minh thì vai trò của vi điều khiển càng quan
trọng. Nhưng bộ vi điều khiển là gì, nó có tác dụng và hoạt động như thế nào?
Thực ra bộ vi điều khiển (Micro-controller) là một mạch tích hợp trên
một bộ Chíp có thể lập trình được, dùng để điều khiển hoạt động của hệ
thống. Bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo
lường thời gian và tiến hành đọc mở một cơ cấu nào đó.Người lập trình có thể
sử dụng nhiều ngôn ngữ để lập trình cho vi điều khiển. Nhưng thông thường
người ta thường sử dụng hai ngôn ngữ chính để lập trình là: ngôn ngữ lập
trình C và Assembly.
Trong qúa trình học tập và đặc biệt được sự giúp đỡ tận tình của thầy
Nguyễn Anh Dũng - Giảng viên bộ môn Vi điều khiển - nhóm sinh viên
chúng tôi đã quyết định làm đồ án kết thúc môn vi điều khiển là thiết kế mạch
“Thiết kế mô hình bảng LED điện tử dùng 01 LED ma trận đa sắc”.
Nội dung đồ án gồm 2 phần:
Phần I : cơ sở lý thuyết liên quan đến nội dung đồ án
Phần II : trình tự thiết kế và hoàn chỉnh đồ án
Trường ĐHCN Hà Nội Điện Tử 2 – K9
1
Đồ Án Môn Vi Điều khiển
Tuy đã rất cố gắng tìm hiểu,nghiên cứu và hoàn thiện bài tập lớn nhưng
có thể vẫn còn có những sai sót. Chúng tôi rất mong nhận được sự góp ý của
thầy giáo và các bạn để có thêm những kiến thức vững chắc trong lĩnh vực
điện tử đang theo học. Chắc chắn những kiến thức đó sẽ giúp chúng tôi rất
nhiều trong việc nghiên cứu học tập và công tác sau này.
Xin chân thành cảm ơn !
0K
4K EPROM
8K ROM
0K
4K EPROM
128 bytes
128 bytes
128 bytes
256 bytes
256 bytes
256 bytes
2
2
2
3
3
3
Trường ĐHCN Hà Nội Điện Tử 2 – K9
3
Đồ Án Môn Vi Điều khiển
Bảng 1. Giới thiệu một số IC họ 8951
2.Cấu trúc của IC 89S52:
Trung tâm của 89S52 vẫn là vi xử lý trung tâm (CPU). Để kích thích
cho toàn bộ hệ thống hoạt động, 89S52 có bộ tạo dao động nội với thạch anh
được ghép từ bên ngoài với tần số khoảng từ vài Mhz đến 24 Mhz. Liên kết
các phần tử với nhau là hệ thống BUS nội, gồm có BUS dữ liệu, BUS địa chỉ
và BUS điều khiển. 89S52 có 8K ROM, 256 bytes RAM và một số thanh ghi
bộ nhớ… Nó giao tiếp với bên ngoài qua 3 cổng song song và một cổng nối
tiếp có thể thu, phát dữ liệu nối tiếp với tốc độ lập trình được. Hai bộ định
thời 16 bit của 89S52 còn có 2 ngắt ngoài cho phép nó đáp ứng và xử lý điều
chân PSEN, chân ALE, chân REST…
a. Port 0
Port 0 là cổng song song dùng cho 2 mục đích, nó là các chân từ 32.
Trong những thiết kế nhỏ nó được dùng trong các cổng xuất nhập bình
thường. Ở những thiết kế có sử dụng bộ nhớ ngoài, nó vừa là Bus dữ liệu vừa
là bytes thấp của Bus địa chỉ. Nó còn được dùng chứa những bytes mã khi
nạp ROM nội.
b. Port 1
Port 1 dành cho cổng xuất nhập và chỉ dành cho mục đích này mà thôi.
Nó dùng để giao tiếp với các thiết bị ngoại vi theo từng bit hoặc bytes . Port 1
chiếm các chân từ 1 đến 8.
c. Port 2
Port 2 (chân 21÷ 28) là Port có 2 chưc năng. Ngoài mục đích dành cho
xuất nhập thông thường nó còn dùng làm bytes cao cho các địa chỉ bộ nhớ
ngoài.
d. PSEN (cho phép nạp chương trình)
89S52 có 4 chân tín hiệu điều khiển. PSENT là tín hiệu điều khiển
được xuất ra ở chân 29. Tín hiệu điều khiển này cho phép lập trình ở bộ nhớ
ngoài và thường được nối với các chân OE của EPROM để đọc mã lệnh từ bộ
nhớ ngoài vào thanh ghi đệm của 89S52. Nó xuống mức thấp nhất trong khi
đọc lệnh. Mã lệnh đọc từ EPROM, qua Bus dữ liệu, được chốt vào thanh ghi
của 89S52. Khi thi hành chương trình từ ROM nội PSEN được giữ ở mức cao
(trạng thái không tác động).
e. EA (truy xuất vùng nhớ ngoài)
EA là một tín hiệu vào có thể ở mức cao hay thấp. Nếu ở mức cao
89S52 thi hành chương trình ở ROM nội, 4K/8K chương trình. Nếu ở mức
Trường ĐHCN Hà Nội Điện Tử 2 – K9
8
Đồ Án Môn Vi Điều khiển
thấp, chương trình chỉ được thi hành ở bộ nhớ ngoài. Đối với 80431/ 8231 EA
Bit Tên Chức năng
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
P1.0
P1.1
RXD
TXD
INT0
INT1
T0
T1
W/R
RD
T2
T2EX
Nhận dữ liệu
Phát dữ liệu
Ngắt ngoài 0
Ngắt ngoài 1
Ngõ vào Timer/couter 0
Ngõ vào Timer/ couter 1
Đọc dữ liệu từ bộ nhớ ngoài
Đọc dữ liệu vào bộ nhớ ngoài
Ngõ vào của Timer/ couter
hàng x 8 cột, trong đó các anốt cửa 8 LED trong cùng một hàng được nối với
nhau để tạo thành một đường dây hàng và các katốt cửa 8 LED trong cùng
một cột được nối với nhau để tạo thành một đường dây cột. Như vậy một ma
trận LED 8x8 đơn sắc có tám đường dây hàng và tám đường dây cột, muốn 1
LED trong ma trận sáng ta cần cấp nguồn cho LED và đường dây hàng và
đường dây cột tương ứng với LED đó.
Trường ĐHCN Hà Nội Điện Tử 2 – K9
11
Đồ Án Môn Vi Điều khiển
Một ma trận LED 8x8 đa sắc bao gồm 64 điểm sáng được bố trí thành 8
hàng x 8 cột trong đó mỗi điểm sáng có thể gồm 1 LED màu xanh lục + 1
LED màu đỏ hoặc 1LED màu xanh lục + 1 LED màu xanh lơ + 1 LED màu
đỏ hoặc 1 LED màu xanh lục + 1 LED màu xanh lơ + 2 LED màu đỏ.
Với loại LED ma trận mà mỗi điểm sáng gồm 1 LED màu xanh lục + 1
LED màu đỏ thì điểm sáng hiển thị màu xanh nếu LED đỏ tắt, màu đỏ nếu
LED màu xanh tắt, màu vàng nếu cả 2 LED sáng và tắt nếu cả 2 LED cùng
tắt trong cùng 1 hàng, các Katot của các LED màu xanh được nối với nhau để
tạo thành 1 đường dây hàng thứ nhất và các Katot của các LED màu đỏ được
nối với nhau để tạo thành 1 đường dây hàng thứ 2. Các Anot của 16 LED
trong cùng 1 cột được nối với nhau để tạo thành 1 đường dây cột. Như vậy 1
LED trong ma trận sáng ta cần cấp nguồn cho LED vào đường dây hàng và
đường dây cột tương ứng với LED đó.
II. TRÌNH TỰ THIẾT KẾ VÀ HOÀN CHỈNH ĐỒ ÁN
1. Lập trình
Trường ĐHCN Hà Nội Điện Tử 2 – K9
12
Đồ Án Môn Vi Điều khiển
lập trình cho IC 89S52 bằng ngôn ngữ C và viết trên phần mềm
KeilC Version 3.
Sau đây là toàn bộ chương trình viết bằng C được nạp vào IC.
0x01,0xFB,0xF7,0xFB,0x01,0xFF, //chu M
0xFF,0xFF};
z=0;
while(z<=73)
{
Trường ĐHCN Hà Nội Điện Tử 2 – K9
13
Đồ Án Môn Vi Điều khiển
for(m=1;m<=12;m++)
{
for(n=z;n<=7+z;n++)
{
P0=mangcot[n-z];
if(congtac==1)
{
P2=mangchu1[n];
P1=0xFF;
}
else if(congtac==2)
{
P1=mangchu1[n];
P2=0xFF;
}
else if(congtac==3)
{
P1=P2=mangchu1[n];
}
delay(200);
xoa();
}
{
P0=mangcot[n-z];
if(congtac==1)
{
P2=mangchu2[n];
P1=0xFF;
}
else if(congtac==2)
{
P1=mangchu2[n];
P2=0xFF;
}
else if(congtac==3)
{
P1=P2=mangchu2[n];
}
delay(200);
xoa();
}
}
++z;
}
}
void chayso(void)
{
unsigned char mangso[73]={0x3D,0x5D,0x6D,0x75,0x79,0xFF,
0x83,0x7D,0x7D,0x7D,0x83,0xFF, //so 0
0xF7,0xFB,0x01,0xFF, //so 1
0x7B,0x3D,0x5D,0x6D,0x73,0xFF, //so 2
0xBB,0x7D,0x6D,0x6D,0x93,0xFF, //so 3
P1=P2=mangso[n];
}
delay(200);
xoa();
}
}
++z;
}
}
void chaychu(void)
{
unsigned char
mangchu[97]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
Trường ĐHCN Hà Nội Điện Tử 2 – K9
16
Đồ Án Môn Vi Điều khiển
0x81,0x7F,0x8F,0x7F,0x81,0xFF, //chu W
0x01,0x6D,0x6D,0x6D,0x6D,0xFF, //chu E
0x01,0x7F,0x7F,0x7F,0xFF, //chu L
0x83,0x7D,0x7D,0x7D,0xBB,0xFF, //chu C
0x83,0x7D,0x7D,0x7D,0x83,0xFF, //chu O
0x01,0xFB,0xF7,0xFB,0x01,0xFF, //chu M
0x01,0x6D,0x6D,0x6D,0x6D,0xFF, //chu E
0xFF,0xFF,0xFF,
0xFD,0xFD,0x01,0xFD,0xFD,0xFF, //chu T
0x83,0x7D,0x7D,0x7D,0x83,0xFF, //chu O
0xFF,0xFF,0xFF,
0x01,0xEF,0xEF,0xEF,0x01,0xFF, //chu H
0x07,0xEB,0xED,0xEB,0x07,0xFF, //chu A
0x81,0x7F,0x7F,0x7F,0x81,0xFF, //chu U
}
++z;
}
}
void main(void)
{
congtac=1;
IE=0x85;
IT0=1;
IT1=1;
k=1;
while(1)
{
if(k==1)
{
chaychu1();
chaychu2();
chayso();
}
if(k==2)
{
chaychu();
}
}
}
void ngatngoai0(void) interrupt 0
{
if (congtac<3)
congtac++;
else
trên Orcad 9.2.
V C C
S W 1
R e s e t
Y 1
1 2 M H z
V C C
J 2
C O N 2
1
2
V C C
S W 2
R e s e t
V C C
R 1 0
R
V C C _ I N P U T
C 2
3 3 p
V C C
V C C
R 1 4
R E S I S T O R S I P 9
1 2
3
4
5
6
7
X 2
D 2
H 3
X 3
D 3
H 4
X 4
D 4 H 5
X 5
D 5
H 6
X 6
D 6
H 7
X 7
D 7
H 8
X 8
D 8
S W 5
R e s e t
V C C
U 5
7 4 5 7 3
1
2
3
4
5
6
Q 0
V C C
U 4
7 4 5 7 3
1
2
3
4
5
6
7
8
9
1 0 1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
O E
D 0
D 1
D 2
D 3
D 4
D 5
1 6
1 7
1 8
1 9
2 0
O E
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
G N D L E
Q 7
Q 6
Q 5
Q 4
Q 3
Q 2
Q 1
Q 0
V C C
V C C
0
7 8 0 5
1
2
3
2 3
2 4
2 5
2 6
2 7
2 8
1 7
1 6
2 9
3 0
1 1
1 0
E A / V P
X 1
X 2
R E S E T
I N T 0
I N T 1
T 0
T 1
P 1 . 0 / T 2
P 1 . 1 / T 2 X
P 1 . 2
P 1 . 3
P 1 . 4
P 1 . 5
P 1 . 6
P 1 . 7
P 0 . 0
P 0 . 1
phần mềm Orcad 9.2
Hình 10. Mạch in của mạch điện
Trường ĐHCN Hà Nội Điện Tử 2 – K9
21
Đồ Án Môn Vi Điều khiển
MỤC LỤC
Lời mở đầu………………………………………………………… Trang 1
I. Cơ sở lý thuyết liên quan nội dung đồ án……………………………Trang 3
A. IC 89S52 Trang 3
B. Ma trận LED 8x8 Trang 10
II. Trình tự thiết kế và hoàn chỉnh đồ án…………………………… Trang 12
1. Lập trình Trang 12
2. Mô phỏng Trang 18
3. Test mạch trên bo đồng và vẽ sơ đồ nguyên lý Trang 18
4. Vẽ mạch in và tiến hành làm mạch Trang 20
Trường ĐHCN Hà Nội Điện Tử 2 – K9
22