SlideShare a Scribd company logo
1 of 60
TRƯỜNG CAO ĐẲNG KINH TẾ - CÔNG NGHỆ TP. HCM
KHOA ĐIỆN – ĐIỆN TỬ
HƯỚNG DẪN THÍ NGHIỆM
VI XỬ LÝ & PLC
Biên soạn: Nguyễn Ngọc Tùng
LƯU HÀNH NỘI BỘ
MỤC LỤC
Bài mở đầu – NỘI QUY – MỘT SỐ KIẾN THỨC CƠ BẢN ....................................................... 1
Bài 1 – MÔ PHỎNG HỌ VI XỬ LÝ 89C51 TRÊN MÁY TÍNH................................................ 13
Bài 2 – GIAO TIẾP NGOẠI VI VỚI LED 7 ĐOẠN .................................................................. 22
Bài 3 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN PHÍM ............................................................ 29
Bài 4 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN LED............................................................... 33
Bài 5 – ĐIỀU KHIỂN QUÁ TRÌNH TUẦN TỰ......................................................................... 42
Bài 6 – PHÂN LOẠI VÀ ĐẾM SẢN PHẨM .............................................................................. 46
Bài 7 – ĐIỀU KHIỂN ĐÈN GIAO THÔNG............................................................................... 51
Bài 8 – ĐIỀU KHIỂN THANG MÁY.......................................................................................... 55
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 1
Bài mở đầu
NỘI QUY & MỘT SỐ KIẾN THỨC CƠ BẢN
I. Nội quy phòng thí nghiệm
1. Giờ giấc
- Sinh viên có mặt trước giờ thí nghiệm 5 phút, tập trung trước cửa PTN Điện tử. Giờ bắt
đầu vào lớp:
 Buổi sáng: 7h30’
 Buổi chiều: 13h30’
- Đúng giờ thí nghiệm, được sự cho phép của giáo viên hướng dẫn, các sinh viên trật tự
bước vào phòng thí nghiệm. Cứ sau mỗi 5 phút đi trễ, các sinh viên sẽ bị trừ 1 điểm tương ứng
vào điểm bài thí nghiệm của ngày hôm đó. Sau 30 phút, các sinh viên đi trễ sẽ không được vào
phòng thí nghiệm và xem như vắng mặt ngày hôm đó.
- Trước giờ ra về 30 phút, các nhóm sinh viên hoàn tất (hoặc chưa hoàn tất bài thí
nghiệm) phải dừng thí nghiệm và nộp báo cáo thí nghiệm cho giáo viên hướng dẫn. Riêng những
nhóm sinh viên hoàn tất bài thí nghiệm sớm, sau khi nộp báo cáo, nếu có nguyện vọng có thể xin
phép giáo viên hướng dẫn cho về sớm. Giờ ra về:
 Buổi sáng: 11h00’
 Buổi chiều: 17h00’
2. Tổ chức lớp học và cách đánh giá sinh viên
- Lớp học được chia thành tối đa 8 nhóm sinh viên, tùy sĩ số lớp mà số lượng SV mỗi
nhóm sẽ dao động từ 3 đến 5 sinh viên.
- Các bài thí nghiệm được chia làm 2 phần chính: phần thí nghiệm VXL gồm 4 bài được
thực hiện song song bởi 4 nhóm trong mỗi buổi học; phần thí nghiệm PLC gồm 4 bài được thực
hiện tuần tự bởi 4 nhóm còn lại trong mỗi buổi học. Các nhóm hoàn tất phần thí nghiệm PLC sẽ
chuyển sang thực hiện phần thí nghiệm VXL và ngược lại.
- Các sinh viên vắng mặt (không phép) coi như bị điểm 0 bài thí nghiệm ngày hôm đó.
Các sinh viên chỉ được tối đa 1 buổi thí nghiệm vắng mặt có phép và sẽ học bù trong buổi thí
nghiệm dự trữ.
- Bài báo cáo thí nghiệm phải được hoàn thành ngay trong buổi thí nghiệm ngày hôm đó.
Điểm bài TN sẽ được đánh giá trên bài báo cáo này và qua quá trình thí nghiệm của nhóm.
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 2
- Điểm trung bình cuối cùng sẽ là trung bình cộng của 2 cột điểm: điểm thí nghiệm và
điểm kiểm tra cuối kỳ:
 Điểm thí nghiệm (chiếm 30%): là trung bình cộng của điểm 8 bài thí
nghiệm, điểm mỗi bài thí nghiệm sẽ là điểm chung của nhóm.
 Điểm kiểm tra cuối kỳ (chiếm 70%): sau khi hoàn tất xong các bài thí
nghiệm, mỗi sinh viên đều phải trải qua một đợt kiểm tra cuối kỳ. Nội
dung kiểm tra sẽ được chọn lựa ngẫu nhiên từ nội dung các bài thí
nghiệm. Hình thức thi là vấn đáp.
3. Quy chế
- Đối với phần thí nghiệm PLC, mỗi thao tác bật nguồn cung cấp cho kit TN phải
được sự đồng ý của giáo viên hướng dẫn. Do đó, trước khi thực hiện các thao tác này, hãy đề
nghị giáo viên hướng dẫn kiểm tra kit TN. Mỗi thao tác cần cẩn thận, có mục đích và sự hiểu
biết, bất cứ một vấn đề nào không rõ ràng, HÃY hỏi giáo viên hướng dẫn.
- Khi bước vào phòng TN, các sinh viên để cặp táp, giỏ xách trên giá để cặp sách, chỉ
được đem vào phòng TN các dụng cụ học tập cho phép (phần 4).
- Khác với giờ học lý thuyết, giờ TN sẽ không có thời gian giải lao giữa giờ. Các sinh
viên muốn ra khỏi phòng TN trong giờ TN phải nộp giáo viên hướng dẫn thẻ sinh viên của mình.
Mỗi lần ra khỏi phòng TN không được quá 5 phút. Nếu không có nhiệm vụ cụ thể, các sinh viên
nên hạn chế ra khỏi chỗ ngồi thí nghiệm của nhóm mình.
- Đầu giờ, khi nhận các thiết bị, linh kiện thí nghiệm của bài ngày hôm đó, nhóm có trách
nhiệm kiểm tra số lượng, tình trạng các thiết bị, linh kiện đó. Trong quá trình thí nghiệm, nếu
nhóm nào làm sai (hoặc cố tình làm sai) các hướng dẫn trong bài thí nghiệm dẫn đến hư hỏng
linh kiện, dụng cụ, thiết bị của phòng thí nghiệm, cả nhóm của nhóm đó có nghĩa vụ bồi
thường (bằng hiện vật) linh kiện, dụng cụ, thiết bị đã bị hư hỏng. Cuối giờ, nhóm phải hoàn
trả lại phòng thí nghiệm các thiết bị, linh kiện thí nghiệm đã được cấp theo đúng chất lượng và
đủ số lượng.
- Tuyệt đối không được đem các linh kiện, dụng cụ, thiết bị của phòng thí nghiệm ra khỏi
phòng mà không được sự cho phép của giáo viên hướng dẫn.
- Tuyệt đối không hút thuốc lá và thực hiện các hành vi làm phát sinh ra lửa trong phòng
thí nghiệm.
- Không tụ tập nói chuyện hoặc ăn uống trong phòng thí nghiệm.
4. Dụng cụ học tập
- Mỗi nhóm thí nghiệm phải tự trang bị cho nhóm các dụng cụ học tập sau:
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 3
 Giấy A4 báo cáo thí nghiệm.
 Bút, viết, máy tính.
 Quyển Hướng dẫn thí nghiệm Vi xử lý và PLC.
5. Lịch thí nghiệm
Buổi
Nhóm
1 2 3 4 5 6 7 8 9 10 11 12
Nhóm 1
Bài
mở
đầu
B1 B2 B3 B4
B5 B6 B7 B8
Dự
trữ
Kiểm
tra cuối
kỳ
Nhóm 2 B6 B7 B8 B5
Nhóm 3 B7 B8 B5 B6
Nhóm 4 B8 B5 B6 B7
Nhóm 5 B5 B6 B7 B8
B1 B2 B3 B4
Nhóm 6 B6 B7 B8 B5
Nhóm 7 B7 B8 B5 B6
Nhóm 8 B8 B5 B6 B7
II. Một số kiến thức cơ bản về nội dung thí nghiệm
1. Phần thí nghiệm Vi xử lý
Trong phần này, sinh viên sẽ tiến hành thí nghiệm với họ vi xử lý 89C51. Kit chính thí
nghiệm MPE-300 chứa các thành phần chính như sau:
- Chip vi xử lý 89C51 hoạt động với tần số thạch anh 7.3728MHz, ROM trong của chip
đã có sẵn chương trình quản lý kit và nạp RAM ngoài 6264.
- IC chốt 74LS573 dùng để chốt 8 bit địa chỉ thấp xuất ở P0 của 89C51 ở bán kỳ máy đầu
tiên khi thực hiện lệnh xuất/nhập với các địa chỉ ngoài.
- Bộ nhớ ROM ngoài 2764 (8KB) lưu trữ mã lệnh một số chương trình con đã được lập
trình sẵn.
- Bộ nhớ RAM ngoài 6264 (8KB) lưu trữ mã lệnh chương trình thí nghiệm được lập trình
và nạp bởi sinh viên.
- Khối bàn phím chứa 16 phím (0÷F) được bố trí thành ma trận 4 hàng x 4 cột, kết nối
trực tiếp với P1 của 89C51.
- Khối chỉ thị gồm 4 LED 7 đoạn được hiển thị theo chế độ quét, do đó, tần số quét phải
đủ nhanh để các LED hiển thị gần như liên tục, không bị gián đoạn.
- Khối mở rộng port sử dụng PPI 8255 dùng để mở rộng các port xuất/nhập cho 89C51.
a. Họ vi xử lý 8051/8951
 Tập lệnh
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 4
NHÓM LỆNH CHUYỂN DỮ LIỆU
No CÚ PHÁP GIẢI THÍCH
B/
MC
No CÚ PHÁP GIẢI THÍCH
B/
MC
1 MOV A, Rn (A)  (Rn) 1/1 15 MOV @Ri, #data ((Ri))  #data 2/1
2 MOV A, direct (A)  (direct) 2/1 16 MOV DPTR, #data16
(DPTR)  #data15-0
(DPH)  #data15-8
(DPL)  #data7-0
3/2
3 MOV A, @Ri (A)  ((Ri)) 1/1 17 MOVC A, @A+DPTR (A)  ((A) + (DPTR)) 1/2
4 MOV A, #data (A)  #data 2/1 18 MOVC A, @A+PC (A)  ((A) + (PC)) 1/2
5 MOV Rn, A (Rn)  (A) 1/1 19 MOVX A, @Ri (A)  ((Ri)) RAM ngoài 1/2
6 MOV Rn, direct (Rn)  (direct) 2/1 20 MOVX A, @DPTR (A)  ((DPTR)) RAM ngoài 1/2
7 MOV Rn, #data (Rn)  #data 2/1 21 MOVX @Ri, A ((Ri))  (A) RAM ngoài 1/2
8 MOV direct, A (direct)  (A) 2/1 22 MOVX @DPTR, A
((DPTR))  (A) RAM
ngoài
1/2
9 MOV direct, Rn (direct)  (Rn) 2/2 23 PUSH direct
(SP)  (SP) + 1
((SP))  (direct)
2/2
10 MOV direct, direct (direct)  (direct) 3/2 24 POP direct
(direct)  ((SP))
(SP)  (SP) – 1
2/1
11 MOV direct, @Ri (direct)  ((Ri)) 2/2 25 XCH A, Rn (A)  (Rn) 1/1
12 MOV direct, #data (direct)  #data 3/2 26 XCH A, direct (A)  (direct) 2/1
13 MOV @Ri, A ((Ri))  (A) 1/1 27 XCH A, @Ri (A)  ((Ri)) 1/1
14 MOV @Ri, direct ((Ri))  (direct) 2/2 28 XCHD A, @Ri (A3-0)  ((Ri3-0)) 1/1
NHÓM LỆNH TOÁN HỌC
No CÚ PHÁP GIẢI THÍCH
B/
MC
No CÚ PHÁP GIẢI THÍCH
B/
MC
1 ADD A, Rn (A)  (A) + (Rn) 1/1 13 INC A (A)  (A) + 1 1/1
2 ADD A, direct (A)  (A) + (direct) 2/1 14 INC Rn (Rn)  (Rn) + 1 1/1
3 ADD A, @Ri (A)  (A) + ((Ri)) 1/1 15 INC direct (direct)  (direct) + 1 2/1
4 ADD A, #data (A)  (A) + #data 2/1 16 INC @Ri ((Ri))  ((Ri)) + 1 1/1
5 ADDC A, Rn (A)  (A) + (C) + (Rn) 1/1 17 INC DPTR (DPTR)  (DPTD) + 1 1/2
6 ADDC A, direct (A)  (A) + (C) + (direct) 2/1 18 DEC A (A)  (A) – 1 1/1
7 ADDC A, @Ri (A)  (A) + (C) + ((Ri)) 1/1 19 DEC Rn (Rn)  (Rn) – 1 1/1
8 ADDC A, #data (A)  (A) + (C) + #data 2/1 20 DEC direct (direct)  (direct) – 1 2/1
9 SUBB A, Rn (A)  (A) – (C) – (Rn) 1/1 21 DEC @Ri ((Ri))  ((Ri)) – 1 1/1
10 SUBB A, direct (A)  (A) – (C) – (direct) 2/1 22 MUL AB (B15-8), (A7-0)  (A) x (B) 1/4
11 SUBB A, @Ri (A)  (A) – (C) – ((Ri)) 1/1 23 DIV AB (Bdư), (Anguyên)  (A) / (B) 1/4
12 SUBB A, #data (A)  (A) – (C) – #data 2/1 24 DA A
Sửa (A) sang dạng đúng của
số BCD (vd: nếu (A) = 5AH
thì được sửa thành 60H)
1/1
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 5
NHÓM LỆNH LOGIC
No CÚ PHÁP GIẢI THÍCH
B/
MC
No CÚ PHÁP GIẢI THÍCH
B/
MC
1 ANL A, Rn (A)  (A) AND (Rn) 1/1 14 XRL A, direct (A)  (A) XOR (direct) 2/1
2 ANL A, direct (A)  (A) AND (direct) 2/1 15 XRL A, @Ri (A)  (A) XOR ((Ri)) 1/1
3 ANL A, @Ri (A)  (A) AND ((Ri)) 1/1 16 XRL A, #data (A)  (A) XOR #data 2/1
4 ANL A, #data (A)  (A) AND #data 2/1 17 XRL direct, A (direct)  (direct) XOR (A) 2/1
5 ANL direct, A (direct)  (direct) AND (A) 2/1 18 XRL direct, #data (direct)  (direct) XOR #data 3/2
6 ANL direct, #data (direct)  (direct) AND #data 3/2 19 CLR A (A)  0 1/1
7 ORL A, Rn (A)  (A) OR (Rn) 1/1 20 CPL A (A)  (NOT A) 1/1
8 ORL A, direct (A)  (A) OR (direct) 2/1 21 RL A 1/1
9 ORL A, @Ri (A)  (A) OR ((Ri)) 1/1 22 RLC A 1/1
10 ORL A, #data (A)  (A) OR #data 2/1 23 RR A 1/1
11 ORL direct, A (direct)  (direct) OR (A) 2/1 24 RRC A 1/1
12 ORL direct, #data (direct)  (direct) OR #data 3/2 25 SWAP A (A3-0)  (A7-4) 1/1
13 XRL A, Rn (A)  (A) XOR (Rn) 1/1
NHÓM LỆNH RẼ NHÁNH
No CÚ PHÁP GIẢI THÍCH
B/
MC
No CÚ PHÁP GIẢI THÍCH
B/
MC
1 ACALL addr11
(PC)  (PC) + 2
(SP)  (SP) + 1
((SP))  (PC7-0)
(SP)  (SP) + 1
((SP))  (PC15-8)
(PC10-0)  add10-0
2/2 7 LCALL add16
(PC)  (PC) + 3
(SP)  (SP) + 1
((SP))  (PC7-0)
(SP)  (SP) + 1
((SP))  (PC15-8)
(PC)  add15-0
3/2
2 SJMP rel
(PC)  (PC) + 2
(PC)  (PC) + rel
2/2 8 JMP @A+DPTR (PC)  (A) + (DPTR) 1/2
3 RET
(PC15-8)  ((SP))
(SP)  (SP) – 1
(PC7-0)  ((SP))
(SP)  (SP) – 1
1/2 9 JZ rel
(PC)  (PC) + 2
IF (A) = 0 THEN
(PC)  (PC) + rel
2/2
4 RETI
(PC15-8)  ((SP))
(SP)  (SP) – 1
(PC7-0)  ((SP))
(SP)  (SP) – 1
1/2 10 JNZ rel
(PC)  (PC) + 2
IF (A) ≠ 0 THEN
(PC)  (PC) + rel
2/2
5 AJMP add11
(PC)  (PC) + 2
(PC10-0)  add10-0
2/2 11 JC rel
(PC)  (PC) + 2
IF (C) = 1 THEN
(PC)  (PC) + rel
2/2
6 LJMP add16 (PC)  add15-0 3/2 12 JNC rel
(PC)  (PC) + 2
IF (C) = 0 THEN
(PC)  (PC) + rel
2/2
13 JB bit, rel
(PC)  (PC) + 3
IF (bit) = 1 THEN
3/2 18 CJNE Rn, #data, rel
(PC)  (PC) + 3
IF #data < (Rn) THEN
3/2
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 6
(PC)  (PC) + rel (PC)  (PC) + rel
(C)0
IF #data > (Rn) THEN
(PC)  (PC) + rel
(C)1
14 JNB bit, rel
(PC)  (PC) + 3
IF (bit) = 0 THEN
(PC)  (PC) + rel
3/2 19 CJNE @Ri, #data, rel
(PC)  (PC) + 3
IF #data < ((Ri)) THEN
(PC)  (PC) + rel
(C)0
IF #data > ((Ri)) THEN
(PC)  (PC) + rel
(C)1
3/2
15 JBC bit, rel
(PC)  (PC) + 3
IF (bit) = 1 THEN (bit) = 0
(PC)  (PC) + rel
3/2 20 DJNZ Rn, rel
(PC)  (PC) + 2
(Rn)  (Rn) – 1
IF (Rn) ≠ 0 THEN
(PC)  (PC) + rel
2/2
16 CJNE A, direct, rel
(PC)  (PC) + 3
IF (direct) < (A) THEN
(PC)  (PC) + rel
(C)0
IF (direct) > (A) THEN
(PC)  (PC) + rel
(C)1
3/2 21 DJNZ direct, rel
(PC)  (PC) + 3
(direct)  (direct) – 1
IF (direct) ≠ 0 THEN
(PC)  (PC) + rel
3/2
17 CJNE A, #data, rel
(PC)  (PC) + 3
IF #data < (A) THEN
(PC)  (PC) + rel
(C)0
IF #data > (A) THEN
(PC)  (PC) + rel
(C)1
3/2 22 NOP (PC)  (PC) + 1 1/1
NHÓM LỆNH LIÊN QUAN ĐẾN BIT
No CÚ PHÁP GIẢI THÍCH
B/
MC
No CÚ PHÁP GIẢI THÍCH
B/
MC
1 CLR C (C)  0 1/1 7 ANL C, bit (C)  (C) AND (bit) 2/2
2 CLR bit (bit)  0 2/1 8 ANL C, /bit (C)  (C) AND (NOT bit) 2/2
3 SETB C (C)  1 1/1 9 ORL C, bit (C)  (C) OR (bit) 2/2
4 SETB bit (bit)  1 2/1 10 ORL C, /bit (C)  (C) OR (NOT bit) 2/2
5 CPL C (C)  (NOT C) 1/1 11 MOV C, bit (C)  (bit) 2/1
6 CPL bit (bit)  (NOT bit) 2/1 12 MOV bit, C (bit)  (C) 2/2
Ghi chú: (X) : nội dung của X
((X)) : nội dung của ô nhớ có địa chỉ là nội dung của X (X là con trỏ)
direct : địa chỉ trực tiếp; Rn : n = 0 ÷ 7; Ri : i = 1,2
rel: địa chỉ tương đối (trình biên dịch sẽ tính rel từ địa chỉ cần nhảy đến)
B/MC : Bytes / Machine Cycles
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 7
 Các vùng nhớ dữ liệu
Địa chỉ byte Địa chỉ bit (Hex) Địa chỉ byte Địa chỉ bit (Hex) Tên
7FH
Vùng RAM đa dụng
FFH
F0H F7 F6 F5 F4 F3 F2 F1 F0 B
E0H E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0H
D7 D6 D5 D4 D3 D2 _ D0
PSW
CY AC F0 RS1 RS0 OV P
30H B8H
_ _ _ BC BB BA B9 B8
IP
PS PT1 PX1 PT0 PX0
2FH 7F7E7D7C7B7A7978
2EH 77 76 75 74 73 72 7170 B0H
B7 B6 B5 B4 B3 B2 B1 B0
P3
RD WR T1 T0 INT1 INT0 TXD RXD
2DH 6F6E6D6C6B6A6968
2CH 67 66 65 64 63 62 6160 A8H
AF _ _ AC AB AA A9 A8
IE
EA ES ET1 EX1 ET0 EX0
2BH5F5E5D5C5B5A5958
2AH 57 56 55 54 53 52 5150 A0H A7 A6 A5 A4 A3 A2 A1 A0 P2
29H 4F4E4D4C4B4A4948
28H 47 46 45 44 43 42 4140 99H không được địa chỉ hóa bit SBUF
27H 3F3E3D3C3B3A3938 98H
9F 9E 9D 9C 9B 9A 99 98
SCON
SM0 SM1 SM2 REN TB8 RB8 TI RI
26H 37 36 35 34 33 32 3130
25H 2F2E2D2C2B2A2928 90H 97 96 95 94 93 92 91 90 P1
24H 27 26 25 24 23 22 2120
23H 1F1E1D1C1B1A1918 8DH không được địa chỉ hóa bit TH1
22H 17 16 15 14 13 12 1110 8CH không được địa chỉ hóa bit TH0
21H 0F0E0D0C0B0A0908 8BH không được địa chỉ hóa bit TL1
20H 07 06 05 04 03 02 0100 8AH không được địa chỉ hóa bit TL0
1FH
Bank 3
89H
không được địa chỉ hóa bit
TMOD
GATE C/T M1 M0 GATE C/T M1 M0
18H 88H
8F 8E 8D 8C 8B 8A 89 88
TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
17H
Bank 2
87H
không được địa chỉ hóa bit
PCON
SMOD – – – GF1 GF0 PD IDL
10H
0FH
Bank 1
83H không được địa chỉ hóa bit DPH
DPTR
08H 82H không được địa chỉ hóa bit DPL
07H Bank thanh ghi 0
(Mặc định cho R0 - R7)
81H không được địa chỉ hóa bit SP
00H 80H 87 86 85 84 83 82 81 80 P0
RAM nội Các thanh ghi chức năng đặc biệt (SFR)
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 8
 Sơ đồ chân IC
0
VCC
10uF
VCC = 5V
0
33pF
0
8.2K
8051 / 8951
29
30
40
20
31
19
18
9
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VCC
GND
EA
X1
X2
RST
P0.0 / AD0
P0.1 / AD1
P0.2 / AD2
P0.3 / AD3
P0.4 / AD4
P0.5 / AD5
P0.6 / AD6
P0.7 / AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0 / A8
P2.1 / A9
P2.2 / A10
P2.3 / A11
P2.4 / A12
P2.5 / A13
P2.6 / A14
P2.7 / A15
P3.0 / RXD
P3.1 / TXD
P3.2 / INT0
P3.3 / INT1
P3.4 / T0
P3.5 / T1
P3.6 / WR
P3.7 / RD
12MHz
100
33pF
b. Mở rộng port xuất/nhập dùng PPI 8255
- Họ 8051 có 4 port giao tiếp ngoại vi là P0, P1, P2 và P3. Khi sử dụng bộ nhớ ngoài thì
P0 đảm nhận vai trò là bus dữ liệu và bus địa chỉ thấp, P2 đảm nhận vai trò là bus địa chỉ cao.
Một số chân của P3 có thể được dùng vào mục đích đặc biệt như TXD, RXD, WR, RD, ngắt, …
Do đó chỉ còn lại P1 để giao tiếp với các thiết bị ngoại vi. Trong trường hợp cần thêm các ngõ
vào/ra để giao tiếp ngoại vi thì phải mở rộng port. PPI 8255 là một IC chuyên dùng cho mục đích
này.
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 9
- PPI 8255 bao gồm 3 port có thể đóng vai trò như port xuất hoặc port nhập. Khi ở chế độ
xuất, dữ liệu từ data bus được đưa tới và chốt ở port cần xuất. Khi ở chế độ nhập, dữ liệu từ port
đang kích hoạt sẽ được đọc và đưa ngược lại vào data bus. Ngoài ra, 8255 còn có một thanh ghi
điều khiển để xác lập chế độ hoạt động (xuất hoặc nhập) cho các port. Khi cần mở rộng port cho
8051/8951 thì data bus được nối với P0, các port A,B và C được nối với ngoại vi.
Các ngõ vào điều khiển:
 /CS: tín hiệu chọn chip (tích cực thấp)
 /WR: tín hiệu cho phép xuất (nối vào chân /WR của 8051/8951)
 /RD: tín hiệu cho phép nhập (nối vào chân /RD của 8051/8951)
 RESET: reset 8255 (nối với chân RST của 8051/8951)
 A1, A0: chọn port làm việc
A1 A0 Chọn
0 0 Port A
0 1 Port B
1 0 Port C
1 1 Thanh ghi điều khiển
- Trước khi sử dụng 8255 thì phải xác lập chế độ hoạt động cho nó thông qua việc xác lập
giá trị của thanh ghi điều khiển. Thanh ghi điều khiển gồm 8 bit:
Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu
Trang 10
D7 D6 D5 D4 D3 D2 D1 D0
1
Mode nhóm A:
- 00: mode 0
- 01: mode 1
- 1X: mode 2
0: PA out
1: PA in
0: PCH out
1: PCH in
Mode nhóm B:
- 0: mode 0
- 1: mode 1
0: PB out
1: PB in
0: PCL out
1: PCL in
Trong đó: Nhóm A gồm PA và PCH (PC4÷PC7)
Nhóm B gồm PB và PCL (PC0÷PC3)
Đối với mục đích mở rộng port xuất nhập thông thường thì mode 0 (mode xuất/nhập cơ
bản) thường được sử dụng.
2. Phần thí nghiệm PLC (sẽ được trình bày trên lớp học)
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 13
Bài 1
MÔ PHỎNG HỌ VI XỬ LÝ 8051
TRÊN MÁY VI TÍNH
I. Kiến thức cơ bản
1. Phần mềm Simulator 2003
Thông thường, sau khi viết xong một chương trình bằng Assembler cho vi xử lý, trước
khi nạp chương trình vào ROM/RAM để thực thi trên thực tế thì chương trình đó cần phải được
kiểm tra, đánh giá tính đúng đắn, độ tin cậy thông qua hình thức mô phỏng trên máy vi tính. Một
trong những phần mềm mô phỏng vi xử lý thông dụng phải kể đến Simulator 2003.
Simulator 2003 là phần mềm chuyên dùng để mô phỏng cho các họ vi xử lý
8031/8032/87C51/87C52/89C51/89C52/8051/8052. Simulator 2003 có cách sử dụng rất dễ dàng
và thân thiện. Một số đặc tính nổi bật của Simulator 2003 như sau:
- Cho phép giám sát động và thiết lập động nội dung bất kỳ một vùng nhớ nào ở RAM
trong, RAM ngoài và các thanh ghi chức năng đặc biệt dưới dạng số hex, nhị phân và
thập phân.
- Cho phép giả lập đầy đủ các ngắt.
- Dễ dàng dò lỗi chương trình thông qua các chức năng như mô phỏng theo từng bước,
theo từng khối, theo thời gian…
- Tốc độ mô phỏng có thể điều chỉnh được.
- Cho phép biên dịch ngược từ mã hex hoặc bin (mã máy) sang mã Assembler.
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 14
Giao diện chương trình Simulator 2003
2. Phần mềm Crimson Editor
Trước khi mô phỏng, chương trình vi xử lý phải được lập trình thông qua phần mềm
Crimson Editor. Đây là phần mềm tạo các file văn bản hỗ trợ rất nhiều các ngôn ngữ lập trình
khác nhau như Assembler, Pascal, C, C++, Visual Basic, MatLAB,… Khi viết chương trình
Assembler với Crimson Editor, tập tin chương trình phải được lưu dưới dạng ‘*.a51’. Đây là một
tập tin văn bản thuần túy, để có thể sử dụng chương trình này với Simulator 2003, tập tin này
phải được biên dịch sang tập tin ngôn ngữ máy ‘*.bin’ thông qua chức năng biên dịch kèm theo
của Crimson Editor.
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 15
Giao diện chương trình Crimson Editor
II. Thí nghiệm
1. Mô phỏng với các lệnh chuyển dữ liệu
a. Sử dụng Crimson Editor
- Vào File  New để tạo tập tin mới.
- Vào File  Save As… để lưu tập tin mới dưới tên Bai11ab.a51 ở Desktop.
- Nhập nội dung sau vào cửa sổ soạn thảo của Bai11ab.a51:
ORG 0000H
MOV 20H, P0 ; (1)
MOV R1, #21H ; (2)
DEC 01H ; (3)
MOV A, @R1 ; (4)
CPL A ; (5)
ANL A, #0FH ; (6)
MOV 21H, @R1 ; (7)
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 16
ADD A, 21H ; (8)
MOV B, #2 ; (9)
DIV AB ; (10)
MOV P1, A ; (11)
SJMP $ ; (12)
END
- Vào Tools  Translate A51 to BIN để biên dịch chương trình trên sang dạng tập tin
ngôn ngữ máy Bai11ab.bin (ở Desktop). Quan sát kết quả biên dịch ở cửa sổ Output (bên
dưới cửa sổ soạn thảo), nếu nhìn thấy dòng “ASSEMBLY COMPLETE, NO ERRORS
FOUND” chứng tỏ việc biên dịch đã thành công.
b. Sử dụng Simulator 2003
- (Nếu đang tồn tại một tập tin đang mở thì vào File  Close File để đóng tập tin).
- Vào File  Open File và chọn mở tập tin Bai11ab.bin ở Desktop.
- Vào Micsellaneous  General Write, trong danh sách Type chọn SFR Registers, trong
danh sách Name/Address chọn P0 (hoặc cũng có thể double click vào giá trị P0 trên cửa
sổ SFRs window), nhập giá trị 99 vào ô Decimal để thiết lập giá trị 99 thập phân cho P0.
- Vào Execution  Start/Stop Execution (hoặc nhấn nút lệnh lệnh Start Execution ) để
bắt đầu mô phỏng chương trình.
- [1]
Vào Miscellaneous  General Read (hoặc double click vào giá trị P1 trên cửa số
SFRs window), cho biết giá trị xuất ra ở P1 (dưới dạng thập phân) là bao nhiêu?
- Vào Execution  Start/Stop Execution để dừng mô phỏng. Vào Execution  Reset
Execution (hoặc nhấn nút lệnh ) để reset vi xử lý.
- Thiết lập lại giá trị 99 thập phân cho P0.
- Vào Debugging  Single Step (hoặc nhấn F2) để thực thi chương trình theo từng dòng
lệnh một. Quan sát cửa sổ Execution Status để biết dòng lệnh kế tiếp sẽ được thực thi.
- Trên cửa sổ Active Watch, click nút lệnh Add items để mở cửa sổ Add to Active
Watch, chọn và click nút Add để bổ sung các vùng nhớ sau vào cửa sổ Active Watch: P0,
P1, ACC, B (SFR Registers) - 20H, 21H, R1(Internal RAM)
- [2]
Điền giá trị (thập phân) các vùng nhớ sau khi từng dòng lệnh một được thực hiện xong
vào bảng sau:
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 17
Lệnh PC (Hex) P0 P1 20H 21H ACC B R1
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
- [3]
Nếu không có dòng lệnh (12) thì kết quả chương trình trên có khác đi không?
- [4]
Dòng lệnh (9) gán giá trị 2 thập phân cho thanh ghi B. Cuối chương trình (dòng lệnh
(12)), giá trị thanh ghi B có thay đổi không? Tại sao?
c. Ứng dụng
- [5]
Sử dụng Crimson Editor soạn thảo chương trình Bai11c.a51 ở Desktop với nội dung
sau: nhập liên tục giá trị từ P1, kiểm tra xem nếu giá trị này lớn hơn 127 thì chia đôi và
xuất kết quả (phần nguyên) ra P2. Trong trường hợp ngược lại thì nhân đôi giá trị này và
cũng xuất kết quả ra P2.
- Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003.
2. Mô phỏng với Timer
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai12a.a51 ở Desktop:
ORG 0000H
MOV TMOD , #01H ; (1)
MOV A, #10000000B ; (2)
LOOP: RL A ; (3)
MOV P1, A ; (4)
MOV R1, P0 ; (5)
ACALL DELAY ; (6)
SJMP LOOP ; (7)
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 18
DELAY: MOV TH0, #HIGH(-1000) ; (8)
MOV TL0, #LOW(-1000) ; (9)
SETB TR0 ; (10)
JNB TF0, $ ; (11)
CLR TR0 ; (12)
CLR TF0 ; (13)
DJNZ R1, DELAY ; (14)
RET ; (15)
END
- Biên dịch chương trình trên sang mã máy. Mở file bai12a.bin với Simulator 2003.
- Vào Options  Simulation Settings. Trong cửa sổ Simulator2003 Settings, chọn Tab
Simulation. Thay đổi giá trị Batch Instructions Count thành 100, trong danh sách Refresh
Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị.
- Chạy mô phỏng chương trình.
- [1]
Thay đổi giá trị đặt cho P0 (chẳng hạn như 10, 50, 100, 200) và quan sát kết quả ở P1,
từ đó giải thích ngắn gọn mục đích của chương trình trên.
- [2]
Giải thích dòng lệnh (1).
- [3]
Với thạch anh 12Mhz, dòng lệnh (11) sẽ được thực thi trong khoảng thời gian bao
nhiêu? Từ đó, một cách gần chính xác, suy ra dòng lệnh (6) sẽ được thực thi trong bao
nhiêu lâu nếu P0 nhận giá trị là 20.
- Dừng mô phỏng và reset chương trình. Thiết lập giá trị 20 cho P0.
- Vào Disassembly  Disassemble Code. Trong cửa sổ Disassembly Window, click vào
cột Brk (cột đầu tiên) 2 hàng lệnh ACALL 0000EH (lệnh (6)) và SJMP 00005H (lệnh
(7)) để thiết lập vị trí Break Point cho 2 hàng lệnh này. Khi mô phỏng với lệnh Start
Execution , chương trình mô phỏng sẽ tạm dừng ở đầu dòng lệnh (6) cho đến khi nhận
được lệnh Start Execution một lần nữa. Sau khi thực hiện xong lệnh (6), chương trình
tiếp tục tạm dừng ở đầu dòng lệnh (7).
- [4]
Quan sát cửa sổ Execution Status để biết được thời điểm tạm dừng ở 2 đầu dòng lệnh
này, từ đó cho biết chính xác dòng lệnh (6) đã được thực thi trong khoảng thời gian bao
nhiêu lâu.
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 19
- [5]
Giá trị thực tế này và giá trị ước lượng ở [2]
có khác nhau không? Độ chênh lệch đó là
bao nhiêu và tại sao lại có sự chênh lệch đó.
b. Ứng dụng
- [6]
Viết chương trình Bai12b.a51 ở Desktop thực hiện nhiệm vụ sau: liên tục kiểm tra
chân P1.7, nếu P1.7 = 1 thì xuất ra ở P1.0 xung vuông có tần số 2Hz; nếu P1.7 = 0 thì
thiết lập mức 0 cho P1.0
- Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003.
3. Mô phỏng với ngắt
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai13a.a51 ở Desktop:
ORG 0000H
LJMP MAIN ; (1)
ORG 0003H
LJMP ISR_EX0 ; (2)
ORG 000BH
LJMP ISR_T0 ; (3)
ORG 0030H
MAIN: MOV TMOD, #01H ; (4)
MOV IE, #81H ; (5)
SETB IT0 ; (6)
MOV A, #01H ; (7)
MOV P1, #0 ; (8)
SJMP $ ; (9)
ISR_EX0: CPL C ; (10)
CPL ET0 ; (11)
JNC EXIT_EX0 ; (12)
MOV R7, #5 ; (13)
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 20
SETB TF0 ; (14)
EXIT_EX0:RETI ; (15)
ISR_T0: CLR TR0 ; (16)
MOV TH0, #HIGH(-50000) ; (17)
MOV TL0, #LOW(-50000) ; (18)
SETB TR0 ; (19)
DJNZ R7, EXIT_T0 ; (20)
MOV R7, #5 ; (21)
MOV P1, A ; (22)
RL A ; (23)
EXIT_T0: RETI ; (24)
END
- Biên dịch chương trình trên sang mã máy. Mở file bai13a.bin với Simulator 2003.
- Vào Options  Simulation Settings. Trong cửa sổ Simulator2003 Settings, chọn Tab
Simulation. Thay đổi giá trị Batch Instructions Count thành 1000, trong danh sách
Refresh Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị.
- Chạy mô phỏng chương trình.
- [1]
Click nút lệnh External interrupt 0 để giả lập ngắt ngoài 0 cạnh xuống cho vi xử
lý. Quan sát kết quả ở P1. Một lần nữa click nút lệnh External interrupt 0 và quan sát
P1. Từ đó giải thích ngắn gọn mục đích của chương trình.
- [2]
Giải thích dòng lệnh (5) và (6) của chương trình.
- [3]
Giải thích mục đích của dòng lệnh (11). Từ đó cho biết chương trình con ISR_T0 được
thực thi trong trường hợp nào.
- [4]
Nếu bỏ đi dòng lệnh (14) thì chương trình có còn chạy đúng không? Tại sao? Dòng
lệnh (14) có thể được thay bằng một dòng lệnh nào để kết quả mô phỏng gần như không
đổi?
b. Ứng dụng
Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1
Trang 21
- [5]
Viết chương trình Bai13b.a51 dùng ngắt ngoài 1 và ngắt timer 1 thực hiện nhiệm vụ
của một mạch delay_on như sau: nếu có cạnh xuống ở P3.3 thì delay 10ms và đặt giá trị
P1.0 lên 1; nếu gặp cạnh xuống ở P3.3 một lần nữa thì ngay lập tức đưa P1.0 về 0.
- Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003.
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 22
Bài 2
GIAO TIẾP NGOẠI VI VỚI LED 7 ĐOẠN
I. Kiến thức cơ bản
Sơ đồ nguyên lý mạch giao tiếp giữa 89C51 với LED 7 đoạn trên kit thí nghiệm MPE-
300:
DATA BUS
0
A
D7
/Y2
D3
U10
74LS259
13
1
2
3
14
4
5
6
7
9
10
11
12
D
S0
S1
S2
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
0
D2
a
b
c
d
e
f g
OP
LED7_CK2
7
1
2
6
4
10
9
3
5
8
A
E
D
B
C
G
F
CK
OP
CK
A2
Q3
D6
WR2
U6
74LS138
1
2
3
15
14
13
12
11
10
9
7
6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
0
A14
B
a
b
c
d
e
f g
OP
LED7_CK3
7
1
2
6
4
10
9
3
5
8
A
E
D
B
C
G
F
CK
OP
CK
D
G
Q2
A2
DATA BUS
BJT
0
a
b
c
d
e
f g
OP
LED7_CK1
7
1
2
6
4
10
9
3
5
8
A
E
D
B
C
G
F
CK
OP
CK
WR3
D2
Q0
D1
D6
BJT
0
A1
A6
A5
OP
0
D0
/WR
D0
/WR
E
D5
Q1
U9
74LS374
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OE
CLK
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A4
VCC
0
A13
D4
BJT
D5
A15
a
b
c
d
e
f g
OP
LED7_CK4
7
1
2
6
4
10
9
3
5
8
A
E
D
B
C
G
F
CK
OP
CK
U8
74LS32
3
1
2
A0
Q2
D1
VCC
/Y3
D0
A0
U2
74LS573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
U1
89C51
30
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
16
40
20
ALE
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.6/WR
VCC
GND
WR3
F
D4
BJT
A3
A1
A7
/WR
ADDRESS BUS
D3
WR2
6
5
4
Q0
Q1
C
0
Q3
D7
Trong đó:
- 74LS573 (U2): IC chốt địa chỉ. Do Port 0 hoạt động ở chế độ địa chỉ / dữ liệu (nửa chu
kỳ đầu là 8 bit địa chỉ thấp và nửa chu kỳ sau là dữ liệu) nên U2 được dùng để chốt và
giữ lại byte địa chỉ thấp này trên address bus.
- 74LS138 (U6): IC giải mã địa chỉ. Chẳng hạn, để /Y2 = 0 thì CBA = 010, để /Y3 = 0 thì
CBA = 011,…
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 23
- 74LS259 (U10): IC giải mã địa chỉ và chốt. Khi tín hiệu kích hoạt /G = 0, Q0 = D khi
S2S1S0 = 000, Q1 = D khi S2S1S0 = 001, …, Q7 = D khi S2S1S0 = 111 (các ngõ ra còn
lại giữ nguyên trạng thái trước đó).
- 74LS374 (U9): chốt dữ liệu theo cạnh lên của CLK. Với tín hiệu cho phép /OE = 0, khi
có cạnh lên ở CLK thì Qi = Di (i = 0÷7). Sau đó, các ngõ ra Qi sẽ được chốt lại bất chấp
sự thay đổi của các ngõ vào Di.
- Các LED 7 đoạn: thuộc loại cathode chung. Để một đoạn LED phát sáng thì phải thỏa
mãn 2 điều kiện: chân CK ở mức thấp và chân điều khiển đoạn LED tương ứng phải ở
mức cao.
Với sơ đồ nguyên lý trên, có thể nhận thấy rằng tại mỗi thời điểm chỉ có thể hiển thị duy
nhất 1 LED 7 đoạn. Do đó, để hiển thị một LED 7 đoạn, chẳng hạn như LED7_CK3, phát sáng
thì phải thực hiện tuần tự 3 bước sau:
- Nếu có một LED 7 đoạn nào đang được phát sáng trước đó, chẳng hạn như LED7_CK2,
thì tắt đi bằng cách đưa Q1 về 0 để chân CK của LED7_CK2 cách ly với mức điện áp
thấp.
- Chốt tín hiệu thích hợp ở ngõ ra của U9 (74LS374), tín hiệu này là các mã LED 7 đoạn
ứng với một con số, một chữ cái... cần hiển thị. Lúc này cả 4 LED 7 đoạn đều nhận được
tín hiệu này tuy nhiên chưa LED nào được phát sáng do chân CK của chúng được cách ly
với mức điện áp thấp.
- Để LED7_CK3 phát sáng thì thiết lập Q2 = 1.
Căn cứ vào sơ đồ nguyên lý trên, các sinh viên có thể xác định được các vùng địa chỉ phù
hợp để thực thi các bước trên. Lưu ý là do mỗi lần chỉ có thể hiển thị được 1 LED 7 đoạn nên để
có thể hiển thị gần như đồng thời 4 LED 7 đoạn này, cần thực hiện việc hiển thị theo cách
“quét”: lần lượt hiển thị từng LED một với tần số cao để mắt người vẫn có cảm giác là việc hiển
thị được thực hiện đồng thời:
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 24
II. Thí nghiệm
1. Giao tiếp với 1 LED 7 đoạn
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai21a.a51 ở Desktop:
ORG 0000H
LOOP: MOV A, #3FH ; (1)
MOV DPTR, #4000H ; (2)
MOVX @DPTR, A ; (3)
MOV A, #01H ; (4)
MOV DPTR, #6001H ; (5)
MOVX @DPTR, A ; (6)
SJMP LOOP ; (7)
END
- Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN.
- Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút
MODE sang vị trí INT, sau đó buông nút RESET. Chương trình ở ROM trong của
89C51 sẽ được thực thi để chuẩn bị nạp RAM ngoài 6264.
- Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh
để mở và nạp file bai21a.bin (ở desktop). Sau đó click nút lệnh download để nạp chương
trình trên tới RAM ngoài 6264 của 89C51 (chương trình sẽ được chuyển tới 89C51 và
89C51 sẽ điều khiển để nạp cho RAM ngoài).
- Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị
trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp
ở RAM ngoài của 89C51 sẽ được thực thi.
- [1]
Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau:
LED7_CK1 LED7_CK2 LED7_CK3 LED7_CK4
Nội dung hiển thị
- [2]
Dòng lệnh nào trên chương trình quyết định nội dung hiển thị trên?
- [3]
Khi vừa thực hiện xong dòng lệnh (3), dựa trên sơ đồ nguyên lý và cho biết giá trị của
các đường tín hiệu sau:
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 25
A15 = ...
A14 = ...   WR2 = … → ...  Q7→0 (U9) = …
A13 = ...
- [4]
Khi đang thực hiện dòng lệnh (6), dựa trên sơ đồ nguyên lý và cho biết giá trị của các
đường tín hiệu sau:
A15 = ...
A14 = ...    Q3→0 (U10) = …
A13 = ...
- [5]
Nếu thay dòng lệnh (2) bằng dòng lệnh MOV DPTR, #4002H thì kết quả chương trình
trên có thay đổi không? Tại sao?
- [6]
Nếu thay dòng lệnh (4) bằng dòng lệnh MOV A, #00H thì LED 7 đoạn có sáng không?
Tại sao? Từ đó cho biết có thể thay dòng lệnh này bằng dòng lệnh SETB ACC.0 được
không?
b. Ứng dụng
- [7]
Viết chương trình Bai21b_1.a51 xuất ra LED7_CK4 ký tự h và dấu “.” như sau:
- [8]
Viết chương trình Bai21b_2.a51 tuần hoàn xuất ra LED7_CK1 các ký tự hex như sau:
0  9  F
với khoảng thời gian hiển thị mỗi ký tự là 0.5s (lưu ý thạch anh sử dụng cho 89C51 có
tần số 7.3728Mhz)
Hướng dẫn: Chương trình sau xuất 1 ký tự tùy chọn trong khoảng từ 05 ra LED7_CK2.
Sinh viên dựa vào chương trình này, xem lại lệnh MOVC và lệnh giả DB để thực hiện
câu [8]
/Y2 = …
/WR = 0 → 1
/Y3 = …
/WR = 0
WR3 = …
D0 = …
A2 = …
A1 = …
A0 = …
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 26
KY_TU EQU 3 ; Chọn ký tự từ 05 để xuất (ở đây xuất 3)
ORG 0000H
LOOP:MOV DPTR, #LED7_CODE
MOV A, #KY_TU
MOVC A, @A+DPTR ; Đổi ký tự sang mã LED 7 đoạn
MOV DPTR, #4000H
MOVX @DPTR, A ; Xuất mã ký tự đến ngõ ra U9
MOV A, #01H
MOV DPTR, #6001H
MOVX @DPTR, A ; Xuất tín hiệu chọn LED 7 đoạn ra U10
SJMP LOOP
LED7_CODE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH ; Mã các ký tự từ 05
END
2. Giao tiếp với cả 4 LED 7 đoạn
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai22a.a51 ở Desktop:
ORG 0000H
MOV DPL, #03H ; (1)
LOOP: MOV 120, #7DH ; (2)
ACALL DISPLAY ; (3)
MOV 120, #07H ; (4)
ACALL DISPLAY ; (5)
MOV 120, #7FH ; (6)
ACALL DISPLAY ; (7)
MOV 120, #6FH ; (8)
ACALL DISPLAY ; (9)
SJMP LOOP ; (10)
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 27
DISPLAY: CLR ACC.0 ; (11)
MOV DPH, #60H ; (12)
MOVX @DPTR, A ; (13)
MOV A, 120 ; (14)
MOV DPH, #40H ; (15)
MOVX @DPTR, A ; (16)
SETB ACC.0 ; (17)
MOV DPH, #60H ; (18)
INC DPL ; (19)
ANL DPL, #03H ; (20)
MOVX @DPTR, A ; (21)
MOV R7, #250 ; (22)
DJNZ R7, $ ; (23)
RET ; (24)
END
- Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN.
- Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút
MODE sang vị trí INT, sau đó buông nút RESET.
- Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh
để mở và nạp file bai22a.bin (ở desktop). Sau đó click nút lệnh download để nạp chương
trình trên tới RAM ngoài 6264 của 89C51.
- Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị
trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp
ở RAM ngoài của 89C51 sẽ được thực thi.
- [1]
Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau:
Hướng dẫn thí nghiệm VXL & PLC Bài 2
Trang 28
LED7_CK1 LED7_CK2 LED7_CK3 LED7_CK4
Nội dung hiển thị
- [2]
Các dòng lệnh nào trên chương trình quyết định các nội dung hiển thị trên?
- [3]
Các dòng lệnh (11), (12) và (13) dùng để làm gì?
- [4]
Các dòng lệnh (14), (15) và (16) dùng để làm gì?
- [5]
Các dòng lệnh từ (17) đến (21) dùng để làm gì? Tại sao phải có dòng lệnh (20)? Nếu
bỏ đi dòng lệnh này chương trình có còn chạy đúng không?
- [6]
Dòng lệnh (22) và (23) dùng để delay thời gian hiển thị cho 1 LED 7 đoạn. MPE-300
sử dụng thạch anh có tần số 7.3728MHz cho 89C51 thì thời gian delay này là bao lâu?
b. Ứng dụng
- [7]
Viết chương trình Bai22b.a51 xuất ra các LED 7 đoạn dòng chữ “HELP.” nhấp nháy
với chu kỳ 1s (0.5s bật và 0.5s tắt) như sau (lưu ý thạch anh sử dụng có tần số
7.3728Mhz):
Hướng dẫn: Có thể sử dụng ngắt timer để tạo hiệu ứng nhấp nháy.
Hướng dẫn thí nghiệm VXL & PLC Bài 3
Trang 29
Bài 3
GIAO TIẾP NGOẠI VI VỚI MA TRẬN PHÍM
I. Kiến thức cơ bản
Sơ đồ nguyên lý khối bàn phím trên MPE-300:
P1.3
(Coä
t 2)
9
P1.1
1
P1.2
D
(Haø
ng 1)
P1.4
6
C
(Haø
ng 3)
4
(Coä
t 1)
2
(Haø
ng 0)
E
(Haø
ng 2)
8
P1.5
3
89C51
U1
40
20
1
2
3
4
5
6
7
8
VCC
GND
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
(Coä
t 0)
0
P1.6
7
B
P1.7
A
0
5
(Coä
t 3)
VCC
F
P1.0
- Khối bàn phím là một ma trận phím gồm 4 hàng và 4 cột, mỗi hàng (cũng như mỗi cột)
được kết nối trực tiếp với 1 chân của P1. Khi một phím, chẳng hạn như phím số 5, được
nhấn thì sẽ tạo ra sự kết nối về điện giữa chân P1.5 và P1.1. Do đó, 89C51 có thể giao
tiếp với khối bàn phím trên theo nguyên lý quét phím: lần lượt xuất các mức logic 0 ra
mỗi cột và kiểm tra hàng, hàng nào nhận được mức logic 0 chứng tỏ phím ứng với hàng
và cột đó đã được nhấn.
Hướng dẫn thí nghiệm VXL & PLC Bài 3
Trang 30
- Để không bỏ sót một phím nhấn, quá trình quét phím theo cột phải được thực hiện liên
tục với tần số cao. Về mặt nguyên tắc có thể xảy ra trường hợp: khi chương trình đang
quét phím ở một cột thì một phím ở cột khác được nhấn và tất nhiên chương trình không
nhận ra sự nhấn phím này. Tuy nhiên, trên thực tế thì thời gian một phím được nhấn dài
hơn rất nhiều thời gian quét phím và xử lý của 89C51 nên khả năng bỏ sót phím là điều
không thể.
- Trong chương trình, khi một phím được nhấn cần phải nhận biết được mã phím (là giá trị
của phím nhấn, chẳng hạn phím 0 có mã phím là 0, phím 1 có mã phím là 1,…). Mã phím
và vị trí của phím trong ma trận phím có quan hệ với nhau theo công thức:
Mã phím = (STT hàng) × 4 + (STT cột)
Vd: Phím 3: Mã phím = 0x4 + 3 = 3
Phím C: Mã phím = 3x4 + 0 = 12
II. Thí nghiệm
1. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai31.a51 ở desktop:
SCAN EQU R7
COL EQU R6
ROW EQU R5
ORG 0000H
BEGIN: MOV SCAN, #01111111B ; (1)
MOV COL, #3 ; (2)
SCAN_KEY: MOV P1, SCAN ; (3)
MOV A, P1 ; (4)
CPL A ; (5)
ANL A, #0FH ; (6)
JZ NEXT_COL ; (7)
MOV ROW, #-1 ; (8)
ROW_COUNT: RRC A ; (9)
INC ROW ; (10)
Hướng dẫn thí nghiệm VXL & PLC Bài 3
Trang 31
JNC ROW_COUNT ; (11)
MOV A, ROW ; (12)
RL A ; (13)
RL A ; (14)
ADD A, COL ; (15)
ACALL DISPLAY ; (16)
NEXT_COL: MOV A, SCAN ; (17)
JNB ACC.4, BEGIN ; (18)
RR A ; (19)
MOV SCAN, A ; (20)
DEC COL ; (21)
SJMP SCAN_KEY ; (22)
DISPLAY: MOV DPTR, #LED7_TABLE ; (23)
MOVC A, @A+DPTR ; (24)
MOV DPTR, #4000H ; (25)
MOVX @DPTR, A ; (26)
SETB ACC.0 ; (27)
MOV DPTR, #6003H ; (28)
MOVX @DPTR, A ; (29)
RET ; (30)
LED7_TABLE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
END
- Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN.
- Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút
MODE sang vị trí INT, sau đó buông nút RESET.
Hướng dẫn thí nghiệm VXL & PLC Bài 3
Trang 32
- Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh
để mở và nạp file bai31.bin (ở desktop). Sau đó click nút lệnh download để nạp chương
trình trên tới RAM ngoài 6264 của 89C51.
- Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị
trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp
ở RAM ngoài của 89C51 sẽ được thực thi.
- [1]
Lần lượt nhấn các phím trên khối bàn phím, quan sát kết quả hiển thị trên LED 7 đoạn
và điền vào bảng sau:
Phím
nhấn
Hiển
thị
Phím
nhấn
Hiển
thị
Phím
nhấn
Hiển
thị
Phím
nhấn
Hiển
thị
0 4 8 C
1 5 9 D
2 6 A E
3 7 B F
- [2]
Giả sử chương trình đang quét cột 1 của khối bàn phím (SCAN = 11011111B, COL =
1) và có phím số 9 đang được nhấn thì giá trị nhị phân của A là bao nhiêu sau khi thực
hiện xong dòng lệnh (6). Từ đó cho biết nếu như không có phím nào được nhấn thì giá trị
của A là bao nhiêu?
- [3]
Đoạn chương trình từ (8) đến (16) chỉ được thực hiện khi có một phím đang được
nhấn. Cũng với giả sử là có phím số 9 đang được nhấn thì khi thực hiện xong dòng lệnh
(12) giá trị thập phân của A là bao nhiêu? Từ đó cho biết các dòng lệnh (9), (10) và (11)
dùng để làm gì?
- [4]
Cũng với giả sử trên, cho biết các giá trị thập phân của A sau khi thực hiện xong từng
dòng lệnh (13), (14) và (15). Từ đó cho biết ý nghĩa của 3 dòng lệnh này?
- [5]
Đoạn chương trình từ (17) đến (21) thực hiện các bước chuẩn bị cho lần quét cột kế
tiếp. Cho biết ý nghĩa của dòng lệnh (18).
2. Ứng dụng
- [1]
Viết chương trình Bai32_1.a51 nhận biết có phím nhấn. Khi có một phím bất kỳ đang
được nhấn thì hiển thị ký tự sau ra LED7_CK1:
- [2]
Viết chương trình Bai32_2.a51 nhận biết số chẵn, lẻ: nếu đang nhấn phím số lẻ thì
hiển thị ký tự ‘L’ và đang nhấn phím số chẵn thì hiển thị ký tự ‘C’ ra LED7_CK1.
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 33
Bài 4
GIAO TIẾP NGOẠI VI VỚI MA TRẬN LED
I. Kiến thức cơ bản
Sơ đồ nguyên lý mở rộng port cho 89C51 dùng PPI 8255 trên MPE-300 như sau (có thể
xem thêm chi tiết về PPI 8255 ở bài mở đầu):
A5
A3
D3
U2
74LS573
2
3
4
5
6
7
8
9
11
1
19
18
17
16
15
14
13
12
D0
D1
D2
D3
D4
D5
D6
D7
LE
OE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A1
0
A6
/Y4
D5
VCC
D4
VCC
D1
/RD
D6
A15
A13
A2
D5
A1
D7
D3
U1
89C51
30
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
16
40
20
17
ALE
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.6/WR
VCC
GND
P3.7/RD
PORT
B
1
2
3
4
5
6
7
8
PORT
A
1
2
3
4
5
6
7
8
A14
0
/WR
ADDRESS BUS
D4
0
D0
DATA BUS
D0
D1
D2
A0
PORT
C
1
2
3
4
5
6
7
8
A7
D6
/RD
/WR
U6
74LS138
1
2
3
15
14
13
12
11
10
9
7
6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
A4
/Y4
U11
8255
34
33
32
31
30
29
28
27 4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
26
7
5
36
9
8
6
D0
D1
D2
D3
D4
D5
D6
D7 PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
VCC
GND
RD
WR
A0
A1
CS
VCC
D2
D7
A0
0
Sơ đồ nguyên lý khối ma trận LED:
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 34
- Ma trận LED gồm các LED phát quang bố trí thành 5 cột và 7 hàng trong một vi mạch.
Các tín hiệu điều khiển hàng PA0 - PA6 (PORT A) nối vào anod của tất cả các LED cùng
hàng. Các tín hiệu điều khiển cột PB0 - PB4 (PORT B) nối vào cathode của tất cả các
LED cùng cột.
- Khi có một cặp tín hiệu điều khiển hàng và cột, ví dụ PA0 = 1 và PB0 = 1, các anod của
hàng LED thứ nhất (hàng 0) được cấp thế cao, đồng thời các cathode của cột LED thứ
nhất (cột 0) được cấp thế thấp. Tuy nhiên chỉ có LED1 là sáng vì có đồng thời thế cao
trên anod và thế thấp ở cathode. Như vậy, khi có 1 cặp tín hiệu điều khiển hàng và cột,
chỉ có LED tại điểm hàng và cột gặp nhau là sáng. Với cấu trúc này có thể xây dựng ma
trận LED với số LED lớn.
- Trong trường hợp cần hiển thị đồng thời nhiều LED trong ma trận, ví dụ chỉ thị chữ L
trên ma trận LED, thì phải thực hiện việc hiển thị động (quét LED theo cột): lần lượt cho
các cột Pbi = 1 (i = 0÷4), ứng với mỗi Pbi, thiết lập các LED hàng cần phát sáng. Tần số
cho một chu trình quét phải đủ cao nhằm đảm bảo cho mắt nhìn thấy sáng đều, không
nhấp nháy.
- Như vậy để chỉ thị chữ L, có thể điều khiển tuần tự và lặp lại theo 5 bước:
Bước 1 Bước 2 Bước 3 Bước 4 Bước 5
PB0 PB1 PB2 PB3 PB4
PA0 1
PA1 1
PA2 1
PA3 1
PA4 1
PA5 1
PA6 1 1 1 1 1
II. Thí nghiệm
1. Mở rộng port với PPI 8255
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai41a.a51 ở Desktop:
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 35
ORG 0000H
MOV A, #10001001B ; (1)
MOV DPTR, #8003H ; (2)
MOVX @DPTR, A ; (3)
LOOP: MOV A, #01111111B ; (4)
MOV DPTR, #8000H ; (5)
MOVX @DPTR, A ; (6)
MOV A, #00000100B ; (7)
MOV DPTR, #8001H ; (8)
MOVX @DPTR, A ; (9)
SJMP LOOP ; (10)
END
- Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN.
- Sử dụng chương trình “MPE-300 External RAM download” trên máy tính để mở và nạp
file bai41a.bin (ở desktop) tới RAM ngoài 6264 của 89C51. Sau khi nạp xong, trong khi
nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT,
sau đó buông nút RESET để thực thi chương trình trên.
- [1]
Quan sát kết quả hiển thị trên ma trận LED và đánh dấu X vào những vị trí LED sáng
tương ứng trên bảng ma trận LED sau:
Cột 0 Cột 1 Cột 2 Cột 3 Cột 4
Hàng 0
Hàng 1
Hàng 2
Hàng 3
Hàng 4
Hàng 5
Hàng 6
- [2]
Khi đang thực hiện dòng lệnh (3), dựa trên sơ đồ nguyên lý mở rộng port và cho biết
giá trị của các đường tín hiệu sau:
A15 = ...
A14 = ... 
A13 = ...
/WR = 0
/Y4 = …
A1 = …
A0 = …
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 36
- [3]
Từ đó cho biết dòng lệnh (3) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (3),
cho biết chế độ (xuất hoặc nhập) của các port 8255:
Port A: …
Port B: …
Port C: …
- [4]
Khi đang thực hiện dòng lệnh (6), dựa trên sơ đồ nguyên lý mở rộng port và cho biết
giá trị của các đường tín hiệu sau:
A15 = ...
A14 = ... 
A13 = ...
- [5]
Từ đó cho biết dòng lệnh (6) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (6),
cho biết giá trị nhị phân của port A:
PA7÷0 = ……….
- [6]
Khi đang thực hiện dòng lệnh (9), dựa trên sơ đồ nguyên lý mở rộng port và cho biết
giá trị của các đường tín hiệu sau:
A15 = ...
A14 = ... 
A13 = ...
- [7]
Từ đó cho biết dòng lệnh (9) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (9),
cho biết giá trị nhị phân của port B:
PB7÷0 = …
b. Ứng dụng
- [8]
Viết chương trình Bai41b.a51 tạo chuyển động sau trên ma trận LED với thời gian
delay cho mỗi chuyển động là 100ms (lưu ý thạch anh sử dụng có tần số 7.3728Mhz):
/WR = 0
/Y4 = …
A1 = …
A0 = …
/WR = 0
/Y4 = …
A1 = …
A0 = …
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 37
Hướng dẫn: Sử dụng lệnh RR A để tạo hiệu ứng chuyển động đi lên.
2. Giao tiếp ngoại vi với ma trận LED
a. Thí nghiệm
- Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai42a.a51 ở Desktop:
COL EQU R0
ROW EQU R1
ORG 0000H
MOV A, #80H ; (1)
MOV DPTR, #8003H ; (2)
MOVX @DPTR, A ; (3)
LOOP: MOV COL, #01H ; (4)
MOV ROW, #26H ; (5)
ACALL DISPLAY ; (6)
MOV COL, #02H ; (7)
MOV ROW, #49H ; (8)
ACALL DISPLAY ; (9)
MOV COL, #04H ; (10)
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 38
MOV ROW, #49H ; (11)
ACALL DISPLAY ; (12)
MOV COL, #08H ; (13)
MOV ROW, #49H ; (14)
ACALL DISPLAY ; (15)
MOV COL, #10H ; (16)
MOV ROW, #3EH ; (17)
ACALL DISPLAY ; (18)
SJMP LOOP ; (19)
DISPLAY: CLR A ; (20)
MOV DPTR, #8001H ; (21)
MOVX @DPTR, A ; (22)
MOV A, ROW ; (23)
MOV DPTR, #8000H ; (24)
MOVX @DPTR, A ; (25)
MOV A, COL ; (26)
MOV DPTR, #8001H ; (27)
MOVX @DPTR, A ; (28)
MOV R7, #250 ; (29)
DJNZ R7, $ ; (30)
RET ; (31)
END
- Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN.
- Sử dụng chương trình “MPE-300 External RAM download” trên máy tính để mở và nạp
file bai42a.bin (ở desktop) tới RAM ngoài 6264 của 89C51. Sau khi nạp xong, trong khi
nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT,
sau đó buông nút RESET để thực thi chương trình trên.
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 39
- [1]
Quan sát kết quả hiển thị trên ma trận LED và đánh dấu X vào những vị trí LED sáng
tương ứng trên bảng ma trận LED sau:
Cột 0 Cột 1 Cột 2 Cột 3 Cột 4
Hàng 0
Hàng 1
Hàng 2
Hàng 3
Hàng 4
Hàng 5
Hàng 6
- [2]
Các dòng lệnh nào dùng để thiết lập chế độ hoạt động cho 8255? Từ đó cho biết chế
độ (xuất hoặc nhập) của các port:
Port A: …
Port B: …
Port C: …
- [3]
Các dòng lệnh (20), (21) và (22) dùng để làm gì?
- [4]
Các dòng lệnh (23), (24) và (25) dùng để làm gì?
- [5]
Các dòng lệnh (26), (27) và (28) dùng để làm gì?
- [6]
Các dòng lệnh (29) và (30) dùng để delay thời gian hiển thị cho mỗi cột. MPE-300 sử
dụng thạch anh có tần số 7.3728MHz cho 89C51 thì thời gian delay này là bao lâu?
b. Ứng dụng
- [7]
Viết chương trình Bai42b_1.a51 tạo ký hiệu mũi tên như sau trên ma trận LED:
- [8]
Viết chương trình Bai42b_2.a51 tạo chuyển động sau trên ma trận LED với thời gian
delay cho mỗi chuyển động là 100ms (lưu ý thạch anh sử dụng có tần số 7.3728Mhz):
Hướng dẫn thí nghiệm VXL & PLC Bài 5
Trang 40
Hướng dẫn: Sử dụng ngắt timer kết hợp với lệnh RR A để tạo hiệu ứng chuyển động đi
lên.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 42
Bài 5
ĐIỀU KHIỂN QUÁ TRÌNH TUẦN TỰ
I.Thí nghiệm 1
- Mô hình điều khiển dùng trong thí nghiệm 1 như sau:
XE
HOME
CB1 CB2
CB3
XILÔ
Q0.2
- Tùy theo yêu cầu của từng thí nghiệm mà sinh viên sẽ kết nối các tín hiệu theo bảng sau:
Ký hiệu Địa chỉ I/O Ý nghĩa
PB1 I0.0 Nút nhấn START
PB2 I0.1 Nút nhấn STOP
PB3 I0.2 Cảm biến 1 (CB1) để phát hiện vị trí HOME
SW1 I0.3 Cảm biến 2 (CB2) để phát hiện vị trí dừng
PB5 I0.4 Cảm biến 3 (CB3)để đếm sản phẩm rơi xuống
LP0 Q0.0 Động cơ điều khiển xe chạy sang phải
LP1 Q0.1 Động cơ điều khiển xe chạy sang trái
LP2 Q0.2 Động cơ điều khiển mở xilô cho sản phẩm rơi xuống
1. Thí nghiệm 1.1
- Khi nhấn START, xe đang ở vị trí HOME sẽ di chuyển từ trái sang phải. Khi CB2 tác
động, xe dừng lại 5s rồi quay về vị trí HOME.
- Soạn chương trình sau và lưu trên Desktop với tên TN11.mwp.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 43
- Download chương trình xuống PLC và kiểm tra.
2. Thí nghiệm 1.2
- Giữ nguyên kết nối và chương trình như thí nghiệm 1.1 nhưng nối I0.3 với PB4.
- Kiểm tra chương trình có thực hiện giống thí nghiệm 1.1 không? Nếu không thì tại sao?
- Viết lại chương trình cho thực hiện giống thí nghiệm 1.1 và lưu với tên TN12.mwp trên
Desktop.
Chú ý: Việc nối I0.3 với PB4 chỉ thực hiện trong thí nghiệm 1.2, các thí nghiệm khác thì vẫn
nối I0.3 với SW1.
3. Thí nghiệm 1.3
- Dựa vào chương trình TN11.mwp viết tiếp chương trình như sau: Sau khi xe dừng 5s tại
vị trí CB2 xong, cho mở xilô (Q0.2) để sản phẩm rơi xuống. Khi rơi đủ 10 sản phẩm (do
CB3 phát hiện) thì đóng xilô và cho xe chạy về HOME.
- Lưu chương trình với tên TN13.mwp trên Desktop.
4. Thí nghiệm 1.4
- Dựa vào chương trình TN13.mwp viết tiếp chương trình như sau: Sau khi 10 sản phẩm
đã rơi xuống thì delay 8s mới cho xe chạy về HOME.
- Lưu chương trình với tên TN14.mwp trên Desktop.
Bảng ký hiệu các biến
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 44
5. Thí nghiệm 1.5
- Dựa vào chương trình TN14.mwp viết tiếp chương trình như sau: Khi xe về tới vị trí
HOME, cho delay 3s rồi lặp lại chu trình. Hệ thống làm việc liên tục cho đến khi nhấn
STOP.
- Lưu chương trình với tên TN15.mwp trên Desktop.
II. Thí nghiệm 2
- Mô hình điều khiển dùng trong thí nghiệm 2 như sau:
Băng tải sản phẩm
Băng tải thùng
CB2
CB1
- Thực hiện kết nối các tín hiệu theo bảng sau:
Ký hiệu Địa chỉ I/O Ý nghĩa
PB1 I0.0 Nút nhấn START
PB2 I0.1 Nút nhấn STOP
SW1 I0.2 Cảm biến 1 (CB1) để phát hiện vị trí thùng
PB4 I0.3 Cảm biến 2 (CB2) để phát hiện vị trí sản phẩm rơi xuống
LP0 Q0.0 Động cơ 1 (ĐC1) điều khiển chạy băng tải thùng
LP1 Q0.1 Động cơ 2 (ĐC2) điều khiển quay băng tải sản phẩm
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 45
1. Thí nghiệm 2.1
- Khi nhấn nút START thì dây chuyền hoạt động. Động cơ kéo băng tải thùng chạy (ĐC1)
đưa thùng rỗng đến đúng vị trí băng tải sản phẩm. Khi thùng đến đúng vị trí nó sẽ tác
động vào CB1. Khi đó động cơ kéo băng tải thùng dừng và động cơ kéo băng tải sản
phẩm (ĐC2) bắt đầu chạy làm sản phẩm rơi vào thùng. Mỗi khi có một sản phẩm rơi vào
thùng thì CB2 tác động. Khi đủ số táo quy định (5 sản phẩm) thì băng tải sản phẩm dừng
lại, băng tải thùng lại chạy để đưa thùng rỗng khác đến đúng vị trí. Khi nhấn nút STOP
thì dây chuyền dừng hoạt động.
- Dùng Step7 – Microwin soạn thảo chương trình để thực hiện quá trình trên và lưu trên
Desktop với tên TN21.mwp. Tiến hành download chương trình xuống PLC và kiểm tra.
2. Thí nghiệm 2.2
- Dựa vào chương trình TN21.mwp viết tiếp chương trình như sau: Sau khi nhấn nút
START 5s thì dây chuyền mới hoạt đông.
- Lưu chương trình với tên TN22.mwp trên Desktop. Tiến hành download chương trình
xuống PLC và kiểm tra.
3. Thí nghiệm 2.3
- Dựa vào chương trình TN22.mwp viết tiếp chương trình như sau: Sau khi đóng đủ 3
thùng thì hệ thống dừng.
- Lưu chương trình với tên TN23.mwp trên Desktop. Tiến hành download chương trình
xuống PLC và kiểm tra.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 46
Bài 6
PHÂN LOẠI VÀ ĐẾM SẢN PHẨM
Cho một dây chuyền công nghiệp vận chuyển các sản phẩm có chiều dài l. Các sản phẩm này
cần được phân loại và đếm theo tiêu chuẩn sau:
 Nếu l  d2 thì sản phẩm loại dài.
 Nếu d1  l < d2 thì sản phẩm loại vừa.
 Nếu l < d1 thì sản phẩm loại ngắn.
Giả sử rằng khoảng cách giữa hai sản phẩm liên tiếp lớn hơn d2. Các cảm biến CB1, CB2,
CB3 đặt dưới băng chuyền dùng để phân biệt chiều dài của sản phẩm.
l
X1 X2 X3
1
d
2
d
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 47
1. Thí nghiệm 1 – Phân loại sản phẩm vừa
- Mô hình dùng trong thí nghiệm 1 như sau:
- Thực hiện kết nối các tín hiệu theo bảng sau:
Ký hiệu Địa chỉ I/O Ý nghĩa
PB1 I0.0 Cảm biến X1
PB2 I0.1 Cảm biến X2
PB3 I0.2 Cảm biến X3
PB4 I0.3 Nút nhấn START
LP0 Q0.0 Điều khiển động cơ cho phép đưa sản phẩm vào (EN)
LP1 Q0.1 Điều khiển băng chuyền hoạt động (M)
LP2 Q0.2 Điều khiển cần gạt phân loại sản phẩm (R)
LP3 Q0.3 Tín hiệu báo sản phẩm đầy
 Mô tả quá trình
- Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1).
- Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi
động động cơ EN (Q0.0).
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 48
- Bắt đầu phân loại và đếm sản phẩm loại vừa:
+ Nếu là sản phẩm loại vừa d1  l < d2 thì để cần gạt R bình thường cho sản phẩm đi
qua (cho Q0.2 = 0).
+ Nếu không là sản phẩm loại vừa (có thể là loại dài hoặc ngắn) thì xuất tín hiệu xoay
cần gạt R cho sản phẩm đi sang hướng khác (cho Q0.2 = 1), tín hiệu này được giữ
cho đến khi có sản phẩm kế tiếp vào.
- Mỗi lần có một sản phẩm vừa qua thì dùng counter để đếm, khi đếm đủ 5 sản phẩm thì xuất
tín hiệu báo đầy (cho Q0.3 = 1) và tạm ngưng đưa sản phẩm vào băng chuyền (cho Q0.0 =
0).
 Hướng dẫn
Để phân biệt sản phẩm có thể thực hiện theo các bước sau:
- Tại thời điểm X3 vừa tác động, dùng tiếp điểm phát hiện cạnh lên P.
- Khi đó xét trạng thái của X1 và X2:
+ Nếu cả X1, X2 không tác động ta có sản phẩm loại ngắn l < d1.
+ Nếu cả X1, X2 cùng tác động ta có sản phẩm loại dài l  d2.
+ Nếu X1 không tác động và X2 tác động ta có sản phẩm loại vừa d1  l < d2.
 Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại
trên Desktop với tên TN1.mwp. Tiến hành download chương trình xuống PLC và kiểm
tra.
2. Thí nghiệm 2 – Phân loại và đếm sản phẩm theo yêu cầu
 Yêu cầu: Số sản phẩm cần đếm cho mỗi thùng là 10, trong đó có tối thiểu 6 sản phẩm
loại vừa, số phế phẩm (là sản phẩm loại ngắn hoặc loại dài) không được vượt quá 4 sản
phẩm.
 Thực hiện:
- Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1).
- Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi
động động cơ EN (Q0.0).
- Bắt đầu phân loại và đếm sản phẩm:
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 49
+ Nếu là sản phẩm loại vừa d1  l < d2 thì để cần gạt R bình thường cho sản phẩm đi
qua (cho Q0.2 = 0), tăng bộ đếm sản phẩm lên 1.
+ Nếu là phế phẩm thì tăng bộ đếm phế phẩm lên 1 và:
 Nếu trong giới hạn cho phép ( 4 phế phẩm) thì để cần gạt R bình thường cho
sản phẩm đi qua (cho Q0.2 = 0), tăng bộ đếm sản phẩm lên 1.
 Nếu vượt quá giới hạn cho phép thì xuất tín hiệu xoay cần gạt (cho Q0.2 = 1)
đồng thời tăng số phế phẩm lên 1.
- Khi đếm đủ 10 sản phẩm thì xuất tín hiệu báo đầy (cho Q0.3 = 1) và tạm ngưng đưa sản
phẩm vào băng chuyền (cho Q0.0 = 0).
 Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại
trên Desktop với tên TN2.mwp. Tiến hành download chương trình xuống PLC và kiểm
tra.
3. Thí nghiệm 3 – Phân loại sản phẩm vừa, ngắn, dài
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 50
- Thực hiện kết nối các tín hiệu theo bảng sau:
Ký hiệu Địa chỉ I/O Ý nghĩa
PB1 I0.0 Cảm biến X1
PB2 I0.1 Cảm biến X2
PB3 I0.2 Cảm biến X3
PB4 I0.3 Nút nhấn START
LP0 Q0.0 Điều khiển động cơ cho phép đưa sản phẩm vào (EN)
LP1 Q0.1 Điều khiển băng chuyền hoạt động (M)
LP2 Q0.2 Điều khiển cần gạt RL
LP3 Q0.3 Điều khiển cần gạt RS
LP4 Q0.4 Tín hiệu báo sản phẩm đầy
 Thực hiện:
- Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1).
- Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi
động động cơ EN (Q0.0).
- Bắt đầu phân loại:
+ Nếu là phế phẩm loại ngắn thì cho RS = 1, RL = 0.
+ Nếu là phế phẩm loại dài thì cho RS = 0, RL = 1.
+ Nếu là sản phẩm loại ngắn thì cho RS = 0, RL = 0.
- Đồng thời đếm tổng số phế phẩm loại ngắn và phế phẩm loại dài trong suốt thời gian làm
việc.
 Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại
trên Desktop với tên TN3.mwp. Tiến hành download chương trình xuống PLC và kiểm
tra.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 51
Bài 7
ĐIỀU KHIỂN ĐÈN GIAO THÔNG
Thực hiện kết nối tín hiệu từ ngõ ra PLC đến các đèn giao thông theo bảng sau:
Ký hiệu Ngõ ra PLC Ý nghĩa
FC-1R Q0.0 Đèn đỏ trạm 1
FC-1Y Q0.1 Đèn vàng trạm 1
FC-1G Q0.2 Đèn xanh trạm 1
FC-2R Q0.3 Đèn đỏ trạm 2
FC-2Y Q0.4 Đèn vàng trạm 2
FC-2G Q0.5 Đèn xanh trạm 2
FC-3R Q0.6 Đèn đỏ trạm 3
FC-3Y Q0.7 Đèn vàng trạm 3
FC-3G Q1.0 Đèn xanh trạm 3
FC-4R Q1.1 Đèn đỏ trạm 4
FC-4Y Q2.0 Đèn vàng trạm 4
FC-4G Q2.1 Đèn xanh trạm 4
W12R Q2.2 Đèn đỏ đi bộ 1 → 2
W12G Q2.3 Đèn xanh đi bộ 1 → 2
W23R Q2.4 Đèn đỏ đi bộ 2 → 3
W23G Q2.5 Đèn xanh đi bộ 2 → 3
W34R Q2.6 Đèn đỏ đi bộ 3 → 4
W34G Q2.7 Đèn xanh đi bộ 3 → 4
W14R Q3.0 Đèn đỏ đi bộ 1 → 4
W14G Q3.1 Đèn xanh đi bộ 1 → 4
1. Thí nghiệm 1
- Nguyên tắc điều khiển đèn giao thông cho xe ở Trạm 1 và Trạm 2 như sau:
Trạm 1 Xanh Vàng Đỏ Vàng Xanh
Trạm 2 Đỏ Xanh Vàng Đỏ
- Soạn chương trình sau và lưu với tên TN1.mwp và lưu ở Desktop.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 52
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 53
- Download chương trình xuống PLC và kiểm tra.
Hướng dẫn thí nghiệm Vi xử lý & PLC
Trang 54
- Hãy xác định thời gian Xanh, Vàng, Đỏ cho mỗi trạm và điền vào bảng sau:
Xanh Vàng Đỏ
Trạm 1
Trạm2
2. Thí nghiệm 2
- Dựa vào chương trình TN1.mwp viết lại chương trình điều khiển đèn xe với thời gian như
sau:
Xanh Vàng Đỏ
8s 2s 10s
- Lưu chương trình với tên TN2.mwp trên Desktop.
3. Thí nghiệm 3
- Dựa vào chương trình TN1.mwp viết lại chương trình điều khiển đèn xe với thời gian như
sau:
Trạm 1 Xanh 7s Vàng 2s Đỏ 11s Vàng 7s Xanh 2s
Trạm 2 Đỏ 9s Xanh 9s Vàng 2s Đỏ 9s
- Lưu chương trình với tên TN3.mwp trên Desktop.
4. Thí nghiệm 4
- Biết rằng đèn đi bộ trên 1 trạm (Trạm 1 hoặc Trạm 2) được điều khiển theo nguyên tắc sau:
Đèn xe Đỏ Xanh Vàng
Đèn bộ Xanh Đỏ
- Dựa trên chương trình TN1.mwp hãy viết tiếp chương trình điều khiển đèn đi bộ cho Trạm 1
và Trạm 2 và lưu lại với tên TN4.mwp trên Desktop.
5. Thí nghiệm 5
- Viết chương trình tạo xung trên ngõ Q0.1 với chu kỳ 2s sáng, 3s tắt. Lưu chương trình lại với
tên TN5.mwp trên Desktop.
Hướng dẫn thí nghiệm VXL & PLC Bài 8
Trang 55
Bài 8
ĐIỀU KHIỂN THANG MÁY
Thực hiện kết nối tín hiệu từ các ngõ vào ra PLC đến thang máy theo bảng sau:
OC1 Input OC2 Output
1 I0.0 1 Q0.4
2 I0.1 2 Q0.5
3 I0.2 3 Q0.6
4 I0.3 4 Q0.7
5 I0.4 5 Q1.0
6 I0.5 6 Q1.1
7 I0.6 7 Q0.0
8 I0.7 8 Q0.2
9 I1.0 9 Q2.0
10 I1.1 10 Q2.1
11 I1.2 11 Q2.2
12 I1.3 12 Q2.3
13 GND 13 GND
14 I1.4 14 Q3.3
15 I1.5 15
16 I2.0 16
17 I2.1 17
18 I2.2 18 Q0.1
19 I2.3 19
20 I3.0 20 Q0.3
21 I3.1 21
22 I3.2 22 Q3.0
23 I3.3 23 Q3.1
24 +24V 24 Q3.2
25 +24V 25 +24V
1. Thí nghiệm 1: Hiển thị vị trí hiện tại của cabin
 Yêu cầu: Mở chương trình mẫu điều khiển thang máy là Thangmay.mwp ở Desktop,
vào chương trình con STATE_2 viết chương trình hiển thị vị trí hiện tại của cabin.
Lưu lại với tên TN1.mwp trên Desktop, download xuống PLC và kiểm tra.
Hướng dẫn thí nghiệm VXL & PLC Bài 8
Trang 56
 Hướng dẫn:
Ở mỗi tầng có gắn 1 LED 7 đoạn để báo vị trí hiện tại của cabin, LED này được điều
khiển bởi 2 bit Q1.0 và Q1.1:
Q1.0 Q1.1 LED 7 đoạn
0 0 0
1 0 1
0 1 2
Ở mỗi tầng cũng gắn 2 công tắc hành trình để xác định vị trí của cabin, LED báo tầng
hoạt động khi cả 2 công tắc hành trình cùng tác động, bảng sau cho biết các công tắc hành
trình đã nối với ngõ vào nào của PLC:
Tầng Công tắc hành trình Ngõ vào PLC
Trệt
CB01 I0.0
CB02 I0.1
1
CB11 I2.0
CB12 I2.1
2
CB21 I0.3
CB22 I0.4
Đoạn chương trình sau hiển thị LED cho tầng trệt:
Trong đó, các ký hiệu CB01, CB02, LED7_1, LED7_2 được định nghĩa trong Symbol
Table như sau:
Như vậy, khi cả hai công tắc hành trình CB01 và CB02 cùng tác động thì cabin đã đến
tầng trệt, ta muốn hiển thị số 0 trên cửa cabin thì phải cho Q1.0 = 0 và Q1.1 = 0 bằng cách dùng
lệnh reset bit (R).
Sinh viên viết tiếp chương trình cho các tầng còn lại.
2. Thí nghiệm 2: Hiển thị các mũi tên báo hiệu trên cửa thang máy
 Yêu cầu: Mở chương trình TN1.mwp ở Desktop, vào chương trình con STATE_3
viết chương trình hiển thị các mũi tên báo hiệu trên cửa thang máy (viết vào
Hướng dẫn thí nghiệm VXL & PLC Bài 8
Trang 57
các Network 1, 2, 3,4). Lưu lại với tên TN2.mwp trên Desktop, download xuống
PLC và kiểm tra.
 Hướng dẫn:
Ở mỗi tầng có các nút nhấn để gọi thang máy và các mũi tên báo hiệu tương ứng:
Tầng trệt
I0.2 Nút gọi thang xuống tầng trệt
Q0.4 Mũi tên chỉ thị gọi thang xuống tầng trệt
Tầng 1
I2.2 Nút gọi thang xuống tầng 1
Q2.0 Mũi tên chỉ thị gọi thang xuống tầng 1
I2.3 Nút gọi thang lên tầng 1
Q2.1 Mũi tên chỉ thị gọi thang lên tầng 1
Tầng 2
I0.5 Nút gọi thang lên tầng 2
Q0.5 Mũi tên chỉ thị gọi thang lên tầng 2
Khi nhấn vào nút gọi thang thì mũi tên tương ứng sẽ sáng, và khi thang đến thì mũi tên sẽ
tắt. Ví dụ, khi muốn gọi thang đến tầng trệt thì phải tác động vào ngõ I0.2, đồng thời cho mũi tên
tương ứng sáng (cho Q0.4 = 1), khi thang đã đến tầng trệt thì tắt mũi tên này (cho Q0.4 = 0).
Ví dụ, ở tầng trệt:
Sinh viên viết tiếp chương trình cho các tầng còn lại.
3. Thí nghiệm 3: Hiển thị LED trong cabin báo hiệu tầng đích muốn đến
 Yêu cầu: Mở chương trình TN2.mwp ở Desktop, vào chương trình con STATE_3
viết chương trình hiển thị LED trong cabin báo hiệu tầng đích muốn đến (viết
vào các Network 5, 6, 7). Lưu lại với tên TN3.mwp trên Desktop, download
xuống PLC và kiểm tra.
 Hướng dẫn:
Khi vào trong cabin ta thấy trong đó có các nút nhấn cho người dùng chọn tầng đích
muốn đến, và khi nhấn vào các nút này sẽ sáng các đèn LED tương ứng.
Hướng dẫn thí nghiệm VXL & PLC Bài 8
Trang 58
Bảng địa chỉ:
I0.6 Điều khiển thang máy xuống tầng trệt
I3.0 Điều khiển thang máy đến tầng 1
I1.5 Điều khiển thang máy lên tầng 2
Q0.6 LED báo hiệu tầng đích là tầng trệt
Q2.2 LED báo hiệu tầng đích là tầng 1
Q3.2 LED báo hiệu tầng đích là tầng 2

More Related Content

Similar to Giáo trình Hướng dẫn thí nghiệm vi xử lý và PLC - Nguyễn Ngọc Tùng.doc

Hdcv sd may do ph
Hdcv sd may do phHdcv sd may do ph
Hdcv sd may do ph
Phan Cang
 
Thực hành truyền động điện.pdf
Thực hành truyền động điện.pdfThực hành truyền động điện.pdf
Thực hành truyền động điện.pdf
Man_Ebook
 
Thiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdfThiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdf
quandao25
 
Huong dan chuan bi bao cao
Huong dan chuan bi   bao caoHuong dan chuan bi   bao cao
Huong dan chuan bi bao cao
Lê Gia
 
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Man_Ebook
 
Đồ án thiết kế robot dò đường
Đồ án thiết kế robot dò đườngĐồ án thiết kế robot dò đường
Đồ án thiết kế robot dò đường
Kiều Tú
 
Dieu khien so
Dieu khien soDieu khien so
Dieu khien so
98a14567
 

Similar to Giáo trình Hướng dẫn thí nghiệm vi xử lý và PLC - Nguyễn Ngọc Tùng.doc (20)

ĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.doc
ĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.docĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.doc
ĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.doc
 
Hdcv sd may do ph
Hdcv sd may do phHdcv sd may do ph
Hdcv sd may do ph
 
Thực hành truyền động điện.pdf
Thực hành truyền động điện.pdfThực hành truyền động điện.pdf
Thực hành truyền động điện.pdf
 
Thiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdfThiết-kế-IC-74HC595.pdf
Thiết-kế-IC-74HC595.pdf
 
Bai bao hùng 2012
Bai bao hùng 2012Bai bao hùng 2012
Bai bao hùng 2012
 
Nghiên Cứu Hệ Thống Điều Khiển Thích Nghi.doc
Nghiên Cứu Hệ Thống Điều Khiển Thích Nghi.docNghiên Cứu Hệ Thống Điều Khiển Thích Nghi.doc
Nghiên Cứu Hệ Thống Điều Khiển Thích Nghi.doc
 
Huong dan chuan bi bao cao
Huong dan chuan bi   bao caoHuong dan chuan bi   bao cao
Huong dan chuan bi bao cao
 
Phương pháp runge kutta giải gần đúng hệ phương trình vi phân đại số
Phương pháp runge kutta giải gần đúng hệ phương trình vi phân đại sốPhương pháp runge kutta giải gần đúng hệ phương trình vi phân đại số
Phương pháp runge kutta giải gần đúng hệ phương trình vi phân đại số
 
Thiết kế điều khiển tốc độ động cơ 1 chiều bằng bộ điều khiển pid.doc
Thiết kế điều khiển tốc độ động cơ 1 chiều bằng bộ điều khiển pid.docThiết kế điều khiển tốc độ động cơ 1 chiều bằng bộ điều khiển pid.doc
Thiết kế điều khiển tốc độ động cơ 1 chiều bằng bộ điều khiển pid.doc
 
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
 
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
Nghiên cứu nâng cao chất lượng truyền động điện một chiều sử dụng trong hệ tù...
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
 
Đồ án thiết kế robot dò đường
Đồ án thiết kế robot dò đườngĐồ án thiết kế robot dò đường
Đồ án thiết kế robot dò đường
 
ĐỒ ÁN MÔN HỌC - LÝ THUYẾT ĐIỀU KHIỂN TỰ ĐỘNG.docx
ĐỒ ÁN MÔN HỌC - LÝ THUYẾT ĐIỀU KHIỂN TỰ ĐỘNG.docxĐỒ ÁN MÔN HỌC - LÝ THUYẾT ĐIỀU KHIỂN TỰ ĐỘNG.docx
ĐỒ ÁN MÔN HỌC - LÝ THUYẾT ĐIỀU KHIỂN TỰ ĐỘNG.docx
 
Luận án: Xây dựng thuật toán điều khiển dự báo theo mô hình, HAY
Luận án: Xây dựng thuật toán điều khiển dự báo theo mô hình, HAYLuận án: Xây dựng thuật toán điều khiển dự báo theo mô hình, HAY
Luận án: Xây dựng thuật toán điều khiển dự báo theo mô hình, HAY
 
Khóa luận điện công nghiệp.
Khóa luận điện công nghiệp.Khóa luận điện công nghiệp.
Khóa luận điện công nghiệp.
 
Dieu khien so
Dieu khien soDieu khien so
Dieu khien so
 
Bài giảng về máy điện
Bài giảng về máy điệnBài giảng về máy điện
Bài giảng về máy điện
 
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
VỀ MỘT PHƯƠNG PHÁP TỔNG HỢP HỆ ĐIỀU KHIỂN MỜ DÙNG MẠNG NƠRON ỨNG DỤNG TRONG C...
 
Đồ Án Điều Khiển Động Cơ Bước Dùng IC Số
Đồ Án Điều Khiển Động Cơ Bước Dùng IC Số Đồ Án Điều Khiển Động Cơ Bước Dùng IC Số
Đồ Án Điều Khiển Động Cơ Bước Dùng IC Số
 

More from Man_Ebook

More from Man_Ebook (20)

BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdfBÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
BÀI GIẢNG MÔN HỌC CƠ SỞ NGÔN NGỮ, Dùng cho hệ Cao đẳng chuyên nghiệp.pdf
 
TL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.docTL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
TL Báo cáo Thực tập tại Nissan Đà Nẵng.doc
 
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdfGiáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
Giáo trình thực vật học 2 - Trường ĐH Cần Thơ.pdf
 
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdfGiáo trình mô động vật - Trường ĐH Cần Thơ.pdf
Giáo trình mô động vật - Trường ĐH Cần Thơ.pdf
 
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ hệ thống A - Trường ĐH Cần Thơ.pdf
 
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdfGiáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
Giáo trình ngôn ngữ mô hình hóa UML - Trường ĐH Cần Thơ.pdf
 
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdfGiáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
Giáo trình nguyên lý máy học - Trường ĐH Cần Thơ.pdf
 
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdfGiáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
Giáo trình mô hình hóa quyết định - Trường ĐH Cần Thơ.pdf
 
Giáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdfGiáo trình Linux và phần mềm nguồn mở.pdf
Giáo trình Linux và phần mềm nguồn mở.pdf
 
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdfGiáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
Giáo trình logic học đại cương - Trường ĐH Cần Thơ.pdf
 
Giáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdfGiáo trình lý thuyết điều khiển tự động.pdf
Giáo trình lý thuyết điều khiển tự động.pdf
 
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdfGiáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
Giáo trình mạng máy tính - Trường ĐH Cần Thơ.pdf
 
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdfGiáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
Giáo trình lý thuyết xếp hàng và ứng dụng đánh giá hệ thống.pdf
 
Giáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdfGiáo trình lập trình cho thiết bị di động.pdf
Giáo trình lập trình cho thiết bị di động.pdf
 
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình web  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình web - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình .Net  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình .Net - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song  - Trường ĐH Cần Thơ.pdfGiáo trình lập trình song song  - Trường ĐH Cần Thơ.pdf
Giáo trình lập trình song song - Trường ĐH Cần Thơ.pdf
 
Giáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdfGiáo trình lập trình hướng đối tượng.pdf
Giáo trình lập trình hướng đối tượng.pdf
 
Giáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdfGiáo trình lập trình hướng đối tượng Java.pdf
Giáo trình lập trình hướng đối tượng Java.pdf
 
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdfGiáo trình kỹ thuật phản ứng  - Trường ĐH Cần Thơ.pdf
Giáo trình kỹ thuật phản ứng - Trường ĐH Cần Thơ.pdf
 

Recently uploaded

Everybody Up 1 - Unit 5 - worksheet grade 1
Everybody Up 1 - Unit 5 - worksheet grade 1Everybody Up 1 - Unit 5 - worksheet grade 1
Everybody Up 1 - Unit 5 - worksheet grade 1
mskellyworkmail
 
Logic học và phương pháp nghiên cứu khoa học
Logic học và phương pháp nghiên cứu khoa họcLogic học và phương pháp nghiên cứu khoa học
Logic học và phương pháp nghiên cứu khoa học
K61PHMTHQUNHCHI
 

Recently uploaded (20)

TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT HÓA HỌC 2024 - TỪ CÁC TRƯỜNG, TRƯ...
 
Everybody Up 1 - Unit 5 - worksheet grade 1
Everybody Up 1 - Unit 5 - worksheet grade 1Everybody Up 1 - Unit 5 - worksheet grade 1
Everybody Up 1 - Unit 5 - worksheet grade 1
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
35 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
35 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...35 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
35 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH NĂM ...
 
Logic học và phương pháp nghiên cứu khoa học
Logic học và phương pháp nghiên cứu khoa họcLogic học và phương pháp nghiên cứu khoa học
Logic học và phương pháp nghiên cứu khoa học
 
Báo cáo bài tập Quản trị Marketing Kế hoạch marketing cho ống hút cỏ của Gree...
Báo cáo bài tập Quản trị Marketing Kế hoạch marketing cho ống hút cỏ của Gree...Báo cáo bài tập Quản trị Marketing Kế hoạch marketing cho ống hút cỏ của Gree...
Báo cáo bài tập Quản trị Marketing Kế hoạch marketing cho ống hút cỏ của Gree...
 
4.NGÂN HÀNG KĨ THUẬT SỐ-slide CHƯƠNG 3.pptx
4.NGÂN HÀNG KĨ THUẬT SỐ-slide CHƯƠNG 3.pptx4.NGÂN HÀNG KĨ THUẬT SỐ-slide CHƯƠNG 3.pptx
4.NGÂN HÀNG KĨ THUẬT SỐ-slide CHƯƠNG 3.pptx
 
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 21-30)...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 21-30)...40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 21-30)...
40 ĐỀ LUYỆN THI ĐÁNH GIÁ NĂNG LỰC ĐẠI HỌC QUỐC GIA HÀ NỘI NĂM 2024 (ĐỀ 21-30)...
 
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
Mở rộng hoạt động cho vay tiêu dùng tại Ngân hàng TMCP Hàng Hải Việt Nam (Mar...
 
Quản lý dạy học phân hóa môn Toán tại các trường trung học cơ sở huyện Tam D...
Quản lý dạy học phân hóa môn Toán tại các trường trung học cơ sở huyện Tam D...Quản lý dạy học phân hóa môn Toán tại các trường trung học cơ sở huyện Tam D...
Quản lý dạy học phân hóa môn Toán tại các trường trung học cơ sở huyện Tam D...
 
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
TỔNG HỢP HƠN 100 ĐỀ THI THỬ TỐT NGHIỆP THPT TOÁN 2024 - TỪ CÁC TRƯỜNG, TRƯỜNG...
 
Báo cáo tốt nghiệp Hoàn thiện công tác đào tạo và phát triển nguồn nhân lực c...
Báo cáo tốt nghiệp Hoàn thiện công tác đào tạo và phát triển nguồn nhân lực c...Báo cáo tốt nghiệp Hoàn thiện công tác đào tạo và phát triển nguồn nhân lực c...
Báo cáo tốt nghiệp Hoàn thiện công tác đào tạo và phát triển nguồn nhân lực c...
 
Báo cáo thực tập tốt nghiệp Phân tích hiệu quả hoạt động huy động và cho vay ...
Báo cáo thực tập tốt nghiệp Phân tích hiệu quả hoạt động huy động và cho vay ...Báo cáo thực tập tốt nghiệp Phân tích hiệu quả hoạt động huy động và cho vay ...
Báo cáo thực tập tốt nghiệp Phân tích hiệu quả hoạt động huy động và cho vay ...
 
Thực trạng ứng dụng công nghệ trong lĩnh vực giống cây trồng: Nghiên cứu điển...
Thực trạng ứng dụng công nghệ trong lĩnh vực giống cây trồng: Nghiên cứu điển...Thực trạng ứng dụng công nghệ trong lĩnh vực giống cây trồng: Nghiên cứu điển...
Thực trạng ứng dụng công nghệ trong lĩnh vực giống cây trồng: Nghiên cứu điển...
 
Báo cáo thực tập tốt nghiệp Kế toán tiền mặt tại Công ty trách nhiệm hữu hạn ...
Báo cáo thực tập tốt nghiệp Kế toán tiền mặt tại Công ty trách nhiệm hữu hạn ...Báo cáo thực tập tốt nghiệp Kế toán tiền mặt tại Công ty trách nhiệm hữu hạn ...
Báo cáo thực tập tốt nghiệp Kế toán tiền mặt tại Công ty trách nhiệm hữu hạn ...
 
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh AnPhân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
Phân tích báo cáo tài chính tại công ty TNHH xây dựng và thương mại Thịnh An
 
Báo cáo tốt nghiệp Đánh giá công tác đào tạo và phát triển nguồn nhân lực tại...
Báo cáo tốt nghiệp Đánh giá công tác đào tạo và phát triển nguồn nhân lực tại...Báo cáo tốt nghiệp Đánh giá công tác đào tạo và phát triển nguồn nhân lực tại...
Báo cáo tốt nghiệp Đánh giá công tác đào tạo và phát triển nguồn nhân lực tại...
 
Hệ thống ca dao than thân người Việt từ góc nhìn thi pháp
Hệ thống ca dao than thân người Việt từ góc nhìn thi phápHệ thống ca dao than thân người Việt từ góc nhìn thi pháp
Hệ thống ca dao than thân người Việt từ góc nhìn thi pháp
 
Giải pháp nâng cao chất lượng sản phẩm ở Công ty TNHH Sơn Alex Việt Nam
Giải pháp nâng cao chất lượng sản phẩm ở Công ty TNHH Sơn Alex Việt NamGiải pháp nâng cao chất lượng sản phẩm ở Công ty TNHH Sơn Alex Việt Nam
Giải pháp nâng cao chất lượng sản phẩm ở Công ty TNHH Sơn Alex Việt Nam
 
PHONG TRÀO “XUNG KÍCH, TÌNH NGUYỆN VÌ CUỘC SỐNG CỘNG ĐỒNG” CỦA ĐOÀN TNCS HỒ...
PHONG TRÀO “XUNG KÍCH, TÌNH NGUYỆN VÌ CUỘC SỐNG   CỘNG ĐỒNG” CỦA ĐOÀN TNCS HỒ...PHONG TRÀO “XUNG KÍCH, TÌNH NGUYỆN VÌ CUỘC SỐNG   CỘNG ĐỒNG” CỦA ĐOÀN TNCS HỒ...
PHONG TRÀO “XUNG KÍCH, TÌNH NGUYỆN VÌ CUỘC SỐNG CỘNG ĐỒNG” CỦA ĐOÀN TNCS HỒ...
 

Giáo trình Hướng dẫn thí nghiệm vi xử lý và PLC - Nguyễn Ngọc Tùng.doc

  • 1. TRƯỜNG CAO ĐẲNG KINH TẾ - CÔNG NGHỆ TP. HCM KHOA ĐIỆN – ĐIỆN TỬ HƯỚNG DẪN THÍ NGHIỆM VI XỬ LÝ & PLC Biên soạn: Nguyễn Ngọc Tùng LƯU HÀNH NỘI BỘ
  • 2. MỤC LỤC Bài mở đầu – NỘI QUY – MỘT SỐ KIẾN THỨC CƠ BẢN ....................................................... 1 Bài 1 – MÔ PHỎNG HỌ VI XỬ LÝ 89C51 TRÊN MÁY TÍNH................................................ 13 Bài 2 – GIAO TIẾP NGOẠI VI VỚI LED 7 ĐOẠN .................................................................. 22 Bài 3 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN PHÍM ............................................................ 29 Bài 4 – GIAO TIẾP NGOẠI VI VỚI MA TRẬN LED............................................................... 33 Bài 5 – ĐIỀU KHIỂN QUÁ TRÌNH TUẦN TỰ......................................................................... 42 Bài 6 – PHÂN LOẠI VÀ ĐẾM SẢN PHẨM .............................................................................. 46 Bài 7 – ĐIỀU KHIỂN ĐÈN GIAO THÔNG............................................................................... 51 Bài 8 – ĐIỀU KHIỂN THANG MÁY.......................................................................................... 55
  • 3. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 1 Bài mở đầu NỘI QUY & MỘT SỐ KIẾN THỨC CƠ BẢN I. Nội quy phòng thí nghiệm 1. Giờ giấc - Sinh viên có mặt trước giờ thí nghiệm 5 phút, tập trung trước cửa PTN Điện tử. Giờ bắt đầu vào lớp:  Buổi sáng: 7h30’  Buổi chiều: 13h30’ - Đúng giờ thí nghiệm, được sự cho phép của giáo viên hướng dẫn, các sinh viên trật tự bước vào phòng thí nghiệm. Cứ sau mỗi 5 phút đi trễ, các sinh viên sẽ bị trừ 1 điểm tương ứng vào điểm bài thí nghiệm của ngày hôm đó. Sau 30 phút, các sinh viên đi trễ sẽ không được vào phòng thí nghiệm và xem như vắng mặt ngày hôm đó. - Trước giờ ra về 30 phút, các nhóm sinh viên hoàn tất (hoặc chưa hoàn tất bài thí nghiệm) phải dừng thí nghiệm và nộp báo cáo thí nghiệm cho giáo viên hướng dẫn. Riêng những nhóm sinh viên hoàn tất bài thí nghiệm sớm, sau khi nộp báo cáo, nếu có nguyện vọng có thể xin phép giáo viên hướng dẫn cho về sớm. Giờ ra về:  Buổi sáng: 11h00’  Buổi chiều: 17h00’ 2. Tổ chức lớp học và cách đánh giá sinh viên - Lớp học được chia thành tối đa 8 nhóm sinh viên, tùy sĩ số lớp mà số lượng SV mỗi nhóm sẽ dao động từ 3 đến 5 sinh viên. - Các bài thí nghiệm được chia làm 2 phần chính: phần thí nghiệm VXL gồm 4 bài được thực hiện song song bởi 4 nhóm trong mỗi buổi học; phần thí nghiệm PLC gồm 4 bài được thực hiện tuần tự bởi 4 nhóm còn lại trong mỗi buổi học. Các nhóm hoàn tất phần thí nghiệm PLC sẽ chuyển sang thực hiện phần thí nghiệm VXL và ngược lại. - Các sinh viên vắng mặt (không phép) coi như bị điểm 0 bài thí nghiệm ngày hôm đó. Các sinh viên chỉ được tối đa 1 buổi thí nghiệm vắng mặt có phép và sẽ học bù trong buổi thí nghiệm dự trữ. - Bài báo cáo thí nghiệm phải được hoàn thành ngay trong buổi thí nghiệm ngày hôm đó. Điểm bài TN sẽ được đánh giá trên bài báo cáo này và qua quá trình thí nghiệm của nhóm.
  • 4. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 2 - Điểm trung bình cuối cùng sẽ là trung bình cộng của 2 cột điểm: điểm thí nghiệm và điểm kiểm tra cuối kỳ:  Điểm thí nghiệm (chiếm 30%): là trung bình cộng của điểm 8 bài thí nghiệm, điểm mỗi bài thí nghiệm sẽ là điểm chung của nhóm.  Điểm kiểm tra cuối kỳ (chiếm 70%): sau khi hoàn tất xong các bài thí nghiệm, mỗi sinh viên đều phải trải qua một đợt kiểm tra cuối kỳ. Nội dung kiểm tra sẽ được chọn lựa ngẫu nhiên từ nội dung các bài thí nghiệm. Hình thức thi là vấn đáp. 3. Quy chế - Đối với phần thí nghiệm PLC, mỗi thao tác bật nguồn cung cấp cho kit TN phải được sự đồng ý của giáo viên hướng dẫn. Do đó, trước khi thực hiện các thao tác này, hãy đề nghị giáo viên hướng dẫn kiểm tra kit TN. Mỗi thao tác cần cẩn thận, có mục đích và sự hiểu biết, bất cứ một vấn đề nào không rõ ràng, HÃY hỏi giáo viên hướng dẫn. - Khi bước vào phòng TN, các sinh viên để cặp táp, giỏ xách trên giá để cặp sách, chỉ được đem vào phòng TN các dụng cụ học tập cho phép (phần 4). - Khác với giờ học lý thuyết, giờ TN sẽ không có thời gian giải lao giữa giờ. Các sinh viên muốn ra khỏi phòng TN trong giờ TN phải nộp giáo viên hướng dẫn thẻ sinh viên của mình. Mỗi lần ra khỏi phòng TN không được quá 5 phút. Nếu không có nhiệm vụ cụ thể, các sinh viên nên hạn chế ra khỏi chỗ ngồi thí nghiệm của nhóm mình. - Đầu giờ, khi nhận các thiết bị, linh kiện thí nghiệm của bài ngày hôm đó, nhóm có trách nhiệm kiểm tra số lượng, tình trạng các thiết bị, linh kiện đó. Trong quá trình thí nghiệm, nếu nhóm nào làm sai (hoặc cố tình làm sai) các hướng dẫn trong bài thí nghiệm dẫn đến hư hỏng linh kiện, dụng cụ, thiết bị của phòng thí nghiệm, cả nhóm của nhóm đó có nghĩa vụ bồi thường (bằng hiện vật) linh kiện, dụng cụ, thiết bị đã bị hư hỏng. Cuối giờ, nhóm phải hoàn trả lại phòng thí nghiệm các thiết bị, linh kiện thí nghiệm đã được cấp theo đúng chất lượng và đủ số lượng. - Tuyệt đối không được đem các linh kiện, dụng cụ, thiết bị của phòng thí nghiệm ra khỏi phòng mà không được sự cho phép của giáo viên hướng dẫn. - Tuyệt đối không hút thuốc lá và thực hiện các hành vi làm phát sinh ra lửa trong phòng thí nghiệm. - Không tụ tập nói chuyện hoặc ăn uống trong phòng thí nghiệm. 4. Dụng cụ học tập - Mỗi nhóm thí nghiệm phải tự trang bị cho nhóm các dụng cụ học tập sau:
  • 5. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 3  Giấy A4 báo cáo thí nghiệm.  Bút, viết, máy tính.  Quyển Hướng dẫn thí nghiệm Vi xử lý và PLC. 5. Lịch thí nghiệm Buổi Nhóm 1 2 3 4 5 6 7 8 9 10 11 12 Nhóm 1 Bài mở đầu B1 B2 B3 B4 B5 B6 B7 B8 Dự trữ Kiểm tra cuối kỳ Nhóm 2 B6 B7 B8 B5 Nhóm 3 B7 B8 B5 B6 Nhóm 4 B8 B5 B6 B7 Nhóm 5 B5 B6 B7 B8 B1 B2 B3 B4 Nhóm 6 B6 B7 B8 B5 Nhóm 7 B7 B8 B5 B6 Nhóm 8 B8 B5 B6 B7 II. Một số kiến thức cơ bản về nội dung thí nghiệm 1. Phần thí nghiệm Vi xử lý Trong phần này, sinh viên sẽ tiến hành thí nghiệm với họ vi xử lý 89C51. Kit chính thí nghiệm MPE-300 chứa các thành phần chính như sau: - Chip vi xử lý 89C51 hoạt động với tần số thạch anh 7.3728MHz, ROM trong của chip đã có sẵn chương trình quản lý kit và nạp RAM ngoài 6264. - IC chốt 74LS573 dùng để chốt 8 bit địa chỉ thấp xuất ở P0 của 89C51 ở bán kỳ máy đầu tiên khi thực hiện lệnh xuất/nhập với các địa chỉ ngoài. - Bộ nhớ ROM ngoài 2764 (8KB) lưu trữ mã lệnh một số chương trình con đã được lập trình sẵn. - Bộ nhớ RAM ngoài 6264 (8KB) lưu trữ mã lệnh chương trình thí nghiệm được lập trình và nạp bởi sinh viên. - Khối bàn phím chứa 16 phím (0÷F) được bố trí thành ma trận 4 hàng x 4 cột, kết nối trực tiếp với P1 của 89C51. - Khối chỉ thị gồm 4 LED 7 đoạn được hiển thị theo chế độ quét, do đó, tần số quét phải đủ nhanh để các LED hiển thị gần như liên tục, không bị gián đoạn. - Khối mở rộng port sử dụng PPI 8255 dùng để mở rộng các port xuất/nhập cho 89C51. a. Họ vi xử lý 8051/8951  Tập lệnh
  • 6. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 4 NHÓM LỆNH CHUYỂN DỮ LIỆU No CÚ PHÁP GIẢI THÍCH B/ MC No CÚ PHÁP GIẢI THÍCH B/ MC 1 MOV A, Rn (A)  (Rn) 1/1 15 MOV @Ri, #data ((Ri))  #data 2/1 2 MOV A, direct (A)  (direct) 2/1 16 MOV DPTR, #data16 (DPTR)  #data15-0 (DPH)  #data15-8 (DPL)  #data7-0 3/2 3 MOV A, @Ri (A)  ((Ri)) 1/1 17 MOVC A, @A+DPTR (A)  ((A) + (DPTR)) 1/2 4 MOV A, #data (A)  #data 2/1 18 MOVC A, @A+PC (A)  ((A) + (PC)) 1/2 5 MOV Rn, A (Rn)  (A) 1/1 19 MOVX A, @Ri (A)  ((Ri)) RAM ngoài 1/2 6 MOV Rn, direct (Rn)  (direct) 2/1 20 MOVX A, @DPTR (A)  ((DPTR)) RAM ngoài 1/2 7 MOV Rn, #data (Rn)  #data 2/1 21 MOVX @Ri, A ((Ri))  (A) RAM ngoài 1/2 8 MOV direct, A (direct)  (A) 2/1 22 MOVX @DPTR, A ((DPTR))  (A) RAM ngoài 1/2 9 MOV direct, Rn (direct)  (Rn) 2/2 23 PUSH direct (SP)  (SP) + 1 ((SP))  (direct) 2/2 10 MOV direct, direct (direct)  (direct) 3/2 24 POP direct (direct)  ((SP)) (SP)  (SP) – 1 2/1 11 MOV direct, @Ri (direct)  ((Ri)) 2/2 25 XCH A, Rn (A)  (Rn) 1/1 12 MOV direct, #data (direct)  #data 3/2 26 XCH A, direct (A)  (direct) 2/1 13 MOV @Ri, A ((Ri))  (A) 1/1 27 XCH A, @Ri (A)  ((Ri)) 1/1 14 MOV @Ri, direct ((Ri))  (direct) 2/2 28 XCHD A, @Ri (A3-0)  ((Ri3-0)) 1/1 NHÓM LỆNH TOÁN HỌC No CÚ PHÁP GIẢI THÍCH B/ MC No CÚ PHÁP GIẢI THÍCH B/ MC 1 ADD A, Rn (A)  (A) + (Rn) 1/1 13 INC A (A)  (A) + 1 1/1 2 ADD A, direct (A)  (A) + (direct) 2/1 14 INC Rn (Rn)  (Rn) + 1 1/1 3 ADD A, @Ri (A)  (A) + ((Ri)) 1/1 15 INC direct (direct)  (direct) + 1 2/1 4 ADD A, #data (A)  (A) + #data 2/1 16 INC @Ri ((Ri))  ((Ri)) + 1 1/1 5 ADDC A, Rn (A)  (A) + (C) + (Rn) 1/1 17 INC DPTR (DPTR)  (DPTD) + 1 1/2 6 ADDC A, direct (A)  (A) + (C) + (direct) 2/1 18 DEC A (A)  (A) – 1 1/1 7 ADDC A, @Ri (A)  (A) + (C) + ((Ri)) 1/1 19 DEC Rn (Rn)  (Rn) – 1 1/1 8 ADDC A, #data (A)  (A) + (C) + #data 2/1 20 DEC direct (direct)  (direct) – 1 2/1 9 SUBB A, Rn (A)  (A) – (C) – (Rn) 1/1 21 DEC @Ri ((Ri))  ((Ri)) – 1 1/1 10 SUBB A, direct (A)  (A) – (C) – (direct) 2/1 22 MUL AB (B15-8), (A7-0)  (A) x (B) 1/4 11 SUBB A, @Ri (A)  (A) – (C) – ((Ri)) 1/1 23 DIV AB (Bdư), (Anguyên)  (A) / (B) 1/4 12 SUBB A, #data (A)  (A) – (C) – #data 2/1 24 DA A Sửa (A) sang dạng đúng của số BCD (vd: nếu (A) = 5AH thì được sửa thành 60H) 1/1
  • 7. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 5 NHÓM LỆNH LOGIC No CÚ PHÁP GIẢI THÍCH B/ MC No CÚ PHÁP GIẢI THÍCH B/ MC 1 ANL A, Rn (A)  (A) AND (Rn) 1/1 14 XRL A, direct (A)  (A) XOR (direct) 2/1 2 ANL A, direct (A)  (A) AND (direct) 2/1 15 XRL A, @Ri (A)  (A) XOR ((Ri)) 1/1 3 ANL A, @Ri (A)  (A) AND ((Ri)) 1/1 16 XRL A, #data (A)  (A) XOR #data 2/1 4 ANL A, #data (A)  (A) AND #data 2/1 17 XRL direct, A (direct)  (direct) XOR (A) 2/1 5 ANL direct, A (direct)  (direct) AND (A) 2/1 18 XRL direct, #data (direct)  (direct) XOR #data 3/2 6 ANL direct, #data (direct)  (direct) AND #data 3/2 19 CLR A (A)  0 1/1 7 ORL A, Rn (A)  (A) OR (Rn) 1/1 20 CPL A (A)  (NOT A) 1/1 8 ORL A, direct (A)  (A) OR (direct) 2/1 21 RL A 1/1 9 ORL A, @Ri (A)  (A) OR ((Ri)) 1/1 22 RLC A 1/1 10 ORL A, #data (A)  (A) OR #data 2/1 23 RR A 1/1 11 ORL direct, A (direct)  (direct) OR (A) 2/1 24 RRC A 1/1 12 ORL direct, #data (direct)  (direct) OR #data 3/2 25 SWAP A (A3-0)  (A7-4) 1/1 13 XRL A, Rn (A)  (A) XOR (Rn) 1/1 NHÓM LỆNH RẼ NHÁNH No CÚ PHÁP GIẢI THÍCH B/ MC No CÚ PHÁP GIẢI THÍCH B/ MC 1 ACALL addr11 (PC)  (PC) + 2 (SP)  (SP) + 1 ((SP))  (PC7-0) (SP)  (SP) + 1 ((SP))  (PC15-8) (PC10-0)  add10-0 2/2 7 LCALL add16 (PC)  (PC) + 3 (SP)  (SP) + 1 ((SP))  (PC7-0) (SP)  (SP) + 1 ((SP))  (PC15-8) (PC)  add15-0 3/2 2 SJMP rel (PC)  (PC) + 2 (PC)  (PC) + rel 2/2 8 JMP @A+DPTR (PC)  (A) + (DPTR) 1/2 3 RET (PC15-8)  ((SP)) (SP)  (SP) – 1 (PC7-0)  ((SP)) (SP)  (SP) – 1 1/2 9 JZ rel (PC)  (PC) + 2 IF (A) = 0 THEN (PC)  (PC) + rel 2/2 4 RETI (PC15-8)  ((SP)) (SP)  (SP) – 1 (PC7-0)  ((SP)) (SP)  (SP) – 1 1/2 10 JNZ rel (PC)  (PC) + 2 IF (A) ≠ 0 THEN (PC)  (PC) + rel 2/2 5 AJMP add11 (PC)  (PC) + 2 (PC10-0)  add10-0 2/2 11 JC rel (PC)  (PC) + 2 IF (C) = 1 THEN (PC)  (PC) + rel 2/2 6 LJMP add16 (PC)  add15-0 3/2 12 JNC rel (PC)  (PC) + 2 IF (C) = 0 THEN (PC)  (PC) + rel 2/2 13 JB bit, rel (PC)  (PC) + 3 IF (bit) = 1 THEN 3/2 18 CJNE Rn, #data, rel (PC)  (PC) + 3 IF #data < (Rn) THEN 3/2
  • 8. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 6 (PC)  (PC) + rel (PC)  (PC) + rel (C)0 IF #data > (Rn) THEN (PC)  (PC) + rel (C)1 14 JNB bit, rel (PC)  (PC) + 3 IF (bit) = 0 THEN (PC)  (PC) + rel 3/2 19 CJNE @Ri, #data, rel (PC)  (PC) + 3 IF #data < ((Ri)) THEN (PC)  (PC) + rel (C)0 IF #data > ((Ri)) THEN (PC)  (PC) + rel (C)1 3/2 15 JBC bit, rel (PC)  (PC) + 3 IF (bit) = 1 THEN (bit) = 0 (PC)  (PC) + rel 3/2 20 DJNZ Rn, rel (PC)  (PC) + 2 (Rn)  (Rn) – 1 IF (Rn) ≠ 0 THEN (PC)  (PC) + rel 2/2 16 CJNE A, direct, rel (PC)  (PC) + 3 IF (direct) < (A) THEN (PC)  (PC) + rel (C)0 IF (direct) > (A) THEN (PC)  (PC) + rel (C)1 3/2 21 DJNZ direct, rel (PC)  (PC) + 3 (direct)  (direct) – 1 IF (direct) ≠ 0 THEN (PC)  (PC) + rel 3/2 17 CJNE A, #data, rel (PC)  (PC) + 3 IF #data < (A) THEN (PC)  (PC) + rel (C)0 IF #data > (A) THEN (PC)  (PC) + rel (C)1 3/2 22 NOP (PC)  (PC) + 1 1/1 NHÓM LỆNH LIÊN QUAN ĐẾN BIT No CÚ PHÁP GIẢI THÍCH B/ MC No CÚ PHÁP GIẢI THÍCH B/ MC 1 CLR C (C)  0 1/1 7 ANL C, bit (C)  (C) AND (bit) 2/2 2 CLR bit (bit)  0 2/1 8 ANL C, /bit (C)  (C) AND (NOT bit) 2/2 3 SETB C (C)  1 1/1 9 ORL C, bit (C)  (C) OR (bit) 2/2 4 SETB bit (bit)  1 2/1 10 ORL C, /bit (C)  (C) OR (NOT bit) 2/2 5 CPL C (C)  (NOT C) 1/1 11 MOV C, bit (C)  (bit) 2/1 6 CPL bit (bit)  (NOT bit) 2/1 12 MOV bit, C (bit)  (C) 2/2 Ghi chú: (X) : nội dung của X ((X)) : nội dung của ô nhớ có địa chỉ là nội dung của X (X là con trỏ) direct : địa chỉ trực tiếp; Rn : n = 0 ÷ 7; Ri : i = 1,2 rel: địa chỉ tương đối (trình biên dịch sẽ tính rel từ địa chỉ cần nhảy đến) B/MC : Bytes / Machine Cycles
  • 9. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 7  Các vùng nhớ dữ liệu Địa chỉ byte Địa chỉ bit (Hex) Địa chỉ byte Địa chỉ bit (Hex) Tên 7FH Vùng RAM đa dụng FFH F0H F7 F6 F5 F4 F3 F2 F1 F0 B E0H E7 E6 E5 E4 E3 E2 E1 E0 ACC D0H D7 D6 D5 D4 D3 D2 _ D0 PSW CY AC F0 RS1 RS0 OV P 30H B8H _ _ _ BC BB BA B9 B8 IP PS PT1 PX1 PT0 PX0 2FH 7F7E7D7C7B7A7978 2EH 77 76 75 74 73 72 7170 B0H B7 B6 B5 B4 B3 B2 B1 B0 P3 RD WR T1 T0 INT1 INT0 TXD RXD 2DH 6F6E6D6C6B6A6968 2CH 67 66 65 64 63 62 6160 A8H AF _ _ AC AB AA A9 A8 IE EA ES ET1 EX1 ET0 EX0 2BH5F5E5D5C5B5A5958 2AH 57 56 55 54 53 52 5150 A0H A7 A6 A5 A4 A3 A2 A1 A0 P2 29H 4F4E4D4C4B4A4948 28H 47 46 45 44 43 42 4140 99H không được địa chỉ hóa bit SBUF 27H 3F3E3D3C3B3A3938 98H 9F 9E 9D 9C 9B 9A 99 98 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 26H 37 36 35 34 33 32 3130 25H 2F2E2D2C2B2A2928 90H 97 96 95 94 93 92 91 90 P1 24H 27 26 25 24 23 22 2120 23H 1F1E1D1C1B1A1918 8DH không được địa chỉ hóa bit TH1 22H 17 16 15 14 13 12 1110 8CH không được địa chỉ hóa bit TH0 21H 0F0E0D0C0B0A0908 8BH không được địa chỉ hóa bit TL1 20H 07 06 05 04 03 02 0100 8AH không được địa chỉ hóa bit TL0 1FH Bank 3 89H không được địa chỉ hóa bit TMOD GATE C/T M1 M0 GATE C/T M1 M0 18H 88H 8F 8E 8D 8C 8B 8A 89 88 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 17H Bank 2 87H không được địa chỉ hóa bit PCON SMOD – – – GF1 GF0 PD IDL 10H 0FH Bank 1 83H không được địa chỉ hóa bit DPH DPTR 08H 82H không được địa chỉ hóa bit DPL 07H Bank thanh ghi 0 (Mặc định cho R0 - R7) 81H không được địa chỉ hóa bit SP 00H 80H 87 86 85 84 83 82 81 80 P0 RAM nội Các thanh ghi chức năng đặc biệt (SFR)
  • 10. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 8  Sơ đồ chân IC 0 VCC 10uF VCC = 5V 0 33pF 0 8.2K 8051 / 8951 29 30 40 20 31 19 18 9 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 PSEN ALE VCC GND EA X1 X2 RST P0.0 / AD0 P0.1 / AD1 P0.2 / AD2 P0.3 / AD3 P0.4 / AD4 P0.5 / AD5 P0.6 / AD6 P0.7 / AD7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 / A8 P2.1 / A9 P2.2 / A10 P2.3 / A11 P2.4 / A12 P2.5 / A13 P2.6 / A14 P2.7 / A15 P3.0 / RXD P3.1 / TXD P3.2 / INT0 P3.3 / INT1 P3.4 / T0 P3.5 / T1 P3.6 / WR P3.7 / RD 12MHz 100 33pF b. Mở rộng port xuất/nhập dùng PPI 8255 - Họ 8051 có 4 port giao tiếp ngoại vi là P0, P1, P2 và P3. Khi sử dụng bộ nhớ ngoài thì P0 đảm nhận vai trò là bus dữ liệu và bus địa chỉ thấp, P2 đảm nhận vai trò là bus địa chỉ cao. Một số chân của P3 có thể được dùng vào mục đích đặc biệt như TXD, RXD, WR, RD, ngắt, … Do đó chỉ còn lại P1 để giao tiếp với các thiết bị ngoại vi. Trong trường hợp cần thêm các ngõ vào/ra để giao tiếp ngoại vi thì phải mở rộng port. PPI 8255 là một IC chuyên dùng cho mục đích này.
  • 11. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 9 - PPI 8255 bao gồm 3 port có thể đóng vai trò như port xuất hoặc port nhập. Khi ở chế độ xuất, dữ liệu từ data bus được đưa tới và chốt ở port cần xuất. Khi ở chế độ nhập, dữ liệu từ port đang kích hoạt sẽ được đọc và đưa ngược lại vào data bus. Ngoài ra, 8255 còn có một thanh ghi điều khiển để xác lập chế độ hoạt động (xuất hoặc nhập) cho các port. Khi cần mở rộng port cho 8051/8951 thì data bus được nối với P0, các port A,B và C được nối với ngoại vi. Các ngõ vào điều khiển:  /CS: tín hiệu chọn chip (tích cực thấp)  /WR: tín hiệu cho phép xuất (nối vào chân /WR của 8051/8951)  /RD: tín hiệu cho phép nhập (nối vào chân /RD của 8051/8951)  RESET: reset 8255 (nối với chân RST của 8051/8951)  A1, A0: chọn port làm việc A1 A0 Chọn 0 0 Port A 0 1 Port B 1 0 Port C 1 1 Thanh ghi điều khiển - Trước khi sử dụng 8255 thì phải xác lập chế độ hoạt động cho nó thông qua việc xác lập giá trị của thanh ghi điều khiển. Thanh ghi điều khiển gồm 8 bit:
  • 12. Hướng dẫn thí nghiệm VXL & PLC Bài mở đầu Trang 10 D7 D6 D5 D4 D3 D2 D1 D0 1 Mode nhóm A: - 00: mode 0 - 01: mode 1 - 1X: mode 2 0: PA out 1: PA in 0: PCH out 1: PCH in Mode nhóm B: - 0: mode 0 - 1: mode 1 0: PB out 1: PB in 0: PCL out 1: PCL in Trong đó: Nhóm A gồm PA và PCH (PC4÷PC7) Nhóm B gồm PB và PCL (PC0÷PC3) Đối với mục đích mở rộng port xuất nhập thông thường thì mode 0 (mode xuất/nhập cơ bản) thường được sử dụng. 2. Phần thí nghiệm PLC (sẽ được trình bày trên lớp học)
  • 13.
  • 14.
  • 15. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 13 Bài 1 MÔ PHỎNG HỌ VI XỬ LÝ 8051 TRÊN MÁY VI TÍNH I. Kiến thức cơ bản 1. Phần mềm Simulator 2003 Thông thường, sau khi viết xong một chương trình bằng Assembler cho vi xử lý, trước khi nạp chương trình vào ROM/RAM để thực thi trên thực tế thì chương trình đó cần phải được kiểm tra, đánh giá tính đúng đắn, độ tin cậy thông qua hình thức mô phỏng trên máy vi tính. Một trong những phần mềm mô phỏng vi xử lý thông dụng phải kể đến Simulator 2003. Simulator 2003 là phần mềm chuyên dùng để mô phỏng cho các họ vi xử lý 8031/8032/87C51/87C52/89C51/89C52/8051/8052. Simulator 2003 có cách sử dụng rất dễ dàng và thân thiện. Một số đặc tính nổi bật của Simulator 2003 như sau: - Cho phép giám sát động và thiết lập động nội dung bất kỳ một vùng nhớ nào ở RAM trong, RAM ngoài và các thanh ghi chức năng đặc biệt dưới dạng số hex, nhị phân và thập phân. - Cho phép giả lập đầy đủ các ngắt. - Dễ dàng dò lỗi chương trình thông qua các chức năng như mô phỏng theo từng bước, theo từng khối, theo thời gian… - Tốc độ mô phỏng có thể điều chỉnh được. - Cho phép biên dịch ngược từ mã hex hoặc bin (mã máy) sang mã Assembler.
  • 16. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 14 Giao diện chương trình Simulator 2003 2. Phần mềm Crimson Editor Trước khi mô phỏng, chương trình vi xử lý phải được lập trình thông qua phần mềm Crimson Editor. Đây là phần mềm tạo các file văn bản hỗ trợ rất nhiều các ngôn ngữ lập trình khác nhau như Assembler, Pascal, C, C++, Visual Basic, MatLAB,… Khi viết chương trình Assembler với Crimson Editor, tập tin chương trình phải được lưu dưới dạng ‘*.a51’. Đây là một tập tin văn bản thuần túy, để có thể sử dụng chương trình này với Simulator 2003, tập tin này phải được biên dịch sang tập tin ngôn ngữ máy ‘*.bin’ thông qua chức năng biên dịch kèm theo của Crimson Editor.
  • 17. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 15 Giao diện chương trình Crimson Editor II. Thí nghiệm 1. Mô phỏng với các lệnh chuyển dữ liệu a. Sử dụng Crimson Editor - Vào File  New để tạo tập tin mới. - Vào File  Save As… để lưu tập tin mới dưới tên Bai11ab.a51 ở Desktop. - Nhập nội dung sau vào cửa sổ soạn thảo của Bai11ab.a51: ORG 0000H MOV 20H, P0 ; (1) MOV R1, #21H ; (2) DEC 01H ; (3) MOV A, @R1 ; (4) CPL A ; (5) ANL A, #0FH ; (6) MOV 21H, @R1 ; (7)
  • 18. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 16 ADD A, 21H ; (8) MOV B, #2 ; (9) DIV AB ; (10) MOV P1, A ; (11) SJMP $ ; (12) END - Vào Tools  Translate A51 to BIN để biên dịch chương trình trên sang dạng tập tin ngôn ngữ máy Bai11ab.bin (ở Desktop). Quan sát kết quả biên dịch ở cửa sổ Output (bên dưới cửa sổ soạn thảo), nếu nhìn thấy dòng “ASSEMBLY COMPLETE, NO ERRORS FOUND” chứng tỏ việc biên dịch đã thành công. b. Sử dụng Simulator 2003 - (Nếu đang tồn tại một tập tin đang mở thì vào File  Close File để đóng tập tin). - Vào File  Open File và chọn mở tập tin Bai11ab.bin ở Desktop. - Vào Micsellaneous  General Write, trong danh sách Type chọn SFR Registers, trong danh sách Name/Address chọn P0 (hoặc cũng có thể double click vào giá trị P0 trên cửa sổ SFRs window), nhập giá trị 99 vào ô Decimal để thiết lập giá trị 99 thập phân cho P0. - Vào Execution  Start/Stop Execution (hoặc nhấn nút lệnh lệnh Start Execution ) để bắt đầu mô phỏng chương trình. - [1] Vào Miscellaneous  General Read (hoặc double click vào giá trị P1 trên cửa số SFRs window), cho biết giá trị xuất ra ở P1 (dưới dạng thập phân) là bao nhiêu? - Vào Execution  Start/Stop Execution để dừng mô phỏng. Vào Execution  Reset Execution (hoặc nhấn nút lệnh ) để reset vi xử lý. - Thiết lập lại giá trị 99 thập phân cho P0. - Vào Debugging  Single Step (hoặc nhấn F2) để thực thi chương trình theo từng dòng lệnh một. Quan sát cửa sổ Execution Status để biết dòng lệnh kế tiếp sẽ được thực thi. - Trên cửa sổ Active Watch, click nút lệnh Add items để mở cửa sổ Add to Active Watch, chọn và click nút Add để bổ sung các vùng nhớ sau vào cửa sổ Active Watch: P0, P1, ACC, B (SFR Registers) - 20H, 21H, R1(Internal RAM) - [2] Điền giá trị (thập phân) các vùng nhớ sau khi từng dòng lệnh một được thực hiện xong vào bảng sau:
  • 19. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 17 Lệnh PC (Hex) P0 P1 20H 21H ACC B R1 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) - [3] Nếu không có dòng lệnh (12) thì kết quả chương trình trên có khác đi không? - [4] Dòng lệnh (9) gán giá trị 2 thập phân cho thanh ghi B. Cuối chương trình (dòng lệnh (12)), giá trị thanh ghi B có thay đổi không? Tại sao? c. Ứng dụng - [5] Sử dụng Crimson Editor soạn thảo chương trình Bai11c.a51 ở Desktop với nội dung sau: nhập liên tục giá trị từ P1, kiểm tra xem nếu giá trị này lớn hơn 127 thì chia đôi và xuất kết quả (phần nguyên) ra P2. Trong trường hợp ngược lại thì nhân đôi giá trị này và cũng xuất kết quả ra P2. - Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003. 2. Mô phỏng với Timer a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai12a.a51 ở Desktop: ORG 0000H MOV TMOD , #01H ; (1) MOV A, #10000000B ; (2) LOOP: RL A ; (3) MOV P1, A ; (4) MOV R1, P0 ; (5) ACALL DELAY ; (6) SJMP LOOP ; (7)
  • 20. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 18 DELAY: MOV TH0, #HIGH(-1000) ; (8) MOV TL0, #LOW(-1000) ; (9) SETB TR0 ; (10) JNB TF0, $ ; (11) CLR TR0 ; (12) CLR TF0 ; (13) DJNZ R1, DELAY ; (14) RET ; (15) END - Biên dịch chương trình trên sang mã máy. Mở file bai12a.bin với Simulator 2003. - Vào Options  Simulation Settings. Trong cửa sổ Simulator2003 Settings, chọn Tab Simulation. Thay đổi giá trị Batch Instructions Count thành 100, trong danh sách Refresh Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị. - Chạy mô phỏng chương trình. - [1] Thay đổi giá trị đặt cho P0 (chẳng hạn như 10, 50, 100, 200) và quan sát kết quả ở P1, từ đó giải thích ngắn gọn mục đích của chương trình trên. - [2] Giải thích dòng lệnh (1). - [3] Với thạch anh 12Mhz, dòng lệnh (11) sẽ được thực thi trong khoảng thời gian bao nhiêu? Từ đó, một cách gần chính xác, suy ra dòng lệnh (6) sẽ được thực thi trong bao nhiêu lâu nếu P0 nhận giá trị là 20. - Dừng mô phỏng và reset chương trình. Thiết lập giá trị 20 cho P0. - Vào Disassembly  Disassemble Code. Trong cửa sổ Disassembly Window, click vào cột Brk (cột đầu tiên) 2 hàng lệnh ACALL 0000EH (lệnh (6)) và SJMP 00005H (lệnh (7)) để thiết lập vị trí Break Point cho 2 hàng lệnh này. Khi mô phỏng với lệnh Start Execution , chương trình mô phỏng sẽ tạm dừng ở đầu dòng lệnh (6) cho đến khi nhận được lệnh Start Execution một lần nữa. Sau khi thực hiện xong lệnh (6), chương trình tiếp tục tạm dừng ở đầu dòng lệnh (7). - [4] Quan sát cửa sổ Execution Status để biết được thời điểm tạm dừng ở 2 đầu dòng lệnh này, từ đó cho biết chính xác dòng lệnh (6) đã được thực thi trong khoảng thời gian bao nhiêu lâu.
  • 21. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 19 - [5] Giá trị thực tế này và giá trị ước lượng ở [2] có khác nhau không? Độ chênh lệch đó là bao nhiêu và tại sao lại có sự chênh lệch đó. b. Ứng dụng - [6] Viết chương trình Bai12b.a51 ở Desktop thực hiện nhiệm vụ sau: liên tục kiểm tra chân P1.7, nếu P1.7 = 1 thì xuất ra ở P1.0 xung vuông có tần số 2Hz; nếu P1.7 = 0 thì thiết lập mức 0 cho P1.0 - Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003. 3. Mô phỏng với ngắt a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai13a.a51 ở Desktop: ORG 0000H LJMP MAIN ; (1) ORG 0003H LJMP ISR_EX0 ; (2) ORG 000BH LJMP ISR_T0 ; (3) ORG 0030H MAIN: MOV TMOD, #01H ; (4) MOV IE, #81H ; (5) SETB IT0 ; (6) MOV A, #01H ; (7) MOV P1, #0 ; (8) SJMP $ ; (9) ISR_EX0: CPL C ; (10) CPL ET0 ; (11) JNC EXIT_EX0 ; (12) MOV R7, #5 ; (13)
  • 22. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 20 SETB TF0 ; (14) EXIT_EX0:RETI ; (15) ISR_T0: CLR TR0 ; (16) MOV TH0, #HIGH(-50000) ; (17) MOV TL0, #LOW(-50000) ; (18) SETB TR0 ; (19) DJNZ R7, EXIT_T0 ; (20) MOV R7, #5 ; (21) MOV P1, A ; (22) RL A ; (23) EXIT_T0: RETI ; (24) END - Biên dịch chương trình trên sang mã máy. Mở file bai13a.bin với Simulator 2003. - Vào Options  Simulation Settings. Trong cửa sổ Simulator2003 Settings, chọn Tab Simulation. Thay đổi giá trị Batch Instructions Count thành 1000, trong danh sách Refresh Type chọn Refresh after each tick để tăng tốc độ mô phỏng và hiển thị. - Chạy mô phỏng chương trình. - [1] Click nút lệnh External interrupt 0 để giả lập ngắt ngoài 0 cạnh xuống cho vi xử lý. Quan sát kết quả ở P1. Một lần nữa click nút lệnh External interrupt 0 và quan sát P1. Từ đó giải thích ngắn gọn mục đích của chương trình. - [2] Giải thích dòng lệnh (5) và (6) của chương trình. - [3] Giải thích mục đích của dòng lệnh (11). Từ đó cho biết chương trình con ISR_T0 được thực thi trong trường hợp nào. - [4] Nếu bỏ đi dòng lệnh (14) thì chương trình có còn chạy đúng không? Tại sao? Dòng lệnh (14) có thể được thay bằng một dòng lệnh nào để kết quả mô phỏng gần như không đổi? b. Ứng dụng
  • 23. Hướng dẫn Thí nghiệm Vi xử lý & PLC Bài 1 Trang 21 - [5] Viết chương trình Bai13b.a51 dùng ngắt ngoài 1 và ngắt timer 1 thực hiện nhiệm vụ của một mạch delay_on như sau: nếu có cạnh xuống ở P3.3 thì delay 10ms và đặt giá trị P1.0 lên 1; nếu gặp cạnh xuống ở P3.3 một lần nữa thì ngay lập tức đưa P1.0 về 0. - Biên dịch chương trình trên sang mã máy và mô phỏng với Simulator 2003.
  • 24. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 22 Bài 2 GIAO TIẾP NGOẠI VI VỚI LED 7 ĐOẠN I. Kiến thức cơ bản Sơ đồ nguyên lý mạch giao tiếp giữa 89C51 với LED 7 đoạn trên kit thí nghiệm MPE- 300: DATA BUS 0 A D7 /Y2 D3 U10 74LS259 13 1 2 3 14 4 5 6 7 9 10 11 12 D S0 S1 S2 G Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 0 D2 a b c d e f g OP LED7_CK2 7 1 2 6 4 10 9 3 5 8 A E D B C G F CK OP CK A2 Q3 D6 WR2 U6 74LS138 1 2 3 15 14 13 12 11 10 9 7 6 4 5 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B 0 A14 B a b c d e f g OP LED7_CK3 7 1 2 6 4 10 9 3 5 8 A E D B C G F CK OP CK D G Q2 A2 DATA BUS BJT 0 a b c d e f g OP LED7_CK1 7 1 2 6 4 10 9 3 5 8 A E D B C G F CK OP CK WR3 D2 Q0 D1 D6 BJT 0 A1 A6 A5 OP 0 D0 /WR D0 /WR E D5 Q1 U9 74LS374 3 4 7 8 13 14 17 18 1 11 2 5 6 9 12 15 16 19 D0 D1 D2 D3 D4 D5 D6 D7 OE CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 A4 VCC 0 A13 D4 BJT D5 A15 a b c d e f g OP LED7_CK4 7 1 2 6 4 10 9 3 5 8 A E D B C G F CK OP CK U8 74LS32 3 1 2 A0 Q2 D1 VCC /Y3 D0 A0 U2 74LS573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 U1 89C51 30 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 16 40 20 ALE P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.6/WR VCC GND WR3 F D4 BJT A3 A1 A7 /WR ADDRESS BUS D3 WR2 6 5 4 Q0 Q1 C 0 Q3 D7 Trong đó: - 74LS573 (U2): IC chốt địa chỉ. Do Port 0 hoạt động ở chế độ địa chỉ / dữ liệu (nửa chu kỳ đầu là 8 bit địa chỉ thấp và nửa chu kỳ sau là dữ liệu) nên U2 được dùng để chốt và giữ lại byte địa chỉ thấp này trên address bus. - 74LS138 (U6): IC giải mã địa chỉ. Chẳng hạn, để /Y2 = 0 thì CBA = 010, để /Y3 = 0 thì CBA = 011,…
  • 25. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 23 - 74LS259 (U10): IC giải mã địa chỉ và chốt. Khi tín hiệu kích hoạt /G = 0, Q0 = D khi S2S1S0 = 000, Q1 = D khi S2S1S0 = 001, …, Q7 = D khi S2S1S0 = 111 (các ngõ ra còn lại giữ nguyên trạng thái trước đó). - 74LS374 (U9): chốt dữ liệu theo cạnh lên của CLK. Với tín hiệu cho phép /OE = 0, khi có cạnh lên ở CLK thì Qi = Di (i = 0÷7). Sau đó, các ngõ ra Qi sẽ được chốt lại bất chấp sự thay đổi của các ngõ vào Di. - Các LED 7 đoạn: thuộc loại cathode chung. Để một đoạn LED phát sáng thì phải thỏa mãn 2 điều kiện: chân CK ở mức thấp và chân điều khiển đoạn LED tương ứng phải ở mức cao. Với sơ đồ nguyên lý trên, có thể nhận thấy rằng tại mỗi thời điểm chỉ có thể hiển thị duy nhất 1 LED 7 đoạn. Do đó, để hiển thị một LED 7 đoạn, chẳng hạn như LED7_CK3, phát sáng thì phải thực hiện tuần tự 3 bước sau: - Nếu có một LED 7 đoạn nào đang được phát sáng trước đó, chẳng hạn như LED7_CK2, thì tắt đi bằng cách đưa Q1 về 0 để chân CK của LED7_CK2 cách ly với mức điện áp thấp. - Chốt tín hiệu thích hợp ở ngõ ra của U9 (74LS374), tín hiệu này là các mã LED 7 đoạn ứng với một con số, một chữ cái... cần hiển thị. Lúc này cả 4 LED 7 đoạn đều nhận được tín hiệu này tuy nhiên chưa LED nào được phát sáng do chân CK của chúng được cách ly với mức điện áp thấp. - Để LED7_CK3 phát sáng thì thiết lập Q2 = 1. Căn cứ vào sơ đồ nguyên lý trên, các sinh viên có thể xác định được các vùng địa chỉ phù hợp để thực thi các bước trên. Lưu ý là do mỗi lần chỉ có thể hiển thị được 1 LED 7 đoạn nên để có thể hiển thị gần như đồng thời 4 LED 7 đoạn này, cần thực hiện việc hiển thị theo cách “quét”: lần lượt hiển thị từng LED một với tần số cao để mắt người vẫn có cảm giác là việc hiển thị được thực hiện đồng thời:
  • 26. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 24 II. Thí nghiệm 1. Giao tiếp với 1 LED 7 đoạn a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai21a.a51 ở Desktop: ORG 0000H LOOP: MOV A, #3FH ; (1) MOV DPTR, #4000H ; (2) MOVX @DPTR, A ; (3) MOV A, #01H ; (4) MOV DPTR, #6001H ; (5) MOVX @DPTR, A ; (6) SJMP LOOP ; (7) END - Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN. - Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút MODE sang vị trí INT, sau đó buông nút RESET. Chương trình ở ROM trong của 89C51 sẽ được thực thi để chuẩn bị nạp RAM ngoài 6264. - Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh để mở và nạp file bai21a.bin (ở desktop). Sau đó click nút lệnh download để nạp chương trình trên tới RAM ngoài 6264 của 89C51 (chương trình sẽ được chuyển tới 89C51 và 89C51 sẽ điều khiển để nạp cho RAM ngoài). - Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp ở RAM ngoài của 89C51 sẽ được thực thi. - [1] Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau: LED7_CK1 LED7_CK2 LED7_CK3 LED7_CK4 Nội dung hiển thị - [2] Dòng lệnh nào trên chương trình quyết định nội dung hiển thị trên? - [3] Khi vừa thực hiện xong dòng lệnh (3), dựa trên sơ đồ nguyên lý và cho biết giá trị của các đường tín hiệu sau:
  • 27. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 25 A15 = ... A14 = ...   WR2 = … → ...  Q7→0 (U9) = … A13 = ... - [4] Khi đang thực hiện dòng lệnh (6), dựa trên sơ đồ nguyên lý và cho biết giá trị của các đường tín hiệu sau: A15 = ... A14 = ...    Q3→0 (U10) = … A13 = ... - [5] Nếu thay dòng lệnh (2) bằng dòng lệnh MOV DPTR, #4002H thì kết quả chương trình trên có thay đổi không? Tại sao? - [6] Nếu thay dòng lệnh (4) bằng dòng lệnh MOV A, #00H thì LED 7 đoạn có sáng không? Tại sao? Từ đó cho biết có thể thay dòng lệnh này bằng dòng lệnh SETB ACC.0 được không? b. Ứng dụng - [7] Viết chương trình Bai21b_1.a51 xuất ra LED7_CK4 ký tự h và dấu “.” như sau: - [8] Viết chương trình Bai21b_2.a51 tuần hoàn xuất ra LED7_CK1 các ký tự hex như sau: 0  9  F với khoảng thời gian hiển thị mỗi ký tự là 0.5s (lưu ý thạch anh sử dụng cho 89C51 có tần số 7.3728Mhz) Hướng dẫn: Chương trình sau xuất 1 ký tự tùy chọn trong khoảng từ 05 ra LED7_CK2. Sinh viên dựa vào chương trình này, xem lại lệnh MOVC và lệnh giả DB để thực hiện câu [8] /Y2 = … /WR = 0 → 1 /Y3 = … /WR = 0 WR3 = … D0 = … A2 = … A1 = … A0 = …
  • 28. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 26 KY_TU EQU 3 ; Chọn ký tự từ 05 để xuất (ở đây xuất 3) ORG 0000H LOOP:MOV DPTR, #LED7_CODE MOV A, #KY_TU MOVC A, @A+DPTR ; Đổi ký tự sang mã LED 7 đoạn MOV DPTR, #4000H MOVX @DPTR, A ; Xuất mã ký tự đến ngõ ra U9 MOV A, #01H MOV DPTR, #6001H MOVX @DPTR, A ; Xuất tín hiệu chọn LED 7 đoạn ra U10 SJMP LOOP LED7_CODE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH ; Mã các ký tự từ 05 END 2. Giao tiếp với cả 4 LED 7 đoạn a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai22a.a51 ở Desktop: ORG 0000H MOV DPL, #03H ; (1) LOOP: MOV 120, #7DH ; (2) ACALL DISPLAY ; (3) MOV 120, #07H ; (4) ACALL DISPLAY ; (5) MOV 120, #7FH ; (6) ACALL DISPLAY ; (7) MOV 120, #6FH ; (8) ACALL DISPLAY ; (9) SJMP LOOP ; (10)
  • 29. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 27 DISPLAY: CLR ACC.0 ; (11) MOV DPH, #60H ; (12) MOVX @DPTR, A ; (13) MOV A, 120 ; (14) MOV DPH, #40H ; (15) MOVX @DPTR, A ; (16) SETB ACC.0 ; (17) MOV DPH, #60H ; (18) INC DPL ; (19) ANL DPL, #03H ; (20) MOVX @DPTR, A ; (21) MOV R7, #250 ; (22) DJNZ R7, $ ; (23) RET ; (24) END - Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN. - Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút MODE sang vị trí INT, sau đó buông nút RESET. - Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh để mở và nạp file bai22a.bin (ở desktop). Sau đó click nút lệnh download để nạp chương trình trên tới RAM ngoài 6264 của 89C51. - Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp ở RAM ngoài của 89C51 sẽ được thực thi. - [1] Điền nội dung hiển thị trên các LED 7 đoạn vào bảng sau:
  • 30. Hướng dẫn thí nghiệm VXL & PLC Bài 2 Trang 28 LED7_CK1 LED7_CK2 LED7_CK3 LED7_CK4 Nội dung hiển thị - [2] Các dòng lệnh nào trên chương trình quyết định các nội dung hiển thị trên? - [3] Các dòng lệnh (11), (12) và (13) dùng để làm gì? - [4] Các dòng lệnh (14), (15) và (16) dùng để làm gì? - [5] Các dòng lệnh từ (17) đến (21) dùng để làm gì? Tại sao phải có dòng lệnh (20)? Nếu bỏ đi dòng lệnh này chương trình có còn chạy đúng không? - [6] Dòng lệnh (22) và (23) dùng để delay thời gian hiển thị cho 1 LED 7 đoạn. MPE-300 sử dụng thạch anh có tần số 7.3728MHz cho 89C51 thì thời gian delay này là bao lâu? b. Ứng dụng - [7] Viết chương trình Bai22b.a51 xuất ra các LED 7 đoạn dòng chữ “HELP.” nhấp nháy với chu kỳ 1s (0.5s bật và 0.5s tắt) như sau (lưu ý thạch anh sử dụng có tần số 7.3728Mhz): Hướng dẫn: Có thể sử dụng ngắt timer để tạo hiệu ứng nhấp nháy.
  • 31. Hướng dẫn thí nghiệm VXL & PLC Bài 3 Trang 29 Bài 3 GIAO TIẾP NGOẠI VI VỚI MA TRẬN PHÍM I. Kiến thức cơ bản Sơ đồ nguyên lý khối bàn phím trên MPE-300: P1.3 (Coä t 2) 9 P1.1 1 P1.2 D (Haø ng 1) P1.4 6 C (Haø ng 3) 4 (Coä t 1) 2 (Haø ng 0) E (Haø ng 2) 8 P1.5 3 89C51 U1 40 20 1 2 3 4 5 6 7 8 VCC GND P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 (Coä t 0) 0 P1.6 7 B P1.7 A 0 5 (Coä t 3) VCC F P1.0 - Khối bàn phím là một ma trận phím gồm 4 hàng và 4 cột, mỗi hàng (cũng như mỗi cột) được kết nối trực tiếp với 1 chân của P1. Khi một phím, chẳng hạn như phím số 5, được nhấn thì sẽ tạo ra sự kết nối về điện giữa chân P1.5 và P1.1. Do đó, 89C51 có thể giao tiếp với khối bàn phím trên theo nguyên lý quét phím: lần lượt xuất các mức logic 0 ra mỗi cột và kiểm tra hàng, hàng nào nhận được mức logic 0 chứng tỏ phím ứng với hàng và cột đó đã được nhấn.
  • 32. Hướng dẫn thí nghiệm VXL & PLC Bài 3 Trang 30 - Để không bỏ sót một phím nhấn, quá trình quét phím theo cột phải được thực hiện liên tục với tần số cao. Về mặt nguyên tắc có thể xảy ra trường hợp: khi chương trình đang quét phím ở một cột thì một phím ở cột khác được nhấn và tất nhiên chương trình không nhận ra sự nhấn phím này. Tuy nhiên, trên thực tế thì thời gian một phím được nhấn dài hơn rất nhiều thời gian quét phím và xử lý của 89C51 nên khả năng bỏ sót phím là điều không thể. - Trong chương trình, khi một phím được nhấn cần phải nhận biết được mã phím (là giá trị của phím nhấn, chẳng hạn phím 0 có mã phím là 0, phím 1 có mã phím là 1,…). Mã phím và vị trí của phím trong ma trận phím có quan hệ với nhau theo công thức: Mã phím = (STT hàng) × 4 + (STT cột) Vd: Phím 3: Mã phím = 0x4 + 3 = 3 Phím C: Mã phím = 3x4 + 0 = 12 II. Thí nghiệm 1. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai31.a51 ở desktop: SCAN EQU R7 COL EQU R6 ROW EQU R5 ORG 0000H BEGIN: MOV SCAN, #01111111B ; (1) MOV COL, #3 ; (2) SCAN_KEY: MOV P1, SCAN ; (3) MOV A, P1 ; (4) CPL A ; (5) ANL A, #0FH ; (6) JZ NEXT_COL ; (7) MOV ROW, #-1 ; (8) ROW_COUNT: RRC A ; (9) INC ROW ; (10)
  • 33. Hướng dẫn thí nghiệm VXL & PLC Bài 3 Trang 31 JNC ROW_COUNT ; (11) MOV A, ROW ; (12) RL A ; (13) RL A ; (14) ADD A, COL ; (15) ACALL DISPLAY ; (16) NEXT_COL: MOV A, SCAN ; (17) JNB ACC.4, BEGIN ; (18) RR A ; (19) MOV SCAN, A ; (20) DEC COL ; (21) SJMP SCAN_KEY ; (22) DISPLAY: MOV DPTR, #LED7_TABLE ; (23) MOVC A, @A+DPTR ; (24) MOV DPTR, #4000H ; (25) MOVX @DPTR, A ; (26) SETB ACC.0 ; (27) MOV DPTR, #6003H ; (28) MOVX @DPTR, A ; (29) RET ; (30) LED7_TABLE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H END - Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN. - Trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí ROM, gạt nút MODE sang vị trí INT, sau đó buông nút RESET.
  • 34. Hướng dẫn thí nghiệm VXL & PLC Bài 3 Trang 32 - Mở chương trình “MPE-300 External RAM download” trên máy tính. Click nút lệnh để mở và nạp file bai31.bin (ở desktop). Sau đó click nút lệnh download để nạp chương trình trên tới RAM ngoài 6264 của 89C51. - Sau khi nạp xong, trên MPE-300, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET. Chương trình nạp ở RAM ngoài của 89C51 sẽ được thực thi. - [1] Lần lượt nhấn các phím trên khối bàn phím, quan sát kết quả hiển thị trên LED 7 đoạn và điền vào bảng sau: Phím nhấn Hiển thị Phím nhấn Hiển thị Phím nhấn Hiển thị Phím nhấn Hiển thị 0 4 8 C 1 5 9 D 2 6 A E 3 7 B F - [2] Giả sử chương trình đang quét cột 1 của khối bàn phím (SCAN = 11011111B, COL = 1) và có phím số 9 đang được nhấn thì giá trị nhị phân của A là bao nhiêu sau khi thực hiện xong dòng lệnh (6). Từ đó cho biết nếu như không có phím nào được nhấn thì giá trị của A là bao nhiêu? - [3] Đoạn chương trình từ (8) đến (16) chỉ được thực hiện khi có một phím đang được nhấn. Cũng với giả sử là có phím số 9 đang được nhấn thì khi thực hiện xong dòng lệnh (12) giá trị thập phân của A là bao nhiêu? Từ đó cho biết các dòng lệnh (9), (10) và (11) dùng để làm gì? - [4] Cũng với giả sử trên, cho biết các giá trị thập phân của A sau khi thực hiện xong từng dòng lệnh (13), (14) và (15). Từ đó cho biết ý nghĩa của 3 dòng lệnh này? - [5] Đoạn chương trình từ (17) đến (21) thực hiện các bước chuẩn bị cho lần quét cột kế tiếp. Cho biết ý nghĩa của dòng lệnh (18). 2. Ứng dụng - [1] Viết chương trình Bai32_1.a51 nhận biết có phím nhấn. Khi có một phím bất kỳ đang được nhấn thì hiển thị ký tự sau ra LED7_CK1: - [2] Viết chương trình Bai32_2.a51 nhận biết số chẵn, lẻ: nếu đang nhấn phím số lẻ thì hiển thị ký tự ‘L’ và đang nhấn phím số chẵn thì hiển thị ký tự ‘C’ ra LED7_CK1.
  • 35. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 33 Bài 4 GIAO TIẾP NGOẠI VI VỚI MA TRẬN LED I. Kiến thức cơ bản Sơ đồ nguyên lý mở rộng port cho 89C51 dùng PPI 8255 trên MPE-300 như sau (có thể xem thêm chi tiết về PPI 8255 ở bài mở đầu): A5 A3 D3 U2 74LS573 2 3 4 5 6 7 8 9 11 1 19 18 17 16 15 14 13 12 D0 D1 D2 D3 D4 D5 D6 D7 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 A1 0 A6 /Y4 D5 VCC D4 VCC D1 /RD D6 A15 A13 A2 D5 A1 D7 D3 U1 89C51 30 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 16 40 20 17 ALE P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.6/WR VCC GND P3.7/RD PORT B 1 2 3 4 5 6 7 8 PORT A 1 2 3 4 5 6 7 8 A14 0 /WR ADDRESS BUS D4 0 D0 DATA BUS D0 D1 D2 A0 PORT C 1 2 3 4 5 6 7 8 A7 D6 /RD /WR U6 74LS138 1 2 3 15 14 13 12 11 10 9 7 6 4 5 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B A4 /Y4 U11 8255 34 33 32 31 30 29 28 27 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 26 7 5 36 9 8 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 VCC GND RD WR A0 A1 CS VCC D2 D7 A0 0 Sơ đồ nguyên lý khối ma trận LED:
  • 36. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 34 - Ma trận LED gồm các LED phát quang bố trí thành 5 cột và 7 hàng trong một vi mạch. Các tín hiệu điều khiển hàng PA0 - PA6 (PORT A) nối vào anod của tất cả các LED cùng hàng. Các tín hiệu điều khiển cột PB0 - PB4 (PORT B) nối vào cathode của tất cả các LED cùng cột. - Khi có một cặp tín hiệu điều khiển hàng và cột, ví dụ PA0 = 1 và PB0 = 1, các anod của hàng LED thứ nhất (hàng 0) được cấp thế cao, đồng thời các cathode của cột LED thứ nhất (cột 0) được cấp thế thấp. Tuy nhiên chỉ có LED1 là sáng vì có đồng thời thế cao trên anod và thế thấp ở cathode. Như vậy, khi có 1 cặp tín hiệu điều khiển hàng và cột, chỉ có LED tại điểm hàng và cột gặp nhau là sáng. Với cấu trúc này có thể xây dựng ma trận LED với số LED lớn. - Trong trường hợp cần hiển thị đồng thời nhiều LED trong ma trận, ví dụ chỉ thị chữ L trên ma trận LED, thì phải thực hiện việc hiển thị động (quét LED theo cột): lần lượt cho các cột Pbi = 1 (i = 0÷4), ứng với mỗi Pbi, thiết lập các LED hàng cần phát sáng. Tần số cho một chu trình quét phải đủ cao nhằm đảm bảo cho mắt nhìn thấy sáng đều, không nhấp nháy. - Như vậy để chỉ thị chữ L, có thể điều khiển tuần tự và lặp lại theo 5 bước: Bước 1 Bước 2 Bước 3 Bước 4 Bước 5 PB0 PB1 PB2 PB3 PB4 PA0 1 PA1 1 PA2 1 PA3 1 PA4 1 PA5 1 PA6 1 1 1 1 1 II. Thí nghiệm 1. Mở rộng port với PPI 8255 a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai41a.a51 ở Desktop:
  • 37. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 35 ORG 0000H MOV A, #10001001B ; (1) MOV DPTR, #8003H ; (2) MOVX @DPTR, A ; (3) LOOP: MOV A, #01111111B ; (4) MOV DPTR, #8000H ; (5) MOVX @DPTR, A ; (6) MOV A, #00000100B ; (7) MOV DPTR, #8001H ; (8) MOVX @DPTR, A ; (9) SJMP LOOP ; (10) END - Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN. - Sử dụng chương trình “MPE-300 External RAM download” trên máy tính để mở và nạp file bai41a.bin (ở desktop) tới RAM ngoài 6264 của 89C51. Sau khi nạp xong, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET để thực thi chương trình trên. - [1] Quan sát kết quả hiển thị trên ma trận LED và đánh dấu X vào những vị trí LED sáng tương ứng trên bảng ma trận LED sau: Cột 0 Cột 1 Cột 2 Cột 3 Cột 4 Hàng 0 Hàng 1 Hàng 2 Hàng 3 Hàng 4 Hàng 5 Hàng 6 - [2] Khi đang thực hiện dòng lệnh (3), dựa trên sơ đồ nguyên lý mở rộng port và cho biết giá trị của các đường tín hiệu sau: A15 = ... A14 = ...  A13 = ... /WR = 0 /Y4 = … A1 = … A0 = …
  • 38. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 36 - [3] Từ đó cho biết dòng lệnh (3) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (3), cho biết chế độ (xuất hoặc nhập) của các port 8255: Port A: … Port B: … Port C: … - [4] Khi đang thực hiện dòng lệnh (6), dựa trên sơ đồ nguyên lý mở rộng port và cho biết giá trị của các đường tín hiệu sau: A15 = ... A14 = ...  A13 = ... - [5] Từ đó cho biết dòng lệnh (6) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (6), cho biết giá trị nhị phân của port A: PA7÷0 = ………. - [6] Khi đang thực hiện dòng lệnh (9), dựa trên sơ đồ nguyên lý mở rộng port và cho biết giá trị của các đường tín hiệu sau: A15 = ... A14 = ...  A13 = ... - [7] Từ đó cho biết dòng lệnh (9) dùng để làm gì? Sau khi thực hiện xong dòng lệnh (9), cho biết giá trị nhị phân của port B: PB7÷0 = … b. Ứng dụng - [8] Viết chương trình Bai41b.a51 tạo chuyển động sau trên ma trận LED với thời gian delay cho mỗi chuyển động là 100ms (lưu ý thạch anh sử dụng có tần số 7.3728Mhz): /WR = 0 /Y4 = … A1 = … A0 = … /WR = 0 /Y4 = … A1 = … A0 = …
  • 39. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 37 Hướng dẫn: Sử dụng lệnh RR A để tạo hiệu ứng chuyển động đi lên. 2. Giao tiếp ngoại vi với ma trận LED a. Thí nghiệm - Sử dụng Crimson Editor soạn thảo chương trình sau với tên Bai42a.a51 ở Desktop: COL EQU R0 ROW EQU R1 ORG 0000H MOV A, #80H ; (1) MOV DPTR, #8003H ; (2) MOVX @DPTR, A ; (3) LOOP: MOV COL, #01H ; (4) MOV ROW, #26H ; (5) ACALL DISPLAY ; (6) MOV COL, #02H ; (7) MOV ROW, #49H ; (8) ACALL DISPLAY ; (9) MOV COL, #04H ; (10)
  • 40. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 38 MOV ROW, #49H ; (11) ACALL DISPLAY ; (12) MOV COL, #08H ; (13) MOV ROW, #49H ; (14) ACALL DISPLAY ; (15) MOV COL, #10H ; (16) MOV ROW, #3EH ; (17) ACALL DISPLAY ; (18) SJMP LOOP ; (19) DISPLAY: CLR A ; (20) MOV DPTR, #8001H ; (21) MOVX @DPTR, A ; (22) MOV A, ROW ; (23) MOV DPTR, #8000H ; (24) MOVX @DPTR, A ; (25) MOV A, COL ; (26) MOV DPTR, #8001H ; (27) MOVX @DPTR, A ; (28) MOV R7, #250 ; (29) DJNZ R7, $ ; (30) RET ; (31) END - Biên dịch chương trình trên sang mã máy bằng lệnh Tools  Translate A51 to BIN. - Sử dụng chương trình “MPE-300 External RAM download” trên máy tính để mở và nạp file bai42a.bin (ở desktop) tới RAM ngoài 6264 của 89C51. Sau khi nạp xong, trong khi nhấn giữ nút RESET, gạt nút MSL sang vị trí RAM, gạt nút MODE sang vị trí EXT, sau đó buông nút RESET để thực thi chương trình trên.
  • 41. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 39 - [1] Quan sát kết quả hiển thị trên ma trận LED và đánh dấu X vào những vị trí LED sáng tương ứng trên bảng ma trận LED sau: Cột 0 Cột 1 Cột 2 Cột 3 Cột 4 Hàng 0 Hàng 1 Hàng 2 Hàng 3 Hàng 4 Hàng 5 Hàng 6 - [2] Các dòng lệnh nào dùng để thiết lập chế độ hoạt động cho 8255? Từ đó cho biết chế độ (xuất hoặc nhập) của các port: Port A: … Port B: … Port C: … - [3] Các dòng lệnh (20), (21) và (22) dùng để làm gì? - [4] Các dòng lệnh (23), (24) và (25) dùng để làm gì? - [5] Các dòng lệnh (26), (27) và (28) dùng để làm gì? - [6] Các dòng lệnh (29) và (30) dùng để delay thời gian hiển thị cho mỗi cột. MPE-300 sử dụng thạch anh có tần số 7.3728MHz cho 89C51 thì thời gian delay này là bao lâu? b. Ứng dụng - [7] Viết chương trình Bai42b_1.a51 tạo ký hiệu mũi tên như sau trên ma trận LED: - [8] Viết chương trình Bai42b_2.a51 tạo chuyển động sau trên ma trận LED với thời gian delay cho mỗi chuyển động là 100ms (lưu ý thạch anh sử dụng có tần số 7.3728Mhz):
  • 42. Hướng dẫn thí nghiệm VXL & PLC Bài 5 Trang 40 Hướng dẫn: Sử dụng ngắt timer kết hợp với lệnh RR A để tạo hiệu ứng chuyển động đi lên.
  • 43.
  • 44. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 42 Bài 5 ĐIỀU KHIỂN QUÁ TRÌNH TUẦN TỰ I.Thí nghiệm 1 - Mô hình điều khiển dùng trong thí nghiệm 1 như sau: XE HOME CB1 CB2 CB3 XILÔ Q0.2 - Tùy theo yêu cầu của từng thí nghiệm mà sinh viên sẽ kết nối các tín hiệu theo bảng sau: Ký hiệu Địa chỉ I/O Ý nghĩa PB1 I0.0 Nút nhấn START PB2 I0.1 Nút nhấn STOP PB3 I0.2 Cảm biến 1 (CB1) để phát hiện vị trí HOME SW1 I0.3 Cảm biến 2 (CB2) để phát hiện vị trí dừng PB5 I0.4 Cảm biến 3 (CB3)để đếm sản phẩm rơi xuống LP0 Q0.0 Động cơ điều khiển xe chạy sang phải LP1 Q0.1 Động cơ điều khiển xe chạy sang trái LP2 Q0.2 Động cơ điều khiển mở xilô cho sản phẩm rơi xuống 1. Thí nghiệm 1.1 - Khi nhấn START, xe đang ở vị trí HOME sẽ di chuyển từ trái sang phải. Khi CB2 tác động, xe dừng lại 5s rồi quay về vị trí HOME. - Soạn chương trình sau và lưu trên Desktop với tên TN11.mwp.
  • 45. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 43 - Download chương trình xuống PLC và kiểm tra. 2. Thí nghiệm 1.2 - Giữ nguyên kết nối và chương trình như thí nghiệm 1.1 nhưng nối I0.3 với PB4. - Kiểm tra chương trình có thực hiện giống thí nghiệm 1.1 không? Nếu không thì tại sao? - Viết lại chương trình cho thực hiện giống thí nghiệm 1.1 và lưu với tên TN12.mwp trên Desktop. Chú ý: Việc nối I0.3 với PB4 chỉ thực hiện trong thí nghiệm 1.2, các thí nghiệm khác thì vẫn nối I0.3 với SW1. 3. Thí nghiệm 1.3 - Dựa vào chương trình TN11.mwp viết tiếp chương trình như sau: Sau khi xe dừng 5s tại vị trí CB2 xong, cho mở xilô (Q0.2) để sản phẩm rơi xuống. Khi rơi đủ 10 sản phẩm (do CB3 phát hiện) thì đóng xilô và cho xe chạy về HOME. - Lưu chương trình với tên TN13.mwp trên Desktop. 4. Thí nghiệm 1.4 - Dựa vào chương trình TN13.mwp viết tiếp chương trình như sau: Sau khi 10 sản phẩm đã rơi xuống thì delay 8s mới cho xe chạy về HOME. - Lưu chương trình với tên TN14.mwp trên Desktop. Bảng ký hiệu các biến
  • 46. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 44 5. Thí nghiệm 1.5 - Dựa vào chương trình TN14.mwp viết tiếp chương trình như sau: Khi xe về tới vị trí HOME, cho delay 3s rồi lặp lại chu trình. Hệ thống làm việc liên tục cho đến khi nhấn STOP. - Lưu chương trình với tên TN15.mwp trên Desktop. II. Thí nghiệm 2 - Mô hình điều khiển dùng trong thí nghiệm 2 như sau: Băng tải sản phẩm Băng tải thùng CB2 CB1 - Thực hiện kết nối các tín hiệu theo bảng sau: Ký hiệu Địa chỉ I/O Ý nghĩa PB1 I0.0 Nút nhấn START PB2 I0.1 Nút nhấn STOP SW1 I0.2 Cảm biến 1 (CB1) để phát hiện vị trí thùng PB4 I0.3 Cảm biến 2 (CB2) để phát hiện vị trí sản phẩm rơi xuống LP0 Q0.0 Động cơ 1 (ĐC1) điều khiển chạy băng tải thùng LP1 Q0.1 Động cơ 2 (ĐC2) điều khiển quay băng tải sản phẩm
  • 47. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 45 1. Thí nghiệm 2.1 - Khi nhấn nút START thì dây chuyền hoạt động. Động cơ kéo băng tải thùng chạy (ĐC1) đưa thùng rỗng đến đúng vị trí băng tải sản phẩm. Khi thùng đến đúng vị trí nó sẽ tác động vào CB1. Khi đó động cơ kéo băng tải thùng dừng và động cơ kéo băng tải sản phẩm (ĐC2) bắt đầu chạy làm sản phẩm rơi vào thùng. Mỗi khi có một sản phẩm rơi vào thùng thì CB2 tác động. Khi đủ số táo quy định (5 sản phẩm) thì băng tải sản phẩm dừng lại, băng tải thùng lại chạy để đưa thùng rỗng khác đến đúng vị trí. Khi nhấn nút STOP thì dây chuyền dừng hoạt động. - Dùng Step7 – Microwin soạn thảo chương trình để thực hiện quá trình trên và lưu trên Desktop với tên TN21.mwp. Tiến hành download chương trình xuống PLC và kiểm tra. 2. Thí nghiệm 2.2 - Dựa vào chương trình TN21.mwp viết tiếp chương trình như sau: Sau khi nhấn nút START 5s thì dây chuyền mới hoạt đông. - Lưu chương trình với tên TN22.mwp trên Desktop. Tiến hành download chương trình xuống PLC và kiểm tra. 3. Thí nghiệm 2.3 - Dựa vào chương trình TN22.mwp viết tiếp chương trình như sau: Sau khi đóng đủ 3 thùng thì hệ thống dừng. - Lưu chương trình với tên TN23.mwp trên Desktop. Tiến hành download chương trình xuống PLC và kiểm tra.
  • 48. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 46 Bài 6 PHÂN LOẠI VÀ ĐẾM SẢN PHẨM Cho một dây chuyền công nghiệp vận chuyển các sản phẩm có chiều dài l. Các sản phẩm này cần được phân loại và đếm theo tiêu chuẩn sau:  Nếu l  d2 thì sản phẩm loại dài.  Nếu d1  l < d2 thì sản phẩm loại vừa.  Nếu l < d1 thì sản phẩm loại ngắn. Giả sử rằng khoảng cách giữa hai sản phẩm liên tiếp lớn hơn d2. Các cảm biến CB1, CB2, CB3 đặt dưới băng chuyền dùng để phân biệt chiều dài của sản phẩm. l X1 X2 X3 1 d 2 d
  • 49. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 47 1. Thí nghiệm 1 – Phân loại sản phẩm vừa - Mô hình dùng trong thí nghiệm 1 như sau: - Thực hiện kết nối các tín hiệu theo bảng sau: Ký hiệu Địa chỉ I/O Ý nghĩa PB1 I0.0 Cảm biến X1 PB2 I0.1 Cảm biến X2 PB3 I0.2 Cảm biến X3 PB4 I0.3 Nút nhấn START LP0 Q0.0 Điều khiển động cơ cho phép đưa sản phẩm vào (EN) LP1 Q0.1 Điều khiển băng chuyền hoạt động (M) LP2 Q0.2 Điều khiển cần gạt phân loại sản phẩm (R) LP3 Q0.3 Tín hiệu báo sản phẩm đầy  Mô tả quá trình - Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1). - Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi động động cơ EN (Q0.0).
  • 50. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 48 - Bắt đầu phân loại và đếm sản phẩm loại vừa: + Nếu là sản phẩm loại vừa d1  l < d2 thì để cần gạt R bình thường cho sản phẩm đi qua (cho Q0.2 = 0). + Nếu không là sản phẩm loại vừa (có thể là loại dài hoặc ngắn) thì xuất tín hiệu xoay cần gạt R cho sản phẩm đi sang hướng khác (cho Q0.2 = 1), tín hiệu này được giữ cho đến khi có sản phẩm kế tiếp vào. - Mỗi lần có một sản phẩm vừa qua thì dùng counter để đếm, khi đếm đủ 5 sản phẩm thì xuất tín hiệu báo đầy (cho Q0.3 = 1) và tạm ngưng đưa sản phẩm vào băng chuyền (cho Q0.0 = 0).  Hướng dẫn Để phân biệt sản phẩm có thể thực hiện theo các bước sau: - Tại thời điểm X3 vừa tác động, dùng tiếp điểm phát hiện cạnh lên P. - Khi đó xét trạng thái của X1 và X2: + Nếu cả X1, X2 không tác động ta có sản phẩm loại ngắn l < d1. + Nếu cả X1, X2 cùng tác động ta có sản phẩm loại dài l  d2. + Nếu X1 không tác động và X2 tác động ta có sản phẩm loại vừa d1  l < d2.  Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại trên Desktop với tên TN1.mwp. Tiến hành download chương trình xuống PLC và kiểm tra. 2. Thí nghiệm 2 – Phân loại và đếm sản phẩm theo yêu cầu  Yêu cầu: Số sản phẩm cần đếm cho mỗi thùng là 10, trong đó có tối thiểu 6 sản phẩm loại vừa, số phế phẩm (là sản phẩm loại ngắn hoặc loại dài) không được vượt quá 4 sản phẩm.  Thực hiện: - Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1). - Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi động động cơ EN (Q0.0). - Bắt đầu phân loại và đếm sản phẩm:
  • 51. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 49 + Nếu là sản phẩm loại vừa d1  l < d2 thì để cần gạt R bình thường cho sản phẩm đi qua (cho Q0.2 = 0), tăng bộ đếm sản phẩm lên 1. + Nếu là phế phẩm thì tăng bộ đếm phế phẩm lên 1 và:  Nếu trong giới hạn cho phép ( 4 phế phẩm) thì để cần gạt R bình thường cho sản phẩm đi qua (cho Q0.2 = 0), tăng bộ đếm sản phẩm lên 1.  Nếu vượt quá giới hạn cho phép thì xuất tín hiệu xoay cần gạt (cho Q0.2 = 1) đồng thời tăng số phế phẩm lên 1. - Khi đếm đủ 10 sản phẩm thì xuất tín hiệu báo đầy (cho Q0.3 = 1) và tạm ngưng đưa sản phẩm vào băng chuyền (cho Q0.0 = 0).  Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại trên Desktop với tên TN2.mwp. Tiến hành download chương trình xuống PLC và kiểm tra. 3. Thí nghiệm 3 – Phân loại sản phẩm vừa, ngắn, dài
  • 52. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 50 - Thực hiện kết nối các tín hiệu theo bảng sau: Ký hiệu Địa chỉ I/O Ý nghĩa PB1 I0.0 Cảm biến X1 PB2 I0.1 Cảm biến X2 PB3 I0.2 Cảm biến X3 PB4 I0.3 Nút nhấn START LP0 Q0.0 Điều khiển động cơ cho phép đưa sản phẩm vào (EN) LP1 Q0.1 Điều khiển băng chuyền hoạt động (M) LP2 Q0.2 Điều khiển cần gạt RL LP3 Q0.3 Điều khiển cần gạt RS LP4 Q0.4 Tín hiệu báo sản phẩm đầy  Thực hiện: - Nhấn nút START (I0.3) để khởi động dây chuyền M (Q0.1). - Chờ 5s để băng chuyền chạy ổn định, sau đó cho phép đưa sản phẩm vào bằng cách khởi động động cơ EN (Q0.0). - Bắt đầu phân loại: + Nếu là phế phẩm loại ngắn thì cho RS = 1, RL = 0. + Nếu là phế phẩm loại dài thì cho RS = 0, RL = 1. + Nếu là sản phẩm loại ngắn thì cho RS = 0, RL = 0. - Đồng thời đếm tổng số phế phẩm loại ngắn và phế phẩm loại dài trong suốt thời gian làm việc.  Yêu cầu: Dùng Step7-Microwin soạn thảo chương trình thực hiện quá trình trên và lưu lại trên Desktop với tên TN3.mwp. Tiến hành download chương trình xuống PLC và kiểm tra.
  • 53. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 51 Bài 7 ĐIỀU KHIỂN ĐÈN GIAO THÔNG Thực hiện kết nối tín hiệu từ ngõ ra PLC đến các đèn giao thông theo bảng sau: Ký hiệu Ngõ ra PLC Ý nghĩa FC-1R Q0.0 Đèn đỏ trạm 1 FC-1Y Q0.1 Đèn vàng trạm 1 FC-1G Q0.2 Đèn xanh trạm 1 FC-2R Q0.3 Đèn đỏ trạm 2 FC-2Y Q0.4 Đèn vàng trạm 2 FC-2G Q0.5 Đèn xanh trạm 2 FC-3R Q0.6 Đèn đỏ trạm 3 FC-3Y Q0.7 Đèn vàng trạm 3 FC-3G Q1.0 Đèn xanh trạm 3 FC-4R Q1.1 Đèn đỏ trạm 4 FC-4Y Q2.0 Đèn vàng trạm 4 FC-4G Q2.1 Đèn xanh trạm 4 W12R Q2.2 Đèn đỏ đi bộ 1 → 2 W12G Q2.3 Đèn xanh đi bộ 1 → 2 W23R Q2.4 Đèn đỏ đi bộ 2 → 3 W23G Q2.5 Đèn xanh đi bộ 2 → 3 W34R Q2.6 Đèn đỏ đi bộ 3 → 4 W34G Q2.7 Đèn xanh đi bộ 3 → 4 W14R Q3.0 Đèn đỏ đi bộ 1 → 4 W14G Q3.1 Đèn xanh đi bộ 1 → 4 1. Thí nghiệm 1 - Nguyên tắc điều khiển đèn giao thông cho xe ở Trạm 1 và Trạm 2 như sau: Trạm 1 Xanh Vàng Đỏ Vàng Xanh Trạm 2 Đỏ Xanh Vàng Đỏ - Soạn chương trình sau và lưu với tên TN1.mwp và lưu ở Desktop.
  • 54. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 52
  • 55. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 53 - Download chương trình xuống PLC và kiểm tra.
  • 56. Hướng dẫn thí nghiệm Vi xử lý & PLC Trang 54 - Hãy xác định thời gian Xanh, Vàng, Đỏ cho mỗi trạm và điền vào bảng sau: Xanh Vàng Đỏ Trạm 1 Trạm2 2. Thí nghiệm 2 - Dựa vào chương trình TN1.mwp viết lại chương trình điều khiển đèn xe với thời gian như sau: Xanh Vàng Đỏ 8s 2s 10s - Lưu chương trình với tên TN2.mwp trên Desktop. 3. Thí nghiệm 3 - Dựa vào chương trình TN1.mwp viết lại chương trình điều khiển đèn xe với thời gian như sau: Trạm 1 Xanh 7s Vàng 2s Đỏ 11s Vàng 7s Xanh 2s Trạm 2 Đỏ 9s Xanh 9s Vàng 2s Đỏ 9s - Lưu chương trình với tên TN3.mwp trên Desktop. 4. Thí nghiệm 4 - Biết rằng đèn đi bộ trên 1 trạm (Trạm 1 hoặc Trạm 2) được điều khiển theo nguyên tắc sau: Đèn xe Đỏ Xanh Vàng Đèn bộ Xanh Đỏ - Dựa trên chương trình TN1.mwp hãy viết tiếp chương trình điều khiển đèn đi bộ cho Trạm 1 và Trạm 2 và lưu lại với tên TN4.mwp trên Desktop. 5. Thí nghiệm 5 - Viết chương trình tạo xung trên ngõ Q0.1 với chu kỳ 2s sáng, 3s tắt. Lưu chương trình lại với tên TN5.mwp trên Desktop.
  • 57. Hướng dẫn thí nghiệm VXL & PLC Bài 8 Trang 55 Bài 8 ĐIỀU KHIỂN THANG MÁY Thực hiện kết nối tín hiệu từ các ngõ vào ra PLC đến thang máy theo bảng sau: OC1 Input OC2 Output 1 I0.0 1 Q0.4 2 I0.1 2 Q0.5 3 I0.2 3 Q0.6 4 I0.3 4 Q0.7 5 I0.4 5 Q1.0 6 I0.5 6 Q1.1 7 I0.6 7 Q0.0 8 I0.7 8 Q0.2 9 I1.0 9 Q2.0 10 I1.1 10 Q2.1 11 I1.2 11 Q2.2 12 I1.3 12 Q2.3 13 GND 13 GND 14 I1.4 14 Q3.3 15 I1.5 15 16 I2.0 16 17 I2.1 17 18 I2.2 18 Q0.1 19 I2.3 19 20 I3.0 20 Q0.3 21 I3.1 21 22 I3.2 22 Q3.0 23 I3.3 23 Q3.1 24 +24V 24 Q3.2 25 +24V 25 +24V 1. Thí nghiệm 1: Hiển thị vị trí hiện tại của cabin  Yêu cầu: Mở chương trình mẫu điều khiển thang máy là Thangmay.mwp ở Desktop, vào chương trình con STATE_2 viết chương trình hiển thị vị trí hiện tại của cabin. Lưu lại với tên TN1.mwp trên Desktop, download xuống PLC và kiểm tra.
  • 58. Hướng dẫn thí nghiệm VXL & PLC Bài 8 Trang 56  Hướng dẫn: Ở mỗi tầng có gắn 1 LED 7 đoạn để báo vị trí hiện tại của cabin, LED này được điều khiển bởi 2 bit Q1.0 và Q1.1: Q1.0 Q1.1 LED 7 đoạn 0 0 0 1 0 1 0 1 2 Ở mỗi tầng cũng gắn 2 công tắc hành trình để xác định vị trí của cabin, LED báo tầng hoạt động khi cả 2 công tắc hành trình cùng tác động, bảng sau cho biết các công tắc hành trình đã nối với ngõ vào nào của PLC: Tầng Công tắc hành trình Ngõ vào PLC Trệt CB01 I0.0 CB02 I0.1 1 CB11 I2.0 CB12 I2.1 2 CB21 I0.3 CB22 I0.4 Đoạn chương trình sau hiển thị LED cho tầng trệt: Trong đó, các ký hiệu CB01, CB02, LED7_1, LED7_2 được định nghĩa trong Symbol Table như sau: Như vậy, khi cả hai công tắc hành trình CB01 và CB02 cùng tác động thì cabin đã đến tầng trệt, ta muốn hiển thị số 0 trên cửa cabin thì phải cho Q1.0 = 0 và Q1.1 = 0 bằng cách dùng lệnh reset bit (R). Sinh viên viết tiếp chương trình cho các tầng còn lại. 2. Thí nghiệm 2: Hiển thị các mũi tên báo hiệu trên cửa thang máy  Yêu cầu: Mở chương trình TN1.mwp ở Desktop, vào chương trình con STATE_3 viết chương trình hiển thị các mũi tên báo hiệu trên cửa thang máy (viết vào
  • 59. Hướng dẫn thí nghiệm VXL & PLC Bài 8 Trang 57 các Network 1, 2, 3,4). Lưu lại với tên TN2.mwp trên Desktop, download xuống PLC và kiểm tra.  Hướng dẫn: Ở mỗi tầng có các nút nhấn để gọi thang máy và các mũi tên báo hiệu tương ứng: Tầng trệt I0.2 Nút gọi thang xuống tầng trệt Q0.4 Mũi tên chỉ thị gọi thang xuống tầng trệt Tầng 1 I2.2 Nút gọi thang xuống tầng 1 Q2.0 Mũi tên chỉ thị gọi thang xuống tầng 1 I2.3 Nút gọi thang lên tầng 1 Q2.1 Mũi tên chỉ thị gọi thang lên tầng 1 Tầng 2 I0.5 Nút gọi thang lên tầng 2 Q0.5 Mũi tên chỉ thị gọi thang lên tầng 2 Khi nhấn vào nút gọi thang thì mũi tên tương ứng sẽ sáng, và khi thang đến thì mũi tên sẽ tắt. Ví dụ, khi muốn gọi thang đến tầng trệt thì phải tác động vào ngõ I0.2, đồng thời cho mũi tên tương ứng sáng (cho Q0.4 = 1), khi thang đã đến tầng trệt thì tắt mũi tên này (cho Q0.4 = 0). Ví dụ, ở tầng trệt: Sinh viên viết tiếp chương trình cho các tầng còn lại. 3. Thí nghiệm 3: Hiển thị LED trong cabin báo hiệu tầng đích muốn đến  Yêu cầu: Mở chương trình TN2.mwp ở Desktop, vào chương trình con STATE_3 viết chương trình hiển thị LED trong cabin báo hiệu tầng đích muốn đến (viết vào các Network 5, 6, 7). Lưu lại với tên TN3.mwp trên Desktop, download xuống PLC và kiểm tra.  Hướng dẫn: Khi vào trong cabin ta thấy trong đó có các nút nhấn cho người dùng chọn tầng đích muốn đến, và khi nhấn vào các nút này sẽ sáng các đèn LED tương ứng.
  • 60. Hướng dẫn thí nghiệm VXL & PLC Bài 8 Trang 58 Bảng địa chỉ: I0.6 Điều khiển thang máy xuống tầng trệt I3.0 Điều khiển thang máy đến tầng 1 I1.5 Điều khiển thang máy lên tầng 2 Q0.6 LED báo hiệu tầng đích là tầng trệt Q2.2 LED báo hiệu tầng đích là tầng 1 Q3.2 LED báo hiệu tầng đích là tầng 2