KHOA CÔNG NGHỆ ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP T T À À I I L L I I Ệ Ệ U U H H Ư Ư Ớ Ớ N N G G D D Ẫ Ẫ N N T T H H Í Í N N G G H H I I Ệ Ệ M M - - T T H H Ự Ự C C H H À À N N H H F. HỆTHỐNGĐIỀUKHIỂNNÚT NHẤN. Giáo trình thực hành vixử lý. 2 Biên soạn: Phạm Quang Trí A. 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ềukhiển và sử dụng mô hình thí nghiệm để kiểm chứng. • Điềukhiển thiết bị ngoại vi bằng các port của viđiều khiển. • Điềukhiể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ềukhiể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ềukhiển MCS-51. • Biết cách viết các chương trình điềukhiểnnút nhấn. • Nắm được sơ đồ và nguyên lý hoạt động của khối nútnhấ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útnhấn để điềukhiển các thiết bị ngoại vi khác nhau. F. H THNG IU KHIN NT NHN. Bi 1: Chng trỡnh iu khin nỳt nhn, khi ta nhn nỳt no trong 8 nỳt thỡ LED tng ng s sỏng lờn v ngc li (MOMENTARY SW c ni vi Port0, LED c ni vi Port1 (cú s dng b m o)). Giỏo trỡnh thc hnh vi x lý. 3 Biờn son: Phm Quang Trớ 1 Trỡnh t tin hnh thớ nghim: 1.1 Kt ni thit b thớ nghim. Tt ngun cp cho mụ hỡnh thớ nghim. Dựng dõy bus 8 ni J64 (PORT1) khi vi iu khin vi J11 (BAR LED 1) khi dóy LED. Dựng dõy bus 8 ni J63 (PORT0 / DATA) khi vi iu khin vi J76 (MOMENTARY SW) khi nỳt nhn. Dựng dõy bus 3 ni J103 (POWER) khi dóy LED v J114 (POWER) khi nỳt nhn vi ngun +5V khi ngun. MOMENTARY SW POWER PORT 0PORT 1PORT 3PORT 2 PORT 1PORT 3 40 PINS 20 PINS 33 1.2 S nguyờn lý ca h thng: AD7 AD0 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD6 AD5 AD4 AD3 AD2 AD1 D0 D0 D0 D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 D7 D6 D5 D4 D3 D2 D1 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 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 1B 1 2B 2 3B 3 4B 4 5B 5 6B 6 7B 7 8B 8 1C 18 2C 17 3C 16 4C 15 5C 14 6C 13 7C 12 8C 11 COM 10 U2 ULN2803 2 3 4 5 6 7 8 9 1 RP1 10K +5V MAẽCH ẹIEU KHIENNUTNHAN MAẽCH ẹIEU KHIENNUT NHANMAẽCH ẹIEU KHIENNUTNHAN MAẽCH ẹIEU KHIENNUTNHAN 2 3 4 5 6 7 8 9 1 RP2 10K +5V +5V KEY7 KEY6 KEY5 KEY4 KEY3 KEY2 KEY1 KEY0 1.3 V lu gii thut v vit chng trỡnh iu khin. F. HỆ THỐNGĐIỀUKHIỂN NÚT NHẤN. Bài 1: Chương trình điềukhiểnnút nhấn, khi ta nhấnnú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)). Giáo trình thực hành vixử lý. 4 Biên soạn: Phạm Quang Trí BEGIN ĐIỀUKHIỂN TẮT LED 0 (P1.0) = 0 MAIN: F1 Đ S KEY0 NHẤN ? (P0.0) = 0 ĐIỀUKHIỂN TẮT LED (P1) = 00H KEY1: ĐIỀUKHIỂN SÁNG LED 0 (P1.0) = 1 KEY0: KEY0OK: ĐIỀUKHIỂN TẮT LED 1 (P1.1) = 0 Đ S KEY1 NHẤN ? (P0.1) = 0 KEY2: ĐIỀUKHIỂN SÁNG LED 1 (P1.1) = 1 KEY1OK: ĐIỀUKHIỂN TẮT LED 2 (P1.2) = 0 Đ S KEY2 NHẤN ? (P0.2) = 0 KEY3: ĐIỀUKHIỂN SÁNG LED 2 (P1.2) = 1 KEY2OK: ĐIỀUKHIỂN TẮT LED 3 (P1.3) = 0 Đ S KEY3 NHẤN ? (P0.3) = 0 KEY4: ĐIỀUKHIỂN SÁNG LED 3 (P1.3) = 1 KEY3: KEY3OK: ĐIỀUKHIỂN TẮT LED 4 (P1.4) = 0 Đ S KEY4 NHẤN ? (P0.4) = 0 KEY5: ĐIỀUKHIỂN SÁNG LED 4 (P1.4) = 1 KEY4OK: ĐIỀUKHIỂN TẮT LED 5 (P1.5) = 0 Đ S KEY5 NHẤN ? (P0.5) = 0 KEY6: ĐIỀUKHIỂN SÁNG LED 5 (P1.5) = 1 KEY5OK: ĐIỀUKHIỂN TẮT LED 6 (P1.6) = 0 Đ S KEY6 NHẤN ? (P0.6) = 0 KEY7: ĐIỀUKHIỂN SÁNG LED 6 (P1.6) = 1 KEY6OK: ĐIỀUKHIỂN TẮT LED 7 (P1.7) = 0 Đ S KEY7 NHẤN ? (P0.7) = 0 ĐIỀUKHIỂN SÁNG LED 7 (P1.7) = 1 KEY7OK: KEY6: ;*************************************************** ;CHUONG TRINH DIEUKHIENNUTNHAN LAM 8 LED HOAT DONG ;*************************************************** ;KET NOI: 8 LED -> PORT1 ; MOMENTARY SW -> PORT0 (ACT = 0) ;*************************************************** ORG 00H MAIN: MOV P1,#00H ;TAT CAC LED KEY0: ;KEY0 JNB P0.0,KEY0OK ;KIEM TRA NUT KEY0 - Y: KEY0 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.0 ;KEY0 NHA -> LED TAT SJMP KEY1 ;KIEM TRA NUT KE TIEP F. HỆ THỐNGĐIỀUKHIỂN NÚT NHẤN. Bài 1: Chương trình điềukhiểnnút nhấn, khi ta nhấnnú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)). Giáo trình thực hành vixử lý. 5 Biên soạn: Phạm Quang Trí KEY0OK: SETB P1.0 ;KEY0 NHAN -> LED SANG KEY1: ;KEY1 JNB P0.1,KEY1OK ;KIEM TRA NUT KEY1 - Y: KEY1 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.1 ;KEY1 NHA -> LED TAT SJMP KEY2 ;KIEM TRA NUT KE TIEP KEY1OK: SETB P1.1 ;KEY1 NHAN -> LED SANG KEY2: ;KEY2 JNB P0.2,KEY2OK ;KIEM TRA NUT KEY2 - Y: KEY2 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.2 ;KEY2 NHA -> LED TAT SJMP KEY3 ;KIEM TRA NUT KE TIEP KEY2OK: SETB P1.2 ;KEY2 NHAN -> LED SANG KEY3: ;KEY3 JNB P0.3,KEY3OK ;KIEM TRA NUT KEY3 - Y: KEY3 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.3 ;KEY3 NHA -> LED TAT SJMP KEY4 ;KIEM TRA NUT KE TIEP KEY3OK: SETB P1.3 ;KEY3 NHAN -> LED SANG KEY4: ;KEY4 JNB P0.4,KEY4OK ;KIEM TRA NUT KEY4 - Y: KEY4 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.4 ;KEY4 NHA -> LED TAT SJMP KEY5 ;KIEM TRA NUT KE TIEP KEY4OK: SETB P1.4 ;KEY4 NHAN -> LED SANG KEY5: ;KEY5 JNB P0.5,KEY5OK ;KIEM TRA NUT KEY5 - Y: KEY5 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.5 ;KEY5 NHA -> LED TAT SJMP KEY6 ;KIEM TRA NUT KE TIEP KEY5OK: SETB P1.5 ;KEY5 NHAN -> LED SANG KEY6: ;KEY6 JNB P0.6,KEY6OK ;KIEM TRA NUT KEY6 - Y: KEY6 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.6 ;KEY6 NHA -> LED TAT SJMP KEY7 ;KIEM TRA NUT KE TIEP KEY6OK: SETB P1.6 ;KEY6 NHAN -> LED SANG KEY7: ;KEY7 JNB P0.7,KEY7OK ;KIEM TRA NUT KEY7 - Y: KEY7 NHAN -> XULY NEU NUT DUOC NHAN CLR P1.7 ;KEY7 NHA -> LED TAT SJMP KEY0 ;KIEM TRA NUT KE TIEP KEY7OK: SETB P1.7 ;KEY7 NHAN -> LED SANG SJMP KEY0 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ềukhiể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ềukhiể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) F. HỆ THỐNGĐIỀUKHIỂN NÚT NHẤN. Bài 2: Chương trình điềukhiểnnút nhấn, khi ta nhấnnú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)). Giáo trình thực hành vixử lý. 6 Biên soạn: Phạm Quang Trí 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 (T DELAY = 1000.T MÁ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 DELAY50MS: 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 (T DELAY = 1000.T MÁ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 DELAY200MS: ;*************************************************** ;CHUONG TRINH DIEUKHIENNUTNHAN LAM 8 LED HOAT DONG ;*************************************************** ;KET NOI: 8 LED -> PORT1 ; MOMENTARY SW -> PORT0 (ACT = 0) ;*************************************************** ORG 00H MAIN: MOV A,#00H MP1: JNB P0.0,NHAN ;KIEM TRA NUTNHAN - Y: NUT DUOC NHAN ;NUT DUOC NHA -> F = 20 Hz ACALL DELAY50MS SJMP MP1 ;THOAT RA NHAN: ;NUT DUOC NHAN -> F = 5 Hz ACALL DELAY200MS SJMP MP1 ;THOAT RA ;*************************************************** DELAY50MS: ;CTC DELAY 500MS (F = 20 Hz) PUSH 00H CPL A ;CHOP TAT PORT 1 MOV P1,A MOV R0,#50 MOV TMOD,#01H DEL50: MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) F. HỆ THỐNGĐIỀUKHIỂN NÚT NHẤN. Bài 2: Chương trình điềukhiểnnút nhấn, khi ta nhấnnú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)). Giáo trình thực hành vixử lý. 7 Biên soạn: Phạm Quang Trí SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0,DEL50 POP 00H RET ;*************************************************** DELAY200MS: ;CTC DELAY 200MS (F = 5 Hz) PUSH 00H CPL A ;CHOP TAT PORT 1 MOV P1,A MOV R0,#100 MOV TMOD,#01H DEL5: MOV TH0,#HIGH(-2000) MOV TL0,#LOW(-2000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R0,DEL5 POP 00H RET 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ềukhiểnnútnhấ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útnhấn và LED. Nhấnnút “KEY0”: 8 LED sáng tắt liên tục. Nhấnnút “KEY1”: 8 LED sáng dần và tắt hết liên tục. Nhấnnút “KEY2”: 8 LED đếm lên nhị phân 8 bit liên tục. Nhấnnút “KEY3”: 8 LED sáng đuổi liên tục. Nhấnnút “KEY4”: 8 LED sáng dồn liên tục. Nhấnnú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ềukhiển khi nhấnnútnhấn nào thì số thứ tự của nútnhấ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útnhấn và LED 7 đoạn. • Bài 3: Hãy viết chương trình điềukhiển khi nhấnnútnhấn nào thì số thứ tự của nútnhấ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útnhấn và LED ma trận. • Bài 4: Hãy viết chương trình điềukhiển khi nhấnnútnhấn KEY1 thì RELAY1 đóng, khi nhấnnútnhấn KEY2 thì RELAY2 đóng và ngược lại khi không nhấnnútnhấn thì các relay sẽ ngắt. Tự lựa chọn phương pháp kết nối các nútnhấn và relay. • Bài 5: Hãy viết chương trình điềukhiển khi nhấnnútnhấ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ấnnútnhấ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ềukhiển hiển thị số đếm BCD từ 00 lên 59 trên hai LED 7 đoạn (LED1 và LED2). Khi nhấnnútnhấ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ấnnú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ấnnú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ấnnú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útnhấn và LED 7 đoạn. • Bài 7: Hãy viết chương trình điềukhiể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. F. HỆ THỐNGĐIỀUKHIỂN NÚT NHẤN. Bài 2: Chương trình điềukhiểnnút nhấn, khi ta nhấnnú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)). Giáo trình thực hành vixử lý. 8 Biên soạn: Phạm Quang Trí 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útnhấ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. . KEY1 KEY0 1.3 V lu gii thut v vit chng trỡnh iu khin. F. 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. 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. LED TAT SJMP KEY1 ;KIEM TRA NUT KE TIEP F. 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