MỤC ĐÍCH: • Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng.. • Trình bày một số ứng dụng điều khiển
Trang 1KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP TÀI LIỆU HƯỚNG DẪN
THÍ NGHIỆM - THỰC HÀNH
Trang 2A MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô hình thí nghiệm để kiểm chứng
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển
• Điều khiển các thiết bị ngoại vi bằng nút nhấn
• Trình bày một số ứng dụng điều khiển các thiết bị ngoại vi có sử dụng nút nhấn
B YÊU CẦU:
• Nắm vững tập lệnh của vi điều khiển MCS-51
• Biết cách viết các chương trình điều khiển nút nhấn
• Nắm được sơ đồ và nguyên lý hoạt động của khối nút nhấn trên mô hình thí nghiệm
• Biết cách viết các chương trình ứng dụng có sử dụng nút nhấn để điều khiển các thiết bị ngoại vi khác nhau
Trang 3F HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (cĩ sử dụng bộ đệm đảo))
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Tắt nguồn cấp cho mơ hình thí nghiệm
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J11 (BAR LED 1) ở khối dãy LED
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J76 (MOMENTARY SW) ở khối nút nhấn
• Dùng dây bus 3 nối J103 (POWER) ở khối dãy LED và J114 (POWER) ở khối nút nhấn với nguồn +5V ở khối nguồn
1.2 Sơ đồ nguyên lý của hệ thống:
AD7
AD0
AD0 AD2 AD4 AD6
AD7 AD5 AD3 AD1
D D D D D D D
XTAL2 18 XTAL1 19
ALE 30 EA 31 PSEN 29
RST 9
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
U1
AT89C51
C1 33p
C2 33p
X1 12MHz
C3 10uF
R1 10k +5V
D0
R2 330 +5V
D1
R3 330 +5V
D2
R4 330 +5V
D3
R5 330 +5V
D4
R6 330 +5V
D5
R7 330 +5V
D6
R8 330 +5V
D7
R9 330 +5V
1C 18
2C 17
3C 16
4C 15
5C 14
6C 13
7C 12
8C 11
COM 10
U2
ULN2803
2 4 6 8
1 RP1
10K
MẠCH ĐIỀU KHIỂN NÚT NHẤN
2
4
6
8
1
RP2
10K
+5V
+5V
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
Trang 4ĐIỀU KHIỂN TẮT LED 0
(P1.0) = 0
MAIN:
F1
Đ
S
KEY0 NHẤN ?
(P0.0) = 0
ĐIỀU KHIỂN TẮT LED
(P1) = 00H
KEY1:
ĐIỀU KHIỂN SÁNG LED 0 (P1.0) = 1 KEY0:
KEY0OK:
ĐIỀU KHIỂN TẮT LED 1 (P1.1) = 0
Đ
S
KEY1 NHẤN ? (P0.1) = 0
KEY2:
ĐIỀU KHIỂN SÁNG LED 1 (P1.1) = 1 KEY1OK:
ĐIỀU KHIỂN TẮT LED 2 (P1.2) = 0
Đ
S
KEY2 NHẤN ? (P0.2) = 0
KEY3:
ĐIỀU KHIỂN SÁNG LED 2 (P1.2) = 1 KEY2OK:
ĐIỀU KHIỂN TẮT LED 3
(P1.3) = 0
Đ
S
KEY3 NHẤN ?
(P0.3) = 0
KEY4:
ĐIỀU KHIỂN SÁNG LED 3 (P1.3) = 1 KEY3:
KEY3OK:
ĐIỀU KHIỂN TẮT LED 4 (P1.4) = 0
Đ
S
KEY4 NHẤN ? (P0.4) = 0
KEY5:
ĐIỀU KHIỂN SÁNG LED 4 (P1.4) = 1 KEY4OK:
ĐIỀU KHIỂN TẮT LED 5 (P1.5) = 0
Đ
S
KEY5 NHẤN ? (P0.5) = 0
KEY6:
ĐIỀU KHIỂN SÁNG LED 5 (P1.5) = 1 KEY5OK:
ĐIỀU KHIỂN TẮT LED 6
(P1.6) = 0
Đ
S
KEY6 NHẤN ?
(P0.6) = 0
KEY7:
ĐIỀU KHIỂN SÁNG LED 6 (P1.6) = 1 KEY6OK:
ĐIỀU KHIỂN TẮT LED 7 (P1.7) = 0
Đ
S
KEY7 NHẤN ? (P0.7) = 0
ĐIỀU KHIỂN SÁNG LED 7 (P1.7) = 1 KEY7OK:
KEY6:
;***************************************************
;CHUONG TRINH DIEU KHIEN NUT NHAN LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1
; MOMENTARY SW -> PORT0 (ACT = 0)
;***************************************************
MAIN:
Trang 5F HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN
Bài 1: Chương trình điều khiển nút nhấn, khi ta nhấn nút nào trong 8 nút thì LED tương ứng sẽ sáng lên và
ngược lại (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo))
KEY0OK:
SETB P1.0 ;KEY0 NHAN -> LED SANG
CLR P1.1 ;KEY1 NHA -> LED TAT
KEY1OK:
SETB P1.1 ;KEY1 NHAN -> LED SANG
CLR P1.2 ;KEY2 NHA -> LED TAT
KEY2OK:
SETB P1.2 ;KEY2 NHAN -> LED SANG
CLR P1.3 ;KEY3 NHA -> LED TAT
KEY3OK:
SETB P1.3 ;KEY3 NHAN -> LED SANG
CLR P1.4 ;KEY4 NHA -> LED TAT
KEY4OK:
SETB P1.4 ;KEY4 NHAN -> LED SANG
CLR P1.5 ;KEY5 NHA -> LED TAT
KEY5OK:
SETB P1.5 ;KEY5 NHAN -> LED SANG
CLR P1.6 ;KEY6 NHA -> LED TAT
KEY6OK:
SETB P1.6 ;KEY6 NHAN -> LED SANG
CLR P1.7 ;KEY7 NHA -> LED TAT
KEY7OK:
SETB P1.7 ;KEY7 NHAN -> LED SANG
END
1.4 Lưu chương trình và biên dịch chương trình
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip hoạt động
1.7 Nạp chương trình vào vi điều khiển
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển
1.9 Bật nguồn cho mô hình thí nghiệm Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ bước 3 đến bước 9
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
Trang 6Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo))
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1
1.2 Sơ đồ nguyên lý của hệ thống:
• Sơ đồ nguyên lý của hệ thống tương tự như Bài 1
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển
BEGIN
GỌI CTC CHỚP TẮT 20 Hz
DELAY50MS
MAIN:
F2
Đ
S
KEY0 NHẤN ?
(P0.0) = 0
XÓA THANH GHI A
(A) = 00H
GỌI CTC CHỚP TẮT 5 Hz DELAY200MS MP1:
NHAN:
DELAY50MS
CẤT TẠM GIÁ TRỊ CỦA R0 VÀO
STACK NẠP GIÁ TRỊ VÒNG LẶP (R0) = 50
DEL50:
GIÃM SỐ LẦN LẶP
SỐ LẦN LẶP ≠ 0 (CHƯA LẶP XONG)
Đ
S LẤY LẠI GIÁ TRỊ CHO R0 TỪ STACK
RET
KHỞI ĐỘNG TIMER (TIMER 0, MODE 1) (TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER (TDELAY = 1000.TMÁY) (TH0/TL0) = -1000 = FC18H
CHƯA ĐỦ THỜI GIAN (TF0) = 0
Đ
S
CHO TIMER HOẠT ĐỘNG (TR0) = 1
DỪNG TIMER (TR0) = 0 XÓA CỜ TRÀN TIMER (TF0) = 0
DELAY200MS
CẤT TẠM GIÁ TRỊ CỦA R0 VÀO
STACK NẠP GIÁ TRỊ VÒNG LẶP (R0) = 100
DEL5:
GIÃM SỐ LẦN LẶP
SỐ LẦN LẶP ≠ 0 (CHƯA LẶP XONG)
Đ
S LẤY LẠI GIÁ TRỊ CHO R0 TỪ STACK
RET
KHỞI ĐỘNG TIMER (TIMER 0, MODE 1) (TMOD) = 01H
NẠP GIÁ TRỊ CHO TIMER (TDELAY = 1000.TMÁY) (TH0/TL0) = -2000 = F830H
CHƯA ĐỦ THỜI GIAN (TF0) = 0
Đ
S
CHO TIMER HOẠT ĐỘNG (TR0) = 1
DỪNG TIMER (TR0) = 0 XÓA CỜ TRÀN TIMER (TF0) = 0
;***************************************************
;CHUONG TRINH DIEU KHIEN NUT NHAN LAM 8 LED HOAT DONG
;***************************************************
;KET NOI: 8 LED -> PORT1
; MOMENTARY SW -> PORT0 (ACT = 0)
;***************************************************
MAIN:
MP1:
;NUT DUOC NHA -> F = 20 Hz
SJMP MP1 ;THOAT RA
SJMP MP1 ;THOAT RA
;***************************************************
Trang 7F HỆ THỐNG ĐIỀU KHIỂN NÚT NHẤN
Bài 2: Chương trình điều khiển nút nhấn, khi ta nhấn nút KEY0 thì 8 LED sẽ chớp tắt với tần số 5 Hz và
ngược lại khi ta nhả nút KEY0 thì 8 LED sẽ chớp tắt với tần số 20 Hz (MOMENTARY SW được nối với Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo))
;***************************************************
DEL5:
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển nút nhấn và biểu diễn các kiểu hiển thị trên 8 LED Tự lựa chọn phương pháp kết nối các nút nhấn và LED
Nhấn nút “KEY0”: 8 LED sáng tắt liên tục
Nhấn nút “KEY1”: 8 LED sáng dần và tắt hết liên tục
Nhấn nút “KEY2”: 8 LED đếm lên nhị phân 8 bit liên tục
Nhấn nút “KEY3”: 8 LED sáng đuổi liên tục
Nhấn nút “KEY4”: 8 LED sáng dồn liên tục
Nhấn nút “KEY5”: 8 LED tắt hết (không hoạt động)
• Bài 2: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên LED 7 đoạn (LED0) Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn
• Bài 3: Hãy viết chương trình điều khiển khi nhấn nút nhấn nào thì số thứ tự của nút nhấn đó hiển thị lên LED ma trận Tự lựa chọn phương pháp kết nối các nút nhấn và LED ma trận
• Bài 4: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY1 thì RELAY1 đóng, khi nhấn nút nhấn KEY2 thì RELAY2 đóng và ngược lại khi không nhấn nút nhấn thì các relay sẽ ngắt Tự lựa chọn phương pháp kết nối các nút nhấn và relay
• Bài 5: Hãy viết chương trình điều khiển khi nhấn nút nhấn KEY0 thì LED 7 đoạn (LED1) sẽ bắt đầu đếm BCD từ 9 xuống 0 Khi giá trị của LED 7 đoạn này giãm xuống tới giá trị 0 thì RELAY1 sẽ đóng lại Sau
đó khi nhấn nút nhấn KEY1 thì LED 7 đoạn tắt và RELAY1 ngắt Tự lựa chọn phương pháp kết nối các nút nhấn, LED 7 đoạn và relay
• Bài 6: Hãy viết chương trình điều khiển hiển thị số đếm BCD từ 00 lên 59 trên hai LED 7 đoạn (LED1 và LED2) Khi nhấn nút nhấn KEY0 thì qúa trình đếm dừng lại và giá trị trên hai LED 7 đoạn bắt đầu sáng tắt liên tục Sau đó, khi nhấn nút KEY1 thì giá trị trên hai LED 7 đoạn tăng dần lên theo số lần nhấn nút, khi nhấn nút KEY2 thì giá trị trên hai LED 7 đoạn giãm dần lên theo số lần nhấn nút, khi nhấn nút KEY0 thì quá trình đếm lại tiếp tục Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn
• Bài 7: Hãy viết chương trình điều khiển hiển thị đồng hồ số trên sáu LED 7 đoạn (LED3 – LED7) có thể điều chỉnh dược thời gian bằng các nút nhấn:
Nút “KEY0”: dùng để chọn lựa tính năng điều chỉnh (Giờ / Phút / Giây) hoặc dùng để thoát khỏi quá trình điều chỉnh thời gian
Nút “KEY1”: dùng để tăng giá trị thời gian
Nút “KEY2”: dùng để giãm giá trị thời gian
Trang 8Port0, LED được nối với Port1 (có sử dụng bộ đệm đảo))
Trong quá trình điều chỉnh thời gian thì đồng hồ dừng hoạt động và khi chọn lựa tính năng điều chỉnh nào (Giờ / Phút / Giây) thì cặp LED 7 đoạn tương ứng sẽ sáng tắt liên tục Tự lựa chọn phương pháp kết nối các nút nhấn và LED 7 đoạn
• Bài 8: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình