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à øì, 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ơ cau nao đó.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 trinh C va Assembly
Trong qúa trình học tập và đặc biệt được sự giúp đỡ tận tình của thay
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 phan:
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
Trang 2Tuy đã 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 chan thành cam on !
Gido vién huéng dan: Nguyén Anh Ding Sinh viên thựchiện : Nguyễn Đăng Kỳ
Nguyễn Thanh Tùng Phương Văn Tuấn Lớp điện tử 2 - K9
Trang 3I CO SO LY THUYET LIEN QUAN NOI DUNG DO AN A IC 89852
1.Giới thiệu về IC 89S52:
IC 89552 là phiên bản 8051 có ROM trên chip ở dạng bộ nhớ Flash Phiên bản này là lý tưởng với những phát triên nhanh vì bộ nhớ Flash có thê xóa trong vài giây Ta gọi IC này là bộ vi điều khiến vì trong chúng chứa ROM, RAM, các công nối tiép va song song 8985 không được sử dụng trong máy tính nhưng được sử dụng rộng rãi trong công nghiệp và trong sản phẩm máy móc tiêu dùng
Cùng với ho 89852 có một số vi điều khiến khác Về cơ bản chúng đều giống nhau, chúng chỉ khác nhau ở vùng nhớ nội bao gồm vùng nhớ mã lệnh, vùng nhớ dữ liệu và một số Timer Sự khác nhau đó được mô tả bằng bảng
dưới đây:
Vi điều khiển Vùng mã lệnh nội | Vùng dữ liệu nội Số Timer
8051 4K ROM 128 bytes 2 8031 OK 128 bytes 2 8751 4K EPROM 128 bytes 2 8052 8K ROM 256 bytes 3 8032 0K 256 bytes 3 8732 4K EPROM 256 bytes 3
Trang 4Bảng 1 Giới thiệu một số IC họ 8951 2.Cau truc cia IC 89852:
Trung tâm của 89S52 vẫn là vi xử lý trung tam (CPU) Dé kích thích
cho tồ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 cla 89852 cịn có 2 ngắt ngồi cho phép nó đáp ứng và xử lý điều kiện bên ngoài theo cách ngắt quãng, rất hiệu quả trong các ứng dụng điều khiển Thông qua các chân điều khiển và các cổng song song 89S52 có thê mở rộng bộ nhớ ngoài lên đến 64Kbs dữ liệu
Sau đây là sơ đồ khói vi điều khiển:
Trang 5"= - INT! * —— INTO *
spina Timer 2 (8032/8052) ow= =} = TIRX* ' Timer | jot ccm a TT ~~ Ỳ ¬
‘ Timer 0 1 l28bytes a! \ Timer 2 - - T2
' sites ain ` RAM k ROM (8032/8052) |
i
Y L (8032/8052) | 5 OK ~ 8031/8032! Timer 1 TI"
14K - 80!
Interrupt Other 128 bytes 1 = = oe : :
control registers RAM 1 : Timer 0 To*
— Gate Sử ta i Ltt i ys
Oscillator Bus contro! r> 1/0 pons a
TL pH m-| | >az J LJ b4 b4 RST 3 PSEN v / — c— PO P2 PI TXD° RXD” tT _L Address/data nara
—_ _= “Aliemate pin assignments for PI and P3
Hình 1 Sơ đồ khối Vi điều khiến họ 89S52
3 Sơ lược về các chân IC 89S52:
IC 89852 có 40 chân Có đến 32 chân làm nhiệm vụ xuất nhập, truyền dữ liệu Các chân phục vụ ngắt, các chân Timer, trong đó 24 chân làm 2
nhiệm vụ khác nhau Mỗi chân có thể là đường xuất nhập, đường điều khiến
hoặc là một phân của địa chỉ hay đữ liệu Thiết kế thường có bộ nhớ ngồi
hay các thiết bị ngoại vi sử dụng những Port để xuất nhập dữ liệu Tám đường trong mỗi Port được sử dụng như một dơn vị giao tiếp song song như máy in,
Trang 6bộ biến đôi tương tự số Hoặc mỗi đường cũng có thê hoạt động độc lập trong giao tiếp với các thiết bị đơn bit khác như: transistor, LED, switch
Sau đây là hình dạng sơ đồ của IC 89S52:
U1 +9 _ÈXTALi P0.0/ADO = PO.1/AD1 - PO.2/AD2 |-=" -9_—ÌxTAL2 P0.3/AD3 => P0.4/AD4 => P0.5/AD5 —2 n P0.6/AD6 —— ——| RST P0.7/AD7 |—^ P2.0/A8 — P2.1/A9 Se : P2.2/A10 CC <=—lPsm P23/A11 —“ | ALE P24/A12 | ce P2.5/A13 FS P2.6/A14 Po P2.7/A15 — P1.0/T2 P3.0/RXD —— —2—] P1.1/T2EX P3.1/TXD |—— — P12 P3.2/INT0 |—T< ——| P12 P3.3/NT1 | = P1.4 P3.4/T0 <5 S| P15 P3.5/T1 | T5 = P1.6 P3.6AVR T7 | p17 P3.7RD Wo AT89C52 Hình 2 Hình dạng sơ đồ IC 89S52
Trang 74 Chức năng các chân IC §9S52:
Sau đây là phần giới thiệu chức năng các chân, các Port tương ứng, chân PSEN, chan ALE, chan REST
a Port 0
Port 0 là công song song dung 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 đữ 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 (chan 21+ 28) la Port có 2 chưc năng Ngồ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)
89852 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ớ ngồ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 89552 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)
Trang 8EA là một tín hiệu vào có thê ở mức cao hay thấp Nếu ở mức cao
89852 thi hanh chương trình ở ROM nội, 4K/8K chương trình Nếu ở mức
thấp, chương trình chỉ được thi hành ở bộ nhớ ngoài Đối với 80431/ 8231 EA phải được giữ ở mức thấp vì chúng khơng có ROM nội EA cũng chính là chân nhận điện áp mức cao dé nạp EPROM nội
f ALE ( cho phép chốt địa chỉ)
ALE là tín hiệu được xuất ra ở chân 20, rất quen thuộc với những ai đã
tung lam viéc voi vi xt ly 8085, 8086 cua Intel 89852 ding ALE dé phân
kênh cho từng Bus địa chỉ và Bus dữ liệu Khi Port 0 được dùng làm Bus dữ liệu và bytes thấp của Bus địa chỉ - ALE là tín hiệu dùng để chốt địa chỉ vào thanh ghi chốt bên ngoài trong nửa đầu của một chu kỳ máy Sau dé Port 0
sẵn sàng để truy xuất đữ liệu trong nửa chu kỳ còn lại
Xung ALE có tần số bằng 1/6 lần tần số bộ dao động nội và có thể
dùng như một xung clock cho mục đích nào đó khi hệ thống khơng làm việc
Nếu tần số của 89S52 là 12MHz thì tần số xung ALE là 2MHz Một xung
ALE bị mắt khi có một lệnh MOVX được thi hành
g Ngõ vào dao động nội
Ngõ vào đao động nội được mô tả như dưới hình hai, có một thạch anh
được nối vào chân 19 (XTALI) và 18 (XTAL2) Có thể mắc thêm tụ dé én
định dao động Thạch anh 12MHz thường dùng cho ho IC MCs-51, tri IC
80C31BH co thê dùng thạch anh lên đến 16MHz Tuy nhiên, không nhất thiết
phải dùng thạch anh mà ta có thể dùng mạch dao động TTL tạo xung Clock đưa vào chân XTALI và lẫy đảo của nó đưa vào XTAL2
h RST (RESET)
Ngõ vào chân RST (chân 19) là chân master reset của 89552 Khi nó ở mức cao nhất (trong khoảng ít nhất 2 chu kỳ máy ) các thanh ghi nội được nạp với giá trị tương ứng theo thứ tự khởi động hệ thống
Trang 9¡ Nguồn cung cap
89852 sử dụng nguồn cung cấp Vcc=5V được cấp vào chân 40,GND được nồi vào chân 20
Bit Tên Chức năng
P3.0 RXD Nhận dữ liệu
P3.1 TXD Phát dữ liệu
P3.2 INT0 Ngắt ngoài 0
P3.3 INT1 Ngat ngoai 1
P3.4 T0 Ngõ vào T1mer/couter 0
P3.5 T1 Ngõ vào Timer/ couter Ì
P3.6 W/R Đọc dữ liệu từ bộ nhớ ngoài
P3.7 RD Đọc đữ liệu vào bộ nhớ ngoài
P1.0 T2 Ngo vao cua Timer/ couter
P1.1 T2EX
Bảng 2 Giới thiệu một số chân IC họ 8951 5 Các thanh ghỉ có chức năng đặc biệt
Các thanh ghi nội của 89S52 chiếm một phần của vùng nhớ nội, vì vậy
mỗi thanh ghi đều có một địa chỉ Các thanh ghi chức năng (FSRs) trong vùng nhớ cao từ 80H đến FFH Lưu ý có một số bytes trong vùng này không được định nghĩa Chỉ có 21 địa chỉ thanh ghi chức năng được định nghĩa (26 địa chỉ
đối với 8052/8032)
Trang 10Các thanh ghỉ chương trình Thanh ghi B
Ss
Ff
Con tré ngan sap xép
a
©
Con trỏ dữ liệu Cac thanh ghi Port
Cac thanh ghi bo dinh thoi
-
©
Các thanh ghi công nối tiếp Các thanh ghi ngắt
Thanh ghi PCON
4
bule «
6 Bộ nhớ ngồi
Mở rộng bộ nhớ là một khả năng quan trọng đói với vi điều khiên nhằm tránh gặp bề tắc trong vấn đề thiết kế Họ MCs-51 có thê mở rộng 64Kbs va bộ nhớ mã lệnh 64Kbs dữ liệu Các IC giao tiếp ngoại vi cũng có thê thêm vào để tăng năng xuất nhập
Các chân cho phép giao tiếp với bộ nhớ ngoài RD, WR, PSEN, OE B Ma tran LED 8x8
Ma tran LED 8x8 1 linh kién hién thi duoc dung rat rộng rãi trong thực tế.Có hai loại ma trận LED 8x8 là ma tran LED don sac va ma tran LED da sắc
Mot ma tran LED 8x8 don sac bao gồm 64 LED được bố trí thành 8 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
Trang 11LED 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 đó
Một ma trận LED 8x8 đa sắc bao gồm 64 điểm sáng được bố trí thanh 8 hang x 8 cột trong đó mỗi điểm sáng có thể gom 1 LED mau xanh lục + 1 LED màu đỏ hoặc ILED 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 sang hiển thị màu xanh nễu LED đỏ tắt, màu đỏ nếu LED mau 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 đó
Trang 12II TRÌNH TỰ THIẾT KẾ VÀ HOÀN CHỈNH ĐỎ ÁN
1 Lập trình
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à tồn bộ chương trình viét bang C dugc nap vao IC #include<reg52.h>
#include<stdio.h> unsigned char
mangcot[8]E{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x§0); unsigned int m,n,z,k;
unsigned char congtac; void delay(unsigned int t)
{ unsigned int 1; for(i=0;i<=t;i++); } void xoa(void) { P0=0x00; }
void chaychul (void)
{
unsigned char mangchu1[83]={OxFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x07,0xEB,0xED,0xEB,0x07,0xFF, //chu A 0x01,0x6D,0x6D,0x6D,0x93,0xFF, //chuB 0x83,0x7D,0x7D,0x7D,0xBB,OxFF, //chu C 0x01,0x7D,0x7D,0x7D,0x83,0xFF, //chu D 0x01,0x6D,0x6D,0x6D,0x6D,0xFF, //chuE 0x01,0xED,0xED,0xED,0xED,0xFF, //chu F 0x83,0x7D,0x7D,0x5D,0x9B,OxFF, //chu G 0x01,0xEF,0xEF,0xEF,0x01,0xFF, //chuH 0x7D,0x01,0x7D,0xFF, //chu I 0xBF,0x7D,0x81,0xFD,0xFF, //chu J 0x01,0xEF,0xD7,0xBB,0x7D,0xFF, //chu K 0x01,0x7F,0x7F,0x7F,0xFF, //chu L 0x01,0xFB,0xF7,0xFB,0x01,0xFF, //chuM OxFF,OxFF};
Trang 13z=0; while(z<=73) { for(m=1;m<=12;m++) { for(n=z;n<=7+z;n++) { P0=mangcot[n-z]; if(congtac==1) { P2=mangchul [n]; P1=0xFFE; } else if(congtac==2) { P1=mangchul[n]; P2=0xFF; } else if(congtac==3) { P1=P2=mangchul [n]; j delay(200); xoa(); ++zZ; } } void chaychu2(void) {
unsigned char mangchu2[86]={0x01,0xFB,0xF7,0xFB,0x01,0xFF, 0x01,0xF7,0xEF,0xDF,0x01,0xFF, //chuN 0x83,0x7D,0x7D,0x7D,0x83,0xFF, //chu O 0x01,0xED,0xED,0xED,0xF3,0xFF, //chu P 0x83,0x7D,0x5D,0xBD,0x43,0xFF, //chu Q 0x01,0xED,0xCD,0xAD,0x73,0xFF, //chu R 0xB3,0x6D,0x6D,0x6D,0x9B,OxFF, //chuS 0xFD,0xFD,0x01,0xFD,0xFD,OxFF, //chu T 0x81,0x7F,0x7F,0x7F,0x81,0xFF, //chuU
Trang 140xC1,0xBF,0x7F,0xBF,0xC1,0xFF, //chu V 0x81,0x7F,0x8F,0x7F,0x81,0xFF, //chu W 0x39,0xD7,0xEF,0xD7,0x39,0xFF, //chu X 0xF9,0xF7,0x0F,0xF7,0xF9,0xFEF, //chu Y 0x3D,0x5D,0x6D,0x75,0x79,OxFF, /chu Z OxFF,OxFF}; z=0; while(z<=78) { for(m=1;m<=12;m++) { for(n=z;n<=7+z;n++) { P0=mangcot[n-z]; if(congtac==1) { P2=mangchu2[n]; PI=0xFFE; } else if(congtac==2) { P1=mangchu2[n]; P2=0xFF; } else if(congtac==3) { P1=P2=mangchu2[n]; 7 delay(200); xoa(); } } TTZ; } } void chayso(void) {
unsigned char mangso[73 |={0x3D,0x5D,0x6D,0x75,0x79,0xFF,
0x83,0x7D,0x7D,0x7D,0x83,0xFF,
Trường ĐHCN Hà Nội - 14 -
//so 0
Trang 17} delay(200); xoaQ; ++Z; } } void main(void) { congtac=1; IE=0x85; ITO=1; IT1=1; k=1; while(1) { if(k==1) { chaychulQ; chaychu2(); chayso(); } if(k==2) { chaychuQ; } } }
void ngatngoai0(void) interrupt 0
{ if (congtac<3) congtac++; else congtac=1; }
void ngatngoail (void) interrupt 2
{
if (k<2)
k++ ;
Trang 18else
k=1;
j
2 Mô phỏng
Sau khi lập trình xong để kiêm tra xem chương trình của mình chạy đã chính xác chưa chúng tôi tiến hành mô phỏng mạch điện trên phan mém Proteus version 7.5 SP3
PHI»2.nn POD PO 2602 PIen3 EH.tan+ PIXns PEH#&De PHL7ADT P2008 B2.103 B2 2.11 P2311 F212 P2513 B2B1+ B217/A15
Hình 8 mạch điện mơ phông
3 Test mạch trên bo đồng và vẽ sơ đồ nguyên lý
Sau khi đã kiểm tra thấy lập trình và mơ phỏng chính xác chúng tôi tiễn
hành mua linh kiện về cắm trên bo đồng để kiểm tra trên thực tế mạch có
chạy chính xác giỗng mơ phỏng hay khơng vì trong mơ phỏng chúng ta ln có mọi yếu tố là lý tưởng nhưng trên thực tế có rất nhiều yếu tố tạo nên sai số
cho một mạch điện Ngoài ra mạch điện còn kèm theo một mạch phát xung
Trang 19555 nhằm tạo ra 3 dai tần khác nhau theo yêu cầu đề bài giúp mọi người có thê trực tiếp kiêm tra mạch mà không cần thiết bị tạo tần số ngoài Khi cắm trên bo chúng ta sẽ nhìn thay mach dién chay giống như mạch điện hoàn chỉnh Khi nhận thấy mọi thứ đều tốt chúng tôi tiến hành vẽ mạch nguyên lý
trên Orcad 9.2 ö 9 x Nee ee ew wora oe x8 món £ wora oe o4a00408408686 m8 nm Z o 6 8© 89 © @ nm RR @ rx RESISTOR SIP 9
erdeteen cone OER siacicci coi siaieleieieialei faanooan GA AAQ GA
t+ = xe n aN
Sb Pageress
Beer resiisiz| | wep aoyveen? BBR BEBBSE
Hình 9 Sơ đồ nguyên lý mạch điện
Trang 204 Vẽ mạch in và tiến hành làm mạch
Sau khi vẽ xong mạch nguyên lý, chuyên sang vẽ luôn mạch in trên phần mềm Orcad 9.2 cv ;TH - ¥H tHN3 WửđM WA Od MACHH UdId = om = +~ m =r = = ta oa = = = r1 HAUT - Hình 10 Mạch in của mạch điện
Trang 21MỤC LỤC
8.) eee ceccecccccceceneeceececsensenteeeeeceeeenteannees Trang 1
I Cơ sở lý thuyết liên quan nội dung đồ án - - - - Trang 3
A IC 89552 Trang 3
B Ma tran LED 8x8 Trang 10
I 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