CK.0000069606
t
CÔNG THƯƠNG
G ĐẠI HỌC SAO Đỏ
s. ĐẶNG
VĂN TUỆ (Chủ biên)
N G U Y ẼN
ỌC LIỆU
U T 7 NHÀ XUÂT BÁN KHOA HỌC VÀ KỸ THUẬT
Bộ CƠNG THƯƠNG - TRƯỊNG ĐẠI HỌC SAO ĐỎ
ThS. ĐẶNG VĂN TUỆ (Chủ biên) - ThS. NGUYÊN XUÂN ỨNG
ThS. PHẠM VĂN TUẤN - ThS. HÀ MINH TUÂN
ThS. NGUYỄN VĂN TRƯNG - ThS. LÊ NGỌC HÒA
BÀI TẬP
VI ĐIỂU KHIỂN & PLC
BẠI HỌC THÍI NGUYỀN
TRUNG ĨÂM HỌC LỈỆU
0 = 7 NHÀ XUẤT BẢN KHOA HỌC VÀ KỸ THUẬT
•
■
MỤC
LỤC
■
■
LỜI NĨI ĐẦU......................................................................................................5
Phần 1
BÀI TẬP VI ĐIÊU KHIỂN
Bài IĨ1Ờđầu. TƠNG QUAN VỀ VI ĐIỀU KHIÊN 8051 VÀ LẬP TRÌNH c ......9
Bài tập số 1. LẬP TRÌNH VÀO/RA CHO VI ĐIÈU KHIÊN .......................... 14
Bài tập số 2. ĐIỀU KHIỂN LED 7 THANH.................................................... 19
Bài tập số 3. GIAO TIẾP VI ĐIÈU KHIÊN VỚI LCD .................................... 24
Bài tập số 4. GIAO TIẾP VI ĐIỀU KHĨÊN VỚI ADC.................................... 30
Bài tập số 5. Bộ ĐỊNH THỜI/BỘ ĐÊM ........................................................ 39
Bài tập số 6. XỬ LÝ NGẮT ............................................................... ........... 48
Bài tập số 7. TRUYỀN THÔNG NỐI TIÊP....................................................63
Bài tập số 8. ĐIỀU KHIÊN MA TRẬN PHÍM BÁM ...................................... 75
Bài tập số 9. ĐIỀU KHIÉN ĐỘNG c ơ BƯỚC ............................................... 81
Phần 2
BÀI TẬP PLC
Bài tập số 1. GIỚI THIỆU CHUNG VỀ PLC..................................................91
Bài tập số 2. ĐIÈU KHIÊN ĐỘNG c ơ KHÔNG ĐÔNG Bộ BA PHA
QUAY THUẬN NGHỊCH......................................................... 98
Bài tập số 3. ĐIỀU KHIÊN KHỞI ĐỘNG ĐỘNG c ơ ĐIỆN MỘT CHIỀU
QUA BA CẤP ĐIỆN TRỞ ................................. .....................101
Bài tập số 4. ĐIỀU KHIÊN HỆ THỐNG BƠM NƯỚC NHÀ CAO TÀNG .... 104
Bài tập số 5. ĐIỀU KHIÊN ĐÈN GIAO THÔNG HAI LNG..................... 107
Bài tập số 6. ĐIỀU KHIÊN ĐĨNG MỞ CỬA T ự ĐỘNG .............................. 111
Bài tập số 7. ĐIÈU KHIÊN KHỞI ĐỘNG VÀ HÃM ĐỘNG NĂNG
ĐỘNG Cơ KHÔNG ĐổNG BỘ XOAY CHIỀU BA PHA.......114
Bài tập số 8. ĐIỀU KHIÊN KHỞI ĐỘNG ĐỘNG c ơ KHÔNG ĐỒNG BỘ
BA PHA THEO PHƯƠNG PHÁP Y/A .....................................117
Bài tập số 9. ĐIỀU KHIÊN HỆ THỐNG CHUÔNG ĐIỆN VÀ ĐÈN BÁO .... 121
Bài tập số 10. ĐIỀU KHIẾN HỆ THỐNG BẢNG TẢI VÀ PHÂN LOẠI
SẢN PHẨM .............................................................................125
Bài tập số 11. ĐIÊU KHIÊN HỆ THỐNG GỒM NHIỀU ĐỘNG c ơ ............... 130
Bài tập số 12. ĐIÊU KHIÊN GARA ÔTÔ T ự ĐỘNG ......................................135
Bài tập sổ 13. ĐIỀU KHIÊN HỆ THỐNG PHA TRỘN MÀU SƠN ............... 138
TÀI LIỆU THAM KHẢO................................................................................. 142
3
Jlời nói ÉầÀJL
O ị í nghiệp cơng nghiệp hỏa, hiện đại hỏa trong giai đoạn hiện nay
L j yêu cầu năng cao chất lượng sản phẩm, số lượng sản phẩm cũng
như hỗ trợ cho con người những công việc phức tạp. Để thực hiện điều đó
đội ngũ tri thức chính là lực lượng nòng cốt, sảng tạo và trở thành nguồn
lực đặc biệt quan trọng trong chiến lược phát triển, tạo nên sức mạnh cùa
mỗi quốc gia.
Đối với nước ta những ngành đóng vai trị then chót của nền kinh tế là:
Điện, Than, Dầu khỉ,... và ngành công nghiệp Tự động hóa khơng nằm
ngồi chiến lược phát triển kinh tế. Cơng nghiệp tự động hóa các ngành
nghề, xây dựng cơ sở hạ tầng phục vụ dân sinh.
Tự động hóa là một lĩnh vực đã được hình thành và phát triển rộng lớn
trên phạm vi tồn thế giới, nó đem lại một phần không nhỏ cho việc tạo ra
các sản phẩm cỏ chất lượng và độ phức tạp cao phục vụ nhu cầu thiết yếu
cho cuộc sổng. Ở nước ta lĩnh vực tự động hóa đã được Đảng và Nhà nước
quan tâm và đầu tư rất lớn, cũng với các lĩnh vực công nghiệp chuyển dịch
nền kinh tế theo định hướng cơng nghiệp hỏa, hiện đại hóa đất nước.
Nói tới tự động hóa ngày nay chúng ta khơng thể khơng nhắc tới các
thiết bị có điều khiến lập trình, trong đó PLC, 8051, PIC, AVR, ARM, ...là
một trong những thiết bị có điều khiển lập trình và được sử dụng rộng rãi.
Trong khn khổ nội dung cuốn sách nhóm tác giả đã trình bày:
Tổng quan về vi điều khiến 8051, một sổ cấu trúc lập trình c cho vi
điểu khiển, các bài tập áp dụng được lập trình điều khiển trên phần mềm
Keil uVision4 và mô phỏng sinh động trên phần mềm Proteus.
Giơi thiẹu trung vê PLC, các bài tập áp dụng được lập trình điều khiển
trên phần mềm Syswỉn 3.3, phần mềm c x - ONE với những tính năng ưu
viẹt được sư dụng rọng rãi trong các phịng thí nghiệm và trong cơng
nghiệp.
Trong qua trinh biên soạn chúng tói đã cỏ nhiều cố gắng tìm tịi tài liệu
va trao đoi VƠI cac đong nghiệp cổ nhiêu năm công tác trong ngành. Song
do thơi gian co hạn nên nội dung cuốn sách cịn nhiều thiếu sót rất mong
được sự đong gop y kiên của quý độc giả để cuốn sách được hồn thiện hom
trong lân tái bản sau.
Mọi ỷ kiến đóng góp của quý độc giả xin gửi về: Khoa Điện Trường
Đại học Sao Đỏ - 24 Thái Học - Phường Sao Đỏ - Thị xã Chí Linh - Tỉnh
Hải Dương.
Xin trân trọng cảm ơn!
N H Ó M TÁC GIẢ
6
ăP Ả ần
4
---------
BÀI TẬP VI ĐIỀU KHIỂN
Bài mở đẩu
TỎNG QUAN VÈ VIĐIÈƯ KHIỂN
8051 VÀ LẬP TRÌNH
c
1. TỔNG QUAN VỀ VI ĐIỀU KHIỂN 8051
1.1. Sơ dô chân chức năng
O '
P 1 .0 c
P1.1 c
P 1 .2 C
P1.3 c
P1.4 c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
P 1 .5 C
P 1 .6 C
P1.7 c
RST c
(R X D ) P 3.0 c
(TXD) P3.1 c
(INTO) P 3 .2 C
{INT1) P 3 .3 c
(TO) P3.4 c
(T D P 3 .5 C
(WR> P 3 .6 c
( T O P3.7 c
XTAL2 c
XTAL1 c
G N D C 20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
□
21 □
VCC
PO.O (ADO)
P0.1 (AD1)
P0.2 (AD2)
P0.3 (A D 3)
P0.4 (AD4)
P0.5 (AD5)
PQ.6 (AD6)
P0.7 (A D 7)
E A /V P P
A L E /P R O G
PSBN
P2.7 (A15)
P2.6 (A 14)
P2.5 (A 13)
P2.4 (A12)
P2.3 (A 1 1}
P2.2 (A10)
P2.1 (A9)
P2.0 (A8)
Hình 1.1. S ơ đồ chân chức năng vi điều khiển 8051
1.2. Chức năng của các chân tín hiệu như sau:
- PO.O đến P0.7 là các chân của cổng 0.
- Pl.o đến P1.7 là các chân của cổng 1.
- P2.0 đến P2.7 là các chân của cổng 2.
- P3.0 đến P3.7 là các chân của cổng 3.
- RxD: Nhận tín hiệu kiểu nối tiếp.
- TxD: Truyền tín hiệu kiểu nối tiếp.
- INTO: Ngắt ngoài 0.
- INT1: Ngắt ngoài 1.
- TO: Chân vào 0 của bộ Timer/Counter 0.
- T I: Chân vào 1 của bộ Timer/Counter 1.
- Wr: Ghi dữ liệu vào bộ nhớ ngoài.
- Rd: Đọc dữ liệu từ bộ nhớ ngồi.
- RST: Chân vào Reset, tích cực ở mức logic cao trong khoảng 2 chu kỳ
máy.
- XTAL1: Chân vào mạch khuếch đại dao động.
- XTAL2: Chân ra từ mạch khuếch đại dao động.
- EA: Truy cập bộ nhớ ngoài.
- PSEN: Chân cho phép đọc bộ nhớ chương trình ngồi (ROM ngồi).
- ALE (/PROG): Chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ
ngoài, khi On-chip xuất ra byte thấp của địa chỉ. Tín hiệu chốt được kích
hoạt ở mức cao, tần số xung chốt = 1/6 tần số dao động của bộ VĐK. Nó có
thể được dùng cho các bộ Timer ngồi hoặc cho mục đích tạo xung Clock.
Đây cũng là chân nhận xung vào để nạp chương trình cho Flash (hoặc
EEPROM) bên trong On-chip khi nó ở mức thấp.
- /EA/Vpp: Cho phép On-chip truy cập bộ nhớ chương trình ngồi khi
/EA=0, nếu /EA=1 thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú
(trường họp cần truy cập vùng nhớ lớn hơn dung lượng bộ nhớ chương trình
10
nội trú, thĩ bộ nhớ chương trình ngồi cũng đttợc isử dụng). Khi chân này
được cấp nguồn điện áp 12V (Vpp) thì On-chip đảm nhận chức năng nạp
chương trình cho Flash bên trong nó.
- Vcc: Cung cấp dương nguồn cho On-chip (+ 5V).
- GND: Nối Mass.
2. MỘT SỐ CẤU TRÚC LẬP TRÌNH c CHO VI ĐIỀU KHIỂN
2.1. Cấu trúc điều khiển if
a. Cẩu trúc rẽ nhảnh i f dạng khuyết
Cú pháp câu lệnh
if (bí)
{cơng việc;}
Trong đó:
- if làtừkhố
- bt là một biểu thức
- Cơng việc có thể là một lệnh đơn hay một khối lệnh.
b. Cẩu trúc rẽ nhánh i f dạng đầy đủ
Cú pháp câu lệnh
ỉf(bt)
{công việc 1;}
else
{công việc 2;}
Trong đó:
- if, else là từ khố
- bt là một biểu thức
- Nếu biểu thức đúng thì thực hiện cơng việc 1, nếu biểu thức sai thì
thực hiện cơng việc 2.
11
2.2. Cấu trúc điều khiển switch
Cú pháp câu lệnh
switch (biểu thức)
{
case el: Khổi lệnh l ; [break;]
case e2: Khối_lệnh_2; [break;]
case en: Khối lệnh n; [break;]
[default: Khối lệnh n+1;]
}
Trong đó:
- switch, case, default là các từ khoá
- Biểu thức là một biểu thức nguyên bất kỳ
- ei là giá trị nguyên mà biểu thức có thể nhận được. Có thể là kiểu char
vì nó có thể được chuyển đổi thành kiểu int.
Những phần đặt trong hai dấu [và] có thể có hoặc không.
2.3. Cấu trúc lặp while
Cú pháp câu lệnh
While (bt)
Công việc;
Trong đó:
- while là từ khố
- bt là một biểu thức
- Cơng việc có thể là một lệnh đom hay một khối lệnh
12
2.4. Cấu trúc lặp đo...while
Cú pháp câu lệnh
Do
{Cơngvỉệc;}
whiỉe(bt);
Trong đó:
- While, Do là từ khố
- bt là một biểu thức
- Cơng việc liệt kê các câu lệnh cần phải thực hiện
2.5. Cấu trúc lặp for
Củ pháp câu lệnh
for(btl ;bt2;bt3)
{Cơng việc;}
Trong đó:
- for là từ khoá
- btl, bt2, bt3 là các biểu thức
- Cơng việc có thể là một lệnh đơn hay một khối lệnh.
13
Bài tập s ố 1
LẬP TRÌNH VÀO/RA CHO
VIĐIÈU KH1ỀN
1. GIỚI THIỆU CHUNG
Bài thực hành này sử dụng 4 Port của vi điều khiển để truy xuất dữ liệu
bước đầu làm quen với lập trình bằng ngơn ngữ c cho vi điều khiển
2. YÊU CÂU CÔNG NGHỆ
- Khi ấn Buttonl các led đơn nháy đuổi từ PO.O đến P1.7.
- Khi ấn Button2 các led đơn sáng, tắt đồng thời.
- Khi ấn Button3 dừng chương trình.
3. S ơ ĐỒ NGUYÊN LÝ
C1
Hình 1.2. S ơ đồ nguyên lý mạch điện điều khiển dãy led đơn
14
+12V
4. CHƯƠNG TRÌNH ĐIỀU KHIỂN
#include<regx5 2 .h>
//. ----------------------------Dinh nghía cac chan
#define button 1 P3_0
#define button2 P3_l
#defĩne button3 P3_2
#defme ledl P1_0
#define led2 P l_ l
#defme led3 Pl_2
#defìne led4 Pl_3
#define led5 Pl_4
#define ledó Pl_5
#define led7 Pl_6
#define led8 Pl_7
#defíne led9 P0_0
#defme ledio P0_1
#defíne ledl 1 P0_2
#defíne led 12 P0_3
#defĩne led 13 P0_4
#defme led 14 P0_5
#defme led 15 P0_6
#defme led 16 P0_7
//.---------------------------- Khai bao cac bien
unsigned char X ,
unsigned char n;
//------------------------------- Ham delay ms
void delay_ms(unsigned char time)
{
unsigned char i=120;
while(time—)
{
while(i—)
{}
}
}
//_---------------------- Chuong trinh con xu ly phim
void xu_ly_phim()
{
while(! button )
x=l;
while(!button2)
x=2;
while(!button3)
x=3;
}
}
//_---------------------- Chuong trinh con nhay kieu 1
void kieul()
{
if ( x = l)
{
16
ledl=0;delay_ms(60);ledl=l ;led2=0;delay_ms(60);led2-l;
Ied3=0;delay_ms(60);led3=l ;led4=0;delay_ms(60);led4=l;
Ied5=0;delay_ms(60);led5=l;|ẹd6=0;delay_ms(60);led6=l;
Ied7=0;delay_ms(60);led7=l ;led8=0;delay_ms(60);led8=l;
Ied9=0;delay_ms(60);led9=l ;ledlO=l ;delay_ms(60);ledl0=l;
ledl l=0;delay_ms(60);ledl I=l;ledl2=0;delay_ms(60);ledl2=l;
led 13=0;delay_ms(60);led 13=1 ;led 14=0;delay_ms(60);led 14= 1;
ledl 5=0;delay_ms(60);ledl 5=1 ;ledl 6=0;delay_ms(60);ledl 6=1;
}
}
//_------------------------ Chuong trinh con nhay kieu 2------------------------
void kieu2()
{
if(x = 2 )
{
Iedl=0;led2=0;led3=0;led4=0;led5=0;
Ied6=0;led7=0 ;led8=0 ;delay_ms(60);
led9=0 ;led 10=0; led 11=0 ;led 12=0; led 13=0;
Iedl4=0;ledl5=0;ledl6=0;delay_ms(60);
led 1=1 ;led2= 1;led3=1;led4= 1;led5= 1;led6= 1;
led7=l ;led8=l ;delay_ms(60);
led9= 1;led 10= 1;led 11=1 ;led 12= 1;led 13=1 ;led 14= 1;
led 15=1 ;led 16= 1;delay_ms(60);
}
}
//_----------------- Chuong trinh con dung chuong trinh--------------------
void dungO
{
if(x = 3 )
17
{
PO=Oxff;
Pl=Oxff;
}
}
//_.----------------------------- chuong trinh chỉhh
void main(void)
{
while(l)
{
xu_ly_phim();
kieul();
kieu2();
dungO;
}
}
18
Bài tập s ố 2
ĐIÈƯ KHIỂN LED 7 THANH
1. KIẾN THỨC CHUN MƠN
1.1. Cấu tạo
a)
Hình 1.3. Cấu tạo led 7 thanh
a) Cấu tạo thực tế; b) Katốt chung; c) Anốt chung
19
Led 7 thanh: gồm 8 led đơn: a, b, c, d, e, f, g, dp (dấu chấm) được sắp
xếp như hình 1.3.a. Khi cần hiển thị số nào sẽ lập trình các led sáng, tắt các
led tương ứng với số đó. Led 7 thanh có 2 kiểu: Katốt chung hoặc Anổt
chung như hình 1.3.b và c.
1.2. Nguyên lý làm việc
Điều khiển led 7 thanh (điều khiển ờ mức 0) cấp dương nguồn Vcc cho
anốt, các chân a, b, c, d, e, f, g, db được nối với các chân của vi điều khiển.
Khi cần led nào sáng lập trình hạ chân của vi điều khiển nối với thanh led
đó xuống mức 0.
Bảng 1.1. Bảng mã hóa led 7 thanh
sốhex
số
hiền
thị
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
PO.O
dp
9
f
e
d
c
b
a
0
1
1
0
0
0
0
0
0
OxcO
1
1
1
1
1
1
0
0
1
0xf9
2
1
0
1
0
0
1
0
0
0xa4
3
1
0
1
1
0
0
0
0
OxbO
4
1
0
0
1
1
0
0
1
0x99
5
1
0
0
1
0
0
1
0
0x92
6
1
0
0
0
0
0
1
0
0x82
7
1
1
1
1
1
0
0
0
0xf8
8
1
0
0
0
0
0
0
0
0x80
9
1
0
0
1
0
0
0
0
0x90
.
2. YÊU CẦU CƠNG NGHỆ
- Lập trình điều khiển 2 led 7 thanh
- Bấm nút tăng: Tăng l đơn vị
- Bấm nút giảm: Giảm 1 đơn vị
- Bấm nút reset: Reset về 0
20
3. s ơ ĐỒ NGUYÊN LÝ
C1
RP1
tOk
I
□
+5V
Ạ
J1
— °3
10uF
ọ
Reset.'
-.3 »
R20
X
C2
•XTAL1
XTAL2
+5V
f j
nqongnạ”1
U1
PSEN
ALE
EA
7
■ 39 1
P0.0/AD0
ô38
P0.1/AD1
37
P0.2/AD2
38
P0.3/AD3
P0.4/AD4 1 - ằ
34
P0.5/AD5
(ã3 3
P0.6/AD6
I- 3 2 .
.
- .
:
P2.0JA8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
Tang
d B
P1.0/T2
P1.1/T2EX
P1 2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.Q/RXD
P3.1/TXD
P3.2/1NT0
P3.3/INT1
P3.4AD
P3.5/Ĩ1
P3.6/WR
P3.7/RD
f l / Q l
r
71P127
rí
Giam
Reset
Ü
Lí
Hình 1.4. S ơ đồ nguyên lý mạch điện điều khiển led 7 thanh
4. CHƯƠNG TRÌNH ĐIỀU KHIỂN
#include<regx52.h>
#defĩne led7 PO
Ỉ
#define ledl P1_0
#define led2 P l_ l
#defme tang P3_0
#defme giam P3_l
#defme reset P3_2
//..------------------------------
-Khai bao bien-
unsigned char x,y;
21
unsigned char n;
const font_7seg[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//.--------------------------------- Ham tao tre--------------------------------
void delay_ms(unsigned char time)
{
unsigned char i=120;
while(time--)
{
while(i—)
{}
}
}
/ / -------------------------------- Ham tinhjo a n ------------------------------
void tinh_toan()
if(tang==0)
{
n++;
delay_ms(30);
if(n= 16)
{
n=0; }
}
while(tang=0){};
if(giam =0)
{
n~;
delay_ms(30);
22
if(n = -l)
{
n=16;
}
}
while (giam =0) {};
if(reset=0)
{
n=0;
}
}
//.------------------- —Chuong trinh con hien thi-----------
void hien_thi()
{
x=n/10;
y=n%10;
ledl=0;led7=font_7seg[x];delay_ms(8);ledl=l;
Ied2=0;led7=font_7seg[y];delay_ms(8);led2=l;
}
void main(void)
{
while(l)
{
tinh_toan();
hicn_thi();
}
}
23