MỤC LỤC
Lời nói đầu
Như chúng ta đã biết yêu cầu điều khiển càng cao thì hệ thống càng phức tạp và
nếu u cầu điều khiển có đơn giản ví dụ như điều khiển đóng mở một con led theo
một thời gian u cầu nào đó thì hệ thống vi xử lí cũng phải có đầu đủ các khối:bộ vi
xử lí,bộ nhớ,các IC ngoại vi.
Để kết nối các khối trên tạo thành một hệ thống đòi hỏi người thiết kế phải hiểu biết
các khối.hệ thống tạo ra khá phức tạp ,chiếm nhiều khơng gian mạch in và in ấn. Một
lí do nữa là vi xử lí thường xử lí dữ liệu theo byte hoặc word trong khi đó các đói
tượng điều khiển trong cơng nghiệp thường điều khiển theo bit.
Chính vì sự phức tạp này nên các nhà thiết kế tạo đã tích hợp một ít bộ nhớ và một
số các thiết bị ngoại vi cùng với vi xử lí tạo thành một IC gọi là vi điều khiển.
Page 1
Khi vi điều khiển ra đời đã mang lại sư tiện lợi là dễ dàng sử dụng trong điều khiển
công nghiệp, việc sử dụng vi điều khiển khơng địi hỏi người sử dụng phải hiểu biết
về một lượng kiến thức q nhiều như sử dụng vi xử lí.
Có rất nhiều hãng chế tạo được vi điều khiển ,hãng sản xuất là ATMEL .Có nhiều họ
vi điều khiển mang các mã số khác nhau,một trong số họ nổi tiếng là họ MCS-51.
Song song với họ MCS-51 là họ MCS-52 có nhiều timer hơn họ MCS-51 một timer
và dung lượng bộ nhớ nội lớn gấp đôi tức 8Kbyte .
Ứng dụng của vi điều khiển rất nhiều trong các hệ thống điều khiển cơng nghiệp,các
dây chuyền sản xuất,các bộ điều khiển lập trình,máy giặt,máy điều hịa nhiệt độ…..
Sau đây nhóm chúng em xin trình bày một trong những ứng dụng của vi điều khiển.
Đó là lập trình cho vi điều khiển 89S52 điều khiển góc kích của triac để điều chỉnh
điện áp xoay chiều.
Page 2
CHƯƠNG 1. GIỚI THIỆU VI ĐIỀU KHIỂN 8051 (IC AT89S52)
.
1.1. Sơ lược về IC89S52:
Năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 và
là chuẩn công nghệ cho nhiều họ Vi điều khiển được sản xuất sau này.
Năm 1980 Intel cơng bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của họ vi điều
khiển MCS-51bao gồm :
+4KB ROM,
+128 byte RAM,
+32 đường xuất nhập,
+1 port nối tiếp và 2 bộ định thời 16 bit.
Tiếp theo sau đó là sự ra đời của chip 8052,8053,8055 với nhiều tính năng được cải
tiến .
Hiện nay Intel khơng còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay vào
đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens,
Page 3
Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip
của họ MSC-51.
Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam hiện
nay là Vi điều khiển của hãng Atmel.các mã số chip được thay đổi chút ít khi được
Atmel sản xuất. Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở
Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình
tương tự như nhau. Tương tự 8051,8053,8055 có mã số tương đương ở Atmel là
89C51,89C53,89C55.
Sau khoảng thời gian cải tiến và phát triển, hãng Atmel tung ra thị trường dòng Vi
điều khiển mang số hiệu 89Sxx với nhiều cải tiến và đặc biệt là có thêm khả năng nạp
chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi cho người sử dụng.
Dung lượng RAM Dung lượng ROM Chế độ nạp: 89S51 128 byte 4 Kbyte nối tiếp
89S52 128 byte 8 Kbyte nối tiếp 89S53 128 byte 12 Kbyte nối tiếp 89S55 128 byte
20 Kbyte nối tiếp.
Page 4
1.2. Sơ đồ chân
Nhóm chân nguồn:
- VCC: chân 40, điện áp cung cấp 5VDC.
- GND: chân 20(hay nối Mass).
Nhóm chân dao động: gồm chân 18 và chân 19 (Chân XTAL1 và XTAL2), cho
phép ghép nối thạch anh vào mạch dao động bên trong vi điều khiển, đượ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.
- XTAL 1: Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch
tạo xung clock bên trong.
- XTAL 2: Ngõ ra từ mạch khuếch đại dao động đảo.
Chân chọn bộ nhớ chương trình: chân 31 (EA/VPP): dùng để xác định chương
trình thực hiện được lấy từ ROM nội hay ROM ngoại:
+ Chân 31 nối mass: sử dụng bộ nhớ chương trình bên ngoài vi điều khiển .
Page 5
+ Chân 31 nối VCC: sử dụng bộ nhớ chương trình (4Kb) bên trong vi điều
khiển.
RST (Chân RESET): 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.
Nhóm chân điều khiển vào/ra:
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 ngồi
vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngồ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ớ
ngồi), đồng thời Port 0 cịn được dùng để định địa chỉ của bộ nhớ ngoài.
Port 1 (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.
Port 2 (P2) :
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ớ ngồ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.
Port 3 (P3):
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: 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
Page 6
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.
Page 7
CHƯƠNG 2. GIỚI THIỆU VỀ TRIAC
2.1. Triac
• Triac (viết tắt của TRIode for Alternating Current) là phần tử bán dẫn gồm năm lớp
bán dẫn, tạo nên cấu trúc p-n-p-n như ở thyristor theo cả hai chiều giữa các cực T1 và
T2, do đó có thể dẫn dịng theo cả hai chiều giữa T1 và T2. TRIAC có thể coi tương
đương với hai thyristor (SCR) đấu song song song ngược.để điều khiển Triac ta chỉ
cần cấp xung cho chân G của Triac.
Hình sau đây cho thấy cấu tạo, mơ hình tương đương và cấu tạo của Triac.
Như vậy, ta thấy Triac như gồm bởi một SCR PNPN dẫn điện theo chiều từ trên
xuống dưới, kích bởi dịng cổng dương và một SCR NPNP dẫn điện theo chiều từ
Page 8
dưới lên kích bởi dịng cổng âm. Hai cực cịn lại gọi là hai đầu cuối chính (main
terminal).
- Do đầu T2 dương hơn đầu T1, để Triac dẫn điện ta có thể kích dịng cổng dương
và khi đầu T2 âm hơn T1ta có thể kích dịng cổng âm.
Khi cấp xung dương vào cực G, Triac dẫn dòng từ T1 qua T2 và ngược lại. Ta
cấp áp phân cực cho Triac hoạt động :
VT1 > VG > VT2 Hoặc VT2 > VG > VT1
Figure 2-1: Cấu trúc của TRIAC
Page 9
Figure 2-2: Ký hiệu của TRIAC
2.2. Đặc tính
-
Đặc tính Volt-Ampere của TRIAC bao gồm hai đoạn đặc tính ở góc phần tư thứ nhất
và thứ ba (hệ trục Descartes), mỗi đoạn đều giống như đặc tính thuận của một
-
thyristor.
TRIAC có thể điều khiển cho mở dẫn dòng bằng cả xung dương (dòng đi vào cực
điều khiển) lẫn xung âm (dòng đi ra khỏi cực điều khiển). Tuy nhiên xung dòng điều
khiển âm có độ nhạy kém hơn, nghĩa là để mở được TRIAC sẽ cần một dòng điều
khiển âm lớn hơn so với dịng điều khiển dương. Vì vậy trong thực tế để đảm bảo
-
tính đối xứng của dịng điện qua TRIAC thì sử dụng dịng điện dương là tốt hơn cả.
Đặc tuyến Volt – Ampe gồm hai phần đối xứng nhau qua gốc O, mỗi phần tương tự
đặc tuyến thuận của Thyristor.
Page
10
Figure 2-3: Đặc tuyến của TRIAC
2.3. Cách điều khiển TRIAC
- Để Điều Khiển được triac đóng mạch thì dịng điều khiển phải lớn hơn dòng điều
khiển danh định của triac. Dịng này bạn có thể tra sách linh kiện cho từng loại triac
khác nhau. Do đặc điểm này nên không thể điều khiền thiết bị tải có dịng q nhỏ
I<<50mA.
- Triac chỉ điều khiển được khi nguồn điện là có chu kỳ mà điện áp trở về 0. Nếu
Không chỉ có thể đóng được một lần, cịn tắt thì khơng thể. Nên nếu là nguồn điện
một chiều, thì Triac sẽ đóng cho đến khi mất nguồn mới thơi.
Page
11
- Điều Khiền Triac: phải theo chiều của nguồn điện điều khiển. Tức khi ở bán kỳ
âm thì phải kích theo chiều âm và ngược lại. Và điện áp kích không cần cao chỉ
khoảng 1V đến 2V là được.
2.4. Ứng dụng
-
TRIAC đặc biệt hữu ích trong các ứng dụng điều chỉnh điện áp xoay chiều và
các công-tắc-tơ tĩnh. ..
- Triac là linh kiện giống như hai diode có thể điều khiển được và nối song song
ngược chiều. Nên triac dùng để đóng mở nguồn điện AC cho thiết bị như Motor,
Đèn...
- Ngồi ra Triac cịn dùng để điều khiển cơng suất cho bóng đèn, Motor: Tức thay
đổi cường độ sáng hay tốc độ động cơ.
Page
12
CHƯƠNG 3. TÁC DỤNG CỦA MỘT SỐ LINH KIỆN TRONG MẠCH
3.1. AT 89S52
- Chức năng: Là vi điều khiển chính của mạch. .8 KB EPROM bên trong. .256
Byte RAM nội.4 Port xuất /nhập I/O 8 bít. 3 bộ định thời 16 bit .Watch dog
timer .Các đặc điểm khác giống AT89C51.
3.2. Thạch anh
-
-
Thạch anh 12MHz:
Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định (12 MHz) cho dao động
của 8051. Thạch anh sẽ được gắn vào chân XTAL1 và XTAL2 (Chân số 18 và 19)
của 8051.
3.3. Tụ gốm
-
Tụ gốm:
-
Chức năng: Lọc nhiễu cho dao động thạch anh. 2 tụ gốm 33pF sẽ được nối một
đầu với chân của thạch anh, đầu còn lại đấu ra Mass.
Page
13
3.4. Tụ hóa
-
Tụ hóa:
-
Chức năng: Tụ hóa được gắn đầu âm vào chân reset, đầu dương lên nguồn. Khi
cấp điện cho mạch, tụ sẽ phóng điện khiến chân reset bật lên mức cao, khi đó
tồn bộ hệ thống sẽ được nạp lại từ đầu. Khi đang vận hành thì tụ hóa ngăn
dịng đi vào chân reset.
3.5. Điện trở
-
Điện trở 330Ω: Có tác dụng hạn chế dịng điện và phân cực cho transistor.
Page
14
3.6. Trasistor
-
Chức năng: Transistor thường được sử dụng như một phần tử khuếch đại hoặc
một khóa điện tử.
3.7. IC 7805
-
LM7805
Module LM7805 DC5V 1A
Page
15
Thông số kỹ thuật:
- Đầu vào: AC7.0-35V.
- Đầu ra: DC5V 1A.
Chức năng chuyển điện áp đầu ra cố định 5V - 1A.
Page
16
CHƯƠNG 4. Q TRÌNH LÀM MẠCH
4.1. Một số hình ảnh mô phỏng trên Proteus
Figure 4-4: Kết nối thạch anh 12MHz và chân Reset với IC 8051
Page
17
Figure 4-5: IC 8051 kết nối với các linh kiện
Figure 4-6: Sơ đồ toàn mạch
Page
18
4.2. Một số hình ảnh Layout
Figure 4-7: Mạch Layout trên Proteus
Page
19
Figure 4-8: File Layout PDF
4.3. Code C
#include <REGX51.H>
sbit x_kich= P2^0;
//GAN XUNG KICH VAO P2.0 (NHAP/XUAT)
sbit x_dongbo =P2^1;
// GAN XUNG DONG BO VAO P2.0 (NHAP/XUAT)
bit nho=0;
// GAN NHO’ =0
unsigned int count;
void delay (unsigned int time)
{
TMOD=0X10;
//CHON CHE DO TIMER 8 BIT LAP LAI
TH1=(-time/256);
//BIT CAO
TL1=(-time%256);
//BIT THAP
TR1=1;
//CHO PHEP HOAT DONG
while(!TF1);
//CHO\ LUC TF1 =1 THI DUNG(CHO\ TF1 DEM DAY\)
TR1=TF1=0;
//XOA’. KET THUC CHUONG TRINH DELLAY
}
//
void delay2 ()
{
unsigned char i;
for (i=0;i<100;i++);
}
//
void dk_triac ()
//DELAY 100Us ~0.1mS
Page
20
{
//TAN SO CUA LUOI DIEN 50MHz LA 20mS/1CHU KY => 1 BAN KY = 10Ms
// 8500uS ~ 8.5mS
/*if (!nho)
{
count+=10;
if (count==8500) nho=1; //MOI LAN TANG 10uS TOI 8500uS THI NHO=1
}
else
{
count-=10;
if (count==10) nho=0; //MOI LAN GIAM 10uS TOI 8500uS THI NHO=1
}
*/
delay(count);
x_kich=0;
delay2();
x_kich=1;
}
void main()
{
count=500;
x_dongbo=1;
x_kich=1;
while(1)
{
// DELAY GOC KICH
//SAU KHI DELAY GOC KICH, CHO X_KICH =0
// DELAY XUNG KICH (XUNG KICH DANG=0)
// CHO XUNG KICH LEN =1
// GIA TRI BAT DAU CUA DELAY
// BAN DAU GAN CHO X_DONGBO =1
// BAN DAU GAN CHO X_KICH =1
while(!x_dongbo);//CHO X_DONGBO =0
dk_triac();
//X_DONGBO =1 THI DIEU KHIEN TRIAC
while(x_dongbo); //LAP LAI
}
}
4.4. Code Assembly
#include <REGX51.H>
ORG 0000H
MAIN: SETB P2.0
SETB P2.1
MOT: JNB P2.1,MOT
//
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPA: JB P2.1,LAPA //
MOTA: JNB P2.1,MOTA
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPAA: JB P2.1,LAPAA
HAI: JNB P2.1,HAI
//KHAI BAO
//SET P2.0 LEN 1
//
KIEM TRA P2.1, NEU P2.1=0 $, P2.1=1 NHAY LENH KE TIEP
//GOI CHUONG TRINH CON DELAY
KIEM TRA P2.1, NEU P2.1=1 $, P2.1=0 NHAY LENH KE TIEP
Page
21
ACALL DELAY1MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPB: JB P2.1,LAPB
HAIA: JNB P2.1,HAIA
ACALL DELAY1MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPBA: JB P2.1,LAPBA
BA: JNB P2.1,BA
ACALL DELAY2MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPC: JB P2.1,LAPC
BAA: JNB P2.1,BAA
ACALL DELAY2MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPCA: JB P2.1,LAPCA
BON: JNB P2.1,BON
ACALL DELAY3MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BONA: JNB P2.1,BONA
ACALL DELAY3MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
NAM: JNB P2.1,NAM
ACALL DELAY4MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
NAMA: JNB P2.1,NAMA
ACALL DELAY4MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
SAU: JNB P2.1,SAU
ACALL DALAY5MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
SAUA: JNB P2.1,SAUA
ACALL DELAY5MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BAY: JNB P2.1,BAY
ACALL DELAY6MS
CLR P2.0
ACALL DELAY1MS
Page
22
SETB P2.0
BAYA: JNB P2.1,BAYA
ACALL DELAY6MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
TAM: JNB P2.1,TAM
ACALL DALAY7MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
TAMA: JNB P2.1,TAMA
ACALL DELAY7MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
CHIN: JNB P2.1,CHIN
ACALL DELAY9MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
CHINA: JNB P2.1,CHINA
ACALL DELAY8MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
MUOI: JNB P2.1,MUOI
ACALL DELAY8500US
CLR P2.0
ACALL DELAY1MS
SETB P2.0
MUOIA: JNB P2.1,MUOIA
ACALL DELAY8500US
CLR P2.0
ACALL DELAY1MS
SETB P2.0
MUOIB: JNB P2.1,MUOIB
ACALL DELAY8500S
CLR P2.0
ACALL DELAY1MS
SETB P2.0
MUOIAB: JNB P2.1,MUOIAB
ACALL DELAY8500US
CLR P2.0
ACALL DELAY1MS
SETB P2.0
CHINB: JNB P2.1,CHINB
ACALL DELAY8MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
CHINAB: JNB P2.1,CHINAB
ACALL DELAY8MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
TAMB: JNB P2.1,TAMB
Page
23
ACALL DELAY7MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
TAMAB: JNB P2.1,TAMAB
ACALL DELAY7MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BAYB: JNB P2.1,BAYB
ACALL DELAY6MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BAYAB: JNB P2.1,BAYAB
ACALL DELAY6MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
SAUB: JNB P2.1,SAUB
ACALL DELAY5MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
SAUAB: JNB P2.1,SAUAB
ACALL DELAY5MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
NAMB: JNB P2.1,NAMB
ACALL DELAY4MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
NAMAB: JNB P2.1,NAMAB
ACALL DELAY4MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BONB: JNB P2.1,BONB
ACALL DELAY3MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BONAB: JNB P2.1,BONAB
ACALL DELAY3MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
BAB: JNB P2.1,BAB
ACALL DELAY2MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPCB: JB P2.1,LAPCB
BAAB: JNB P2.1,BAAB
ACALL DELAY2MS
Page
24
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPCAB: JB P2.1,LAPCAB
HAIB: JNB P2.1,HAIB
ACALL DELAY1MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPBB: JB P2.1,LAPBB
HAIAB: JNB P2.1,HAIAB
ACALL DELAY1MS
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPBAB: JB P2.1,LAPBAB
MOTB: JNB P2.1,MOTB
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPAB: JB P2.1,LAPAB
MOTAB: JNB P2.1,MOTAB
CLR P2.0
ACALL DELAY1MS
SETB P2.0
LAPAAB: JB P2.1,LAPAAB
LJMP MAIN
DELAY1MS: MOV TMOD,#01H
MOV TH0,#HIGH(-991)
MOV TL0,#LOW(-991)
SETB TR0
JNB TF0,$
CLR TR0
RET
DELAY2MS: MOV TMOD,#01H
MOV TH0,#HIGH(-1991)
MOV TL0,#LOW(-1991)
SETB TR0
JNB TF0,$
CLR TR0
RET
DELAY3MS: MOV TMOD,#01H
MOV TH0,#HIGH(-2991)
MOV TL0,#LOW(-2991)
SETB TR0
JNB TF0,$
CLR TR0
RET
DELAY4MS: MOV TMOD,#01H
MOV TH0,#HIGH(-3991)
MOV TL0,#LOW(-3991)
SETB TR0
JNB TF0,$
CLR TR0
RET
DELAY5MS: MOV TMOD,#01H
MOV TH0,#HIGH(-4991)
Page
25