Chuong 4 cac ung dung dua tren vi dieu khien MCS 51 smith n studio

41 189 0
Chuong 4 cac ung dung dua tren vi dieu khien MCS 51   smith n studio

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 Chương 4: CÁC ỨNG DỤNG DỰA TRÊN VI ĐIỀU KHIỂN MCS-51 Chương giới thiệu số ứng dụng MCS-51 thực tế: điều khiển Led đơn, Led đoạn, ma trận Led, LCD, động bước, giao tiếp 8255 Điều khiển Led đơn VCC i d u t S D1 D1 R1 LED RESISTOR IN IN R1 RESISTOR LED Hình a Hình b n e Hình 4.1 – Sơ đồ kết nối Led đơn Mạch điều khiển led đơn mô tả hình 4.1 Lưu ý port AT89C51 có dòng tối đa 10 mA (xem thêm chương 1, phần đặc tính DC) nên cần điều khiển nhiều Led cần mắc thêm mạch khuếch đại h it m S N IN IN y u g VCC D2 R1 D1 R2 74LS04 VCC D4 R3 D3 R4 Q1 Hình 4.2 – Sơ đồ kết nối dùng mạch khuếch đại Phạm Hùng Kim Khánh o Trang 95   D6 LED D5 LED U2 21 22 23 24 25 26 27 28 30 29 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD ALE/PROG PSEN 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 XTAL1 XTAL2 39 38 37 36 35 34 33 32 19 18 31 h it m S EA/VPP RST AT89C51 n e y u 16 15 14 13 12 11 10 S g N Hình 4.3 – Kết nối Led đơn với AT89C51 D8 LED D9 LED D10 LED D11 LED D12 LED Trang 96 Các ứng dụng dựa vi điều khiển MCS-51 10 11 12 13 14 15 16 17 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 RN1 D7 LED Giáo trình vi điều khiển Phạm Hùng Kim Khánh u t R5 o i d VCC Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 dụ: Xét sơ đồ kết nối Led hình 4.3 Viết chương trình điều khiển Led sáng từ trái sang phải, lần Led Giải Các Led nối với Port AT89C51 (P0 dùng cổng nhập / xuất cần phải có điện trở kéo lên nguồn) nên muốn Led sang phải gởi liệu P0 Theo sơ đồ mạch, Led sang bit tương ứng P0 - Lần 1: 1111 1110b (0FEh) – sáng Led trái - Lần 2: 1111 1101b (0FDh) - Lần 3: 1111 1011b (0FBh) - Lần 4: 1111 0111b (0F7h) - Lần 5: 1110 1111b (0EFh) - Lần 6: 1101 1111b (0DFh) - Lần 7: 1011 1111b (0BFh) - Lần 8: 0111 1111b (7Fh) - Lần 9: quay lại giống lần y u g n e Chương trình thực sau: N MOV DPTR,#MaLed ; DPTR chứa vị trí bảng mã Led Main: MOV R7,#0 ; Phần tử bảng mã Loop: MOV A,R7 MOVC A,@A+DPTR ; Đọc bảng mã MOV P0,A ; Chuyển vào P0 để sáng Led CALL Delay ; Chờ để mắt người thấy INC R7 ; Chuyển qua trạng thái kế CJNE R7,#8,Loop ; Đã hết bảng mã lặp lại SJMP main MaLed: DB 0FEh,0FDh,0FBh,0F7h,0EFh,0DFh,0BFh,7Fh Delay: MOV TMOD,#01h MOV TH0,#HIGH(-50000) ; Chờ 50 ms MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TF0 h it m S Phạm Hùng Kim Khánh o i d u t S Yêu cầu điều khiển Led sang từ trái sang phải (theo thứ tự từ P0.0 đến P0.7) nên liệu gởi là: Trang 97 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 CLR TR0 RET END o Điều khiển Led đoạn 2.1 - Cấu trúc bảng mã hiển thị liệu Led đoạn Dạng Led: a b f g c e dp  d n e i d u t S Hình 4.4 – Hình dạng Led đoạn - Led Anode chung: y u g COM D2 D3 D4 D5 D6 D7 a b c d e f g N a h it D1 b c d e g f D8 dp dp Hình 4.5 – Led đoạn dạng anode chung Đối với dạng Led anode chung, chân COM phải có mức logic muốn sáng Led tương ứng chân a – f, dp mức logic Bảng 4.1 - Bảng mã cho Led Anode chung (a MSB, dp LSB): m S Phạm Hùng Kim Khánh Số a 0 0 b 0 0 1 c 0 0 0 d 0 0 e 1 1 f 1 0 g dp Mã hex 1 03h 1 9Fh 25h 0Dh 99h 49h 41h Trang 98 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 0 1 1 0 0 0 0 0 0 1 1Fh 01h 09h o Bảng 4.2 - Bảng mã cho Led Anode chung (a LSB, dp MSB): Số dp g f e d c b a Mã hex 1 0 0 0 0C0h 1 1 1 0 0F9h 1 0 0 0A4h 1 0 0 0B0h 0 1 0 99h 0 0 92h 0 0 82h 1 1 0 0F8h 0 0 0 80h 0 0 0 90h - Led Cathode chung a h it y u g b d c e D1 D2 D3 D4 a b c d N n e g f D5 D6 D7 e f g i d u t S dp D8 dp COM Hình 4.6 – Led đoạn dạng cathode chung Đối với dạng Led Cathode chung, chân COM phải có mức logic muốn sáng Led tương ứng chân a – f, dp mức logic Bảng 4.3 - Bảng mã cho Led Cathode chung (a MSB, dp LSB): m S Phạm Hùng Kim Khánh Số a 1 1 1 b 1 1 0 c 1 1 1 d 1 1 e 1 0 f 0 1 g dp Mã hex 0 0FCh 0 60h 0DAh 0F2h 66h 0B6h 0BEh 0 0E0h Trang 99 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 1 1 1 1 1 1 0 0FEh 0F6h o Bảng 4.4 - Bảng mã cho Led Anode chung (a LSB, dp MSB): Số dp g f e d c b a Mã hex 0 1 1 1 3Fh 0 0 1 06h 1 1 5Bh 0 1 1 4Fh 1 0 1 66h 1 1 6Dh 1 1 1 7Dh 0 0 1 07h 1 1 1 7Fh 1 1 1 6Fh 2.2 y u g n e i d u t S Các phương pháp hiển thị liệu 2.2.1 Phương pháp quét Khi kết nối chung đường liệu Led đoạn, Led sáng đồng thời (do ảnh hưởng lẫn Led) mà phải thực quét Led, nghĩa thời điểm sáng Led tắt Led lại Do tượng lưu ảnh mắt, ta thấy Led sáng đồng thời N dụ 1: Xét sơ đồ kết nối hình 4.7 Viết chương trình hiển thị số Led1 số Led2 h it Giải Led có chân COM nối với Vcc (thơng qua Q2, Q3) nên Led loại anode chung Q2, Q3 transistor PNP nên để Led sáng liệu tương ứng chân điều khiển (P1.0, P1.1) phải m S Theo sơ đồ kết nối, chân g Led nối với P0.6, chân a nối với P0.0 nên bảng mã Led bảng 4.2, liệu cho số 0C0h 0F9h Phương pháp sử dụng phương pháp quét nên cần phải có thời gian trì hỗn lần quét, thời gian thực thông qua timer (thời gian trì hỗn khoảng 200 µs) Phạm Hùng Kim Khánh Trang 100 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 Chương trình thực sau: MOV P1,#0 ; Xoá P1 để tắt Led Main: MOV P0,#0C0h ; Mã số SETB P1.0 ; Sáng Led1 CALL Delay ; Thời gian trì hỗn để thấy Led sáng CLR P1.0 ; Tắt Led1 MOV P0,#0F9h ; Mã số SETB P1.1 ; Sáng Led2 CALL Delay CLR P1.1 ; Tắt Led2 SJMP main ; -Delay: MOV TMOD,#01h MOV TH0,#(-200) MOV TL0,#(-200) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET END N y u g n e i d u t S dụ 2: Viết lại chương trình sử dụng ngắt timer Giải h it Đối với chương trình dụ 1, thực quét led chương trình khơng làm đó, ứng dụng thực tế thường xử lý công việc khác đồng thời với q trình qt Vấn đề giải cách sử dụng ngắt timer: timer tràn thực hiển thị Led m S Chương trình thực sau: Led1 EQU 30h Led2 EQU 31h Led_Pos EQU 32h ORG 0000h LJMP main ORG 000Bh LJMP Timer0_ISR Phạm Hùng Kim Khánh o ; Địa chứa liệu Led1 ; Địa chứa liệu Led2 ; Vị trí Led hành ; Địa ISR timer Trang 101 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 Main: SETB EA ; Cho phép ngắt timer SETB ET0 MOV Led1,#0C0h ; Số MOV Led2,#0F9h ; Số MOV Led_Pos,#01h ; Vị trí sáng Led1 MOV R0,#Led1 ; Dữ liệu gởi Led1 MOV TMOD,#01h MOV TH0,#(-200) MOV TL0,#(-200) SETB TR0 SJMP $ ; Khơng làm cả, ứng dụng thực tế ; thêm chương trình vào ; -Timer0_ISR: MOV A,Led_Pos ; Xác định vị trí Led hành MOV P1,A ; Sáng Led hành RL A ; Dịch trái để chuyển qua Led kế MOV Led_Pos,A ; qua trình tràn MOV A,@R0 ; Đọc liệu hành MOV P0,A INC R0 ; Chuyển qua liệu kế CJNE R0,#Led_Pos,exitTimer0 ; Nếu quét hết tồn MOV Led_Pos,#01h ; Led bắt đầu lại từ Led1 MOV R0,#Led1 exitTimer0: RETI END h it N y u g n e i d u t S dụ mở rộng thêm cho Led bit điều khiển từ P1.0 đến P1.7 cách khai báo thêm ô nhớ cho Led sau: m S Led1 EQU 30h Led2 EQU 31h Led3 EQU 32h Led4 EQU 33h Led5 EQU 34h Led6 EQU 35h Led7 EQU 36h Led8 EQU 37h Led_Pos EQU 38h Phạm Hùng Kim Khánh o ; Địa chứa liệu Led1 ; Địa chứa liệu Led2 ; Vị trí Led hành Trang 102 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 dụ 3: Viết chương trình hiển thị nội dung nhớ 30h Led Led1 chứa số hàng chục Led2 chứa số hàng đơn vị (giả sử giá trị ô nhớ 30h tối đa 99) o Giải Để xuất nội dung ô nhớ 30h Led đoạn cần thực hiện: - i d u t S Chuyển nội dung ô nhớ 30h thành số hàng chục hàng đơn vị (thực chia cho 10) Chuyển giá trị số thành mã Led đoạn (bằng cách tra bảng) Chương trình thực sau: Led1 EQU 30h ; Địa chứa liệu Led1 Led2 EQU 31h ; Địa chứa liệu Led2 Led_Pos EQU 32h ; Vị trí Led hành ORG 0000h LJMP main ORG 000Bh ; Địa ISR timer LJMP Timer0_ISR Main: SETB EA ; Cho phép ngắt timer SETB ET0 MOV Led_Pos,#01h ; Vị trí sáng Led1 MOV R0,#Led1 ; Dữ liệu gởi Led1 MOV TMOD,#01h MOV TH0,#(-200) MOV TL0,#(-200) SETB TR0 Begin: MOV A,30h CALL Chuyenma SJMP Begin ; -Chuyenma: MOV B,#10 ; Chia cho 10: A chứa số hàng chục, DIV AB ; B chứa số hàng đơn vị CALL BCDtoLed7 ; Chuyển sang mã Led đoạn MOV Led1,A ; Đưa vào ô nhớ 31h (Led1) MOV A,B ; Chuyển sang mã Led đoạn CALL BCDtoLed7; số hàng đơn vị MOV Led2,A h it N y u g n e m S Phạm Hùng Kim Khánh Trang 103 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 RET ; -BCDtoLed7: MOV DPTR,#MaLed7 MOVC A,@A+DPTR RET MaLed7: DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h ; -Timer0_ISR: PUSH ACC MOV A,Led_Pos ; Xác định vị trí Led hành MOV P1,A ; Sáng Led hành RL A ; Dịch trái để chuyển qua Led kế MOV Led_Pos,A ; qua trình tràn MOV A,@R0 ; Đọc liệu hành MOV P0,A INC R0 ; Chuyển qua liệu kế CJNE R0,#Led_Pos,exitTimer0 ; Nếu quét hết toàn MOV Led_Pos,#01h ; Led bắt đầu lại từ Led1 MOV R0,#Led1 exitTimer0: POP ACC RETI END N y u g n e i d u t S 2.2.2 Phương pháp chốt Khi thực tách riêng đường liệu Led, ta cho phép Led sáng đồng thời mà khơng có tượng ảnh hưởng Led IC chốt cho phép lưu trữ liệu cho Led sử dụng 74LS373, 74LS374 Khi thực phương pháp chốt, cần xuất liệu Led gởi liệu tạo xung để chốt h it dụ: Xét sơ đồ mạch kết nối hình 4.8 Viết chương trình xuất số Led3 số Led4 m S Giải Do Led3 nối với 74LS374 (U5) điều khiển chân P1.0 nên để hiển thị Led3, cần phải: - Xuất liệu P0 Kích xung chân P1.0 để chốt liệu Phạm Hùng Kim Khánh o Trang 104 Giáo trình Vi điều khiển Định địa CGRAM Định địa DDRAM Các ứng dụng dựa vi điều khiển MCS-51 0 AC5 AC4 AC3 AC2 AC1 AC0 0 AC6 AC5 AC4 AC3 AC2 AC1 AC0 Đọc BF địa hành BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 Ghi liệu D7 D6 D5 D4 D3 D2 D1 D0 Đọc liệu 1 D7 D6 D5 D4 D3 D2 D1 D0 y u g I/D: Increment/Decrement R/L: Right/Left F: Font type n e F = 0: ký tự 5x7 F = 1: ký tự 5x10 Xác định địa CGRAM Xác định địa DDRAM Xác định địa hành kiểm tra xem gởi lệnh tiếp hay không BF = 1: không BF = 0: Ghi liệu vào DDRAM hay CGRAM Đọc liệu từ DDRAM hay CGRAM i d u t S 39µs 43µs 43µs S: Screen S/C: Screen/Cursor DL: Data Length N: Line number AC: Address Counter Các giá trị thường dùng mô tả sau: 01H 02H 04H 06H 05H 07H 08H 0AH 0CH 0EH 0FH 10H 14H 18H N Bảng 4.9 – Các lệnh thường dùng Lệnh Mơ tả Xóa hình hình Trở đầu chuỗi Dịch trỏ sang trái Dịch trỏ sang phải Dịch hình sang phải Dịch hình sang trái Tắt trỏ, tắt hiển thị Tắt hiển thị, bật trỏ Bật hiển thị, tắt trỏ Bật hiển thị, nhấp nháy trỏ Tắt hiển thị, nhấp nháy trỏ Dịch vị trí trỏ sang trái Dịch vị trí trỏ sang phải Dịch tồn hình sang trái h it m S Phạm Hùng Kim Khánh o 39µs Trang 121 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 1CH 80H C0H 38H Dịch toàn hình sang phải Đưa trỏ đầu dòng Đưa trỏ đầu dòng Xác lập chế độ dòng độ phân giải chữ 5x7 U9 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 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 h it 30 29 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 N ALE/PROG PSEN m S y u g XTAL1 XTAL2 EA/VPP RST 39 38 37 36 35 34 33 32 LAMP A K GND VCC EN R/W RS CONST n e 10 11 12 13 14 D0 D1 D2 D3 D4 D5 D6 D7 THIS IS THE LCD LINES x 16 CHARACTERS 15 16 1602 VCC 19 18 31 AT89C51 Hình 4.18 – Kết nối LCD 89C51 Giải bit liệu LCD nối với P1 → chế độ bit Yêu cầu dòng → chế độ dòng Chương trình thực sau: EN RS BIT BIT Phạm Hùng Kim Khánh o i d u t S dụ 1: Cho sơ đồ kết nối LCD 1602A với AT89C51 hình vẽ Viết chương trình hiển thị chuỗi “KHOA DIEN – DIEN TU” dòng “BO MON DIEN TU – VIEN THONG” dòng P2.2 P2.0 Trang 122 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 RW BIT P2.1 LCD_DATA EQU P1 ; -main: MOV LCD_DATA,#38h ; đặt chế độ dòng CALL write_command MOV LCD_DATA,#0Ch ; bật hiển thị CALL write_command MOV LCD_DATA,#01h CALL write_command ;xố hình i d u t S o MOV LCD_DATA,#80h ; Chuyển địa 00h (dòng 1) CALL write_command MOV DPTR,#Line1 CALL write ; Ghi vao DDRAM n e MOV LCD_DATA,#0C0h ; Chuyển địa 40h (dòng 2) CALL write_command MOV DPTR,#Line2 CALL write ; Ghi vao DDRAM y u g SJMP $ ; -write: CLR A MOVC A,@A+DPTR CJNE A,#0FFh,write1;Nếu giá trị 0FFh hết chuỗi RET write1: MOV LCD_DATA,A call write_data INC DPTR SJMP write ; -write_command: CLR RS CLR RW CLR EN NOP h it N m S Phạm Hùng Kim Khánh Trang 123 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 SETB EN NOP CLR EN CALL Delay RET ; -write_data: SETB RS CLR RW CLR EN NOP SETB EN NOP CLR EN CALL Delay RET ; -Delay: PUSH 07h PUSH 06h MOV R6,#50 MOV R7,#255 DJNZ R7,$ DJNZ R6,$-4 POP 06h POP 07h RET ; -Line1: DB 'KHOA DIEN – DIEN TU', 0FFh Line2: DB 'BO MON DIEN TU – VIEN THONG', 0FFH END h it N y u g n e i d u t S m S dụ 2: Yêu cầu giống dụ 1s dịch chuỗi sang trái ký tự Giải Chương trình thực thêm phần xử lý ngắt cho timer 0: định thời 1s dịch chuỗi sang trái (nghĩa dịch tồn hình sang phải) Theo bảng 4.9, lệnh cần gởi LCD có mã lệnh 1Ch Chương trình thực sau: Phạm Hùng Kim Khánh o Trang 124 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 … ORG 0000h LJMP main ORG 000Bh LJMP Timer0_ISR Main: MOV IE,#82h ; Cho phép ngắt Timer MOV TMOD,#01h MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV R7,#20 SETB TR0 … Timer0_ISR: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) DJNZ R7,exitTimer0 MOV R7,#20 MOV LCD_DATA,#1Ch ;Dịch tồn hình sang phải CALL write_command exitTimer0: RETI … END N y u g n e i d u t S dụ 3: Cho mạch kết nối LCD hình 4.18, viết chương trình xuất chuỗi “Khoa Điện – Điện tử” dòng “Bộ mơn Điện tử - Viễn thơng” dòng h it Giải dụ yêu cầu ký tự khơng có bảng mã nên phải định nghĩa thêm CGRAM Các ký tự cần định nghĩa là: Đ, ệ, ử, ộ, ô, ễ, tổng cộng ký tự (có thể thực LCD 1602A cho phép định nghĩa tối đa ký tự) m S Phạm Hùng Kim Khánh o Trang 125 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 Địa liệu tương ứng là: Địa 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh h it m S 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 N Dữ liệu 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 Ký tự Mã DDRAM 1Eh 09h 09h 1Dh 09h 09h 1Eh 00h 04h 0Eh 11h 1Eh 10h 0Fh 04h 00h 08h 05h 09h 12h 12h 12h 0Ch 00h 04h 0Ah 0Eh 11h 11h 0Eh 04h 00h y u g 00h ệ 01h 02h ộ 03h n e o i d u t S Đ       Phạm Hùng Kim Khánh Trang 126 Giáo trình Vi điều khiển Địa 20h 21h 22h 23h 24h 25h 26h 27h 28h 29h 2Ah 2Bh 2Ch 2Dh 2Eh 2Fh Các ứng dụng dựa vi điều khiển MCS-51 0 1 0 1 0 1 0 0 Dữ liệu 0 1 0 0 1 0 0 0 1 1 1 1 1 Ký tự Mã DDRAM 04h 0Ah 0Eh 11h 11h 0Eh 00h 00h 05h 0Eh 0Ah 1Fh 1Fh 10h 1 1 0Fh 0 0 00h y u g Chương trình thực sau: 04h ễ 05h n e o i d u t S EN BIT P2.2 RS BIT P2.0 RW BIT P2.1 LCD_DATA EQU P1 ; -org ljmp main main: MOV LCD_DATA,#38h CALL write_command h it N MOV LCD_DATA,#0Ch CALL write_command m S MOV LCD_DATA,#01h CALL write_command ;xoá hình MOV LCD_DATA,#40h call write_command MOV DPTR,#cgram_data CALL write ; Địa đầu CGRAM ; 00h Phạm Hùng Kim Khánh Trang 127 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 MOV LCD_DATA,#80h CALL write_command MOV DPTR,#Line1 CALL write o MOV LCD_DATA,#0C0h CALL write_command MOV DPTR,#Line2 CALL write i d u t S here:SJMP here ; -write: CLR A MOVC A,@A+DPTR CJNE A,#0FFh,write1 RET write1: MOV LCD_DATA,A call write_data INC DPTR SJMP write ; -Delay: PUSH 07h PUSH 06h MOV R6,#50 MOV R7,#255 DJNZ R7,$ DJNZ R6,$-4 POP 06h POP 07h RET ; -write_command: CLR RS CLR RW CLR EN NOP SETB EN NOP h it N y u g n e m S Phạm Hùng Kim Khánh Trang 128 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 CLR EN SJMP wait ; -write_data: SETB RS CLR RW CLR EN NOP SETB EN NOP CLR EN wait: call delay ret n e o i d u t S ; Line1: DB 'Khoa ',00h,'i',01h,'n - ',00h,'i',01h,'n t',02h,0FFh ; Chuỗi ‘Khoa Điện – Điện tử’ Line2: DB 'B',03h,' m',04h,'n ',00h,'i',01h,'n t',02h,' vi',05h,'n th',04h,'ng', 0FFH ; Chuỗi ‘Bộ môn Điện tử Viễn thông’ ; cgram_data: DB 1Eh,09h,09h,1Dh,09h,09h,1Eh,00h ; Chữ Đ DB 04h,0Eh,11h,1Eh,10h,0Fh,04h,00h ; Chữ ệ DB 08h,05h,09h,12h,12h,12h,0Ch,00h ; Chữ DB 04h,0Ah,0Eh,11h,11h,0Eh,04h,00h ; Chữ ộ DB 04h,0Ah,0Eh,11h,11h,0Eh,00h,00h ; Chữ ô DB 05h,0Eh,0Ah,1Fh,1Fh,10h,0Fh,00h ; Chữ ễ DB 0FFh END h it N y u g Giao tiếp với PPI8255 m S PPI8255 IC giao tiếp lập trình được, cho phép mở rộng port trường hợp port 89C51 không đủ dùng Các chế độ hoạt động 8255 tham khảo thêm Giáo trình Vi xử lý (cùng tác giả) 8255 có tổng cộng chế độ: BSR (Bit Set/Reset) I/O (Input/Output) I/O chia thành chế độ khác nhau, tron tài liệu xét chế độ (xuất/nhập bản) 8255 có tổng cộng port, port bit port C chia thành bit cao bit thấp tạo thành nhóm: nhóm A (PA + PCH) nhóm B (PB PCL) Phạm Hùng Kim Khánh Trang 129 Giáo trình Vi điều khiển 34 33 32 31 30 29 28 27 36 35 Các ứng dụng dựa vi điều khiển MCS-51 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 8255 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 D7 – D0: bus liệu 40 39 38 37 PA7 – PA0: Port A PB7 – PB0: Port B o PC7 – PC0: Port C 18 19 20 21 22 23 24 25 i d u t S A1, A0: giải mã RESET: ngõ vào Reset 14 15 16 17 13 12 11 10 CS : Chip Select RD : Read Hình 4.19 – Sơ đồ chân 8255 Để điều khiển 8255, bên có ghi điều khiển (CR – Control Register) cho phép chọn chế độ hoạt động Nội dung CR sau: Nhóm A PCH (PC7 ÷ PC4) 1: Input h it 0: Output m S N D6 D5 D4 y u g n e D3 D2 D1 D0 Nhóm B PCL (PC3 ÷ PC0) 1: Input 0: Output PA PB 1: Input 1: Input 0: Output Hình 4.20 – Dạng từ điều khiển cho 8255A chế độ I/O Phạm Hùng Kim Khánh Trang 130 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 D7 D6 D5 D4 x x X Mode BSR D3 D2 D1 D0 S/R Chọn bit 0: Xố (Reset) 000: PC0 1: Đặt (Set) Khơng sử dụng 001: PC1 010: PC2 011: PC3 100: PC4 101: PC5 110: PC6 111: PC7 i d u t S Hình 4.21 - Dạng từ điều khiển cho 8255A chế độ BSR n e Lưu ý cần Set/Reset bit phải gởi liệu CR không gởi PC y u g Như vậy, để xác lập điều khiện làm việc cho 8255, cần thực định cấu hình cho 8255 (chọn chế độ hoạt động cho PA, PB PC) Để thực trình này, cần tác động đến CR 8255 Logic chọn port cho 8255 mô tả sau: Bảng 4.10 – Logic chọn port 8255 CS N A0 Chọn Port A Port B Port C 1 Thanh ghi điều khiển x x 8255A không hoạt động h it A1 0 m S dụ: Cho mạch kết nối AT89C51 8255 hình 4.22 Viết chương trình điều khiển theo yêu cầu: - Nhấn SW1: sáng Led trái sáng Lamp - Nhấn SW2: sáng Led phải tắt Lamp Giải Phạm Hùng Kim Khánh o Trang 131   WR RD 30 29 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD ALE/PROG PSEN P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 XTAL1 XTAL2 EA/VPP RST D0 D1 D2 D3 D4 D5 D6 D7 ALE 11 U13 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 74LS373 g 31 U11 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 h it m S G1 G2A G2B N 12 15 16 19 A0 A1 A2 A3 A4 A5 A6 A7 D0 D1 D2 D3 D4 D5 D6 D7 34 33 32 31 30 29 28 27 A0 A1 n e y u LE OE 19 18 AT89C51 VCC 13 14 17 18 RD WR 35 36 S D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 A0 A1 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 RESET RD WR CS PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 40 39 38 37 18 19 20 21 22 23 24 25 RN6 16 15 14 13 12 11 10 220 R20 10K VCC R21 10K SW1 14 15 16 17 13 12 11 10 SW2 220V RL1 8255 D79 VCC 74LS138 Trang 132 Hình 4.22 – Sơ đồ kết nối 89C51 với 8255 D78 LAMP Các ứng dụng dựa vi điều khiển MCS-51 ALE 10 11 12 13 14 15 16 17 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 U12 D0 D1 D2 D3 D4 D5 D6 D7 39 38 37 36 35 34 33 32 D72 U10 D71 Giáo trình vi điều khiển Phạm Hùng Kim Khánh ADDRESS BUS 21 22 23 24 25 26 27 28 i d u t DATA BUS o VCC Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 Do PA điều khiển Led, PCL điều khiển công tắc nhấn, PCH điều khiển RL1 nên PA xuất, PCL nhập PCH xuất (còn PB tuỳ ý) Nội dung ghi điều khiển sau: 0 0 0 81h I/O Chế độ PA xuất PCH xuất Chế độ PB xuất PCL nhập o i d u t S Led đơn nối với bit PA cathode anode nối với Vcc nên để Led sáng liệu PA Led tắt liệu Đèn LAMP điều khiển RL1: RL1 đóng (ứng với PC7 = 0) LAMP sáng ngược lại, RL1 ngắt (ứng với PC7 = 1) LAMP tắt Nội dung ghi điều khiển điều khiển PC7 sau: PC7 = 0 0 1 0Eh BSR Không dùng PC7 =0 PC7 = n e 0 0 1 1 0Fh BSR Không dùng PC7 =1 y u g Công tắc SW1, SW2 nối với PC0 PC1: nhấn cơng tắc chân tương ứng PC = khơng nhấn = Do đó, để kiểm tra cơng tắc có nhấn hay khơng đọc liệu từ PCL kiểm tra tương ứng bit PC0, PC1 N Địa port 8255: h it CS = (Y6 = 0) Tuỳ ý A1 A0 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 X X X X X X X X X X X 0 1 1 m S Port Địa hex A B C CR C000h C001h C002h C003h Chương trình thực sau: MOV DPTR,#0C003h ; Địa CR MOV A,#81h; PA: xuất, PB: xuất, PCH: xuất, PCL: nhập MOVX @DPTR,A ; Xuất CR Begin: MOV DPTR,#0C002h ; Địa PC Phạm Hùng Kim Khánh Trang 133 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 MOVX A,@DPTR JNB ACC.0,SW1 JNB ACC.1,SW2 SJMP begin ; Đọc vào ; Nếu PC0 = đến SW1 ; Nếu PC1 = đến SW2 CALL Delay MOV A,11110000b MOV DPTR,#0C000h MOVX @DPTR,A ; Tránh rung phím ; Sáng Led trái ; Địa PA (do PA nối với Led) MOV A,0Eh MOV DPTR,#0C003h MOVX @DPTR,A SJMP begin ; PC7 = → đóng RL1 → sáng LAMP ; Địa CR (do dùng chế độ BSR) o SW1: SW2: CALL Delay MOV A,00001111b MOV DPTR,#0C000h MOVX @DPTR,A n e i d u t S ; Sáng Led phải ; Địa PA (do PA nối với Led) y u g MOV A,0Fh ; PC7 = → đóng RL1 → sáng LAMP MOV DPTR,#0C003h ; Địa CR (do dùng chế độ BSR) MOVX @DPTR,A SJMP begin ; -Delay: MOV TMOD,#02h MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET END h it N m S Phạm Hùng Kim Khánh Trang 134 Giáo trình Vi điều khiển Các ứng dụng dựa vi điều khiển MCS-51 BÀI TẬP CHƯƠNG Cho sơ đồ kết nối hình 4.3 Viết chương trình sáng Led theo yêu cầu: sáng Led từ phải sang trái thực lần; nhấp nháy Led lần; sáng Led từ vào trong, lần Led thực lần (thời gian trì hoãn lần sáng 300ms, dùng timer 1) i d u t S Cho sơ đồ kết nối hình 4.7 Viết chương trình tăng nội dung ô nhớ 30h từ 00 – 99 hiển thị giá trị Led đoạn (hiển thị Led ngắt timer thời gian trì hỗn tăng nội dung ô nhớ 30h 1s dùng ngắt timer 0) Cho sơ đồ kết nối hình 4.7 kết nối thêm Led (Led2 – 6) điều khiển bit P1: P1.2 – P1.5 Viết chương trình hiển thị giờ, phút giây Led (Led1,2: giờ; Led3,4: phút; Led5,6: giây) chứa nhớ 30h, phút ô nhớ 31h, giây ô nhớ 32h (thời gian trì hỗn 1s dùng ngắt timer 0, qt Led dùng ngắt timer 1) n e Cho sơ đồ kết nối hình 4.11 Viết chương trình cho chuỗi “DAI HOC KY THUAT CONG NGHE TPHCM” di chuyển từ trái sang phải ma trận Led y u g Cho sơ đồ kết nối hình 4.14 Viết chương trình điều khiển động quay thuận 100 vòng với tốc độ 10 vòng/phút (giả sử bước có góc quay 7.20) N Cho sơ đồ kết nối hình 4.18 Viết chương trình cho chuỗi “Đại học Kỹ thuật Cơng nghệ” dòng “Khoa Điện – Điện tử” dòng di chuyển từ trái sang phải (thời gian dịch chuyển 300ms dùng ngắt timer 1) h it m S Phạm Hùng Kim Khánh o Trang 135 ... trí Led hành Trang 102 Giáo trình Vi điều khi n Các ứng dụng dựa vi điều khi n MCS- 51 Ví dụ 3: Vi t chương trình hi n thị n i dung nhớ 30h Led Led1 chứa số hàng chục Led2 chứa số hàng đ n vị (giả... anode chung Q2, Q3 transistor PNP n n để Led sáng liệu tương ứng ch n điều khi n (P1.0, P1.1) phải m S Theo sơ đồ kết n i, ch n g Led n i với P0.6, ch n a n i với P0.0 n n bảng mã Led bảng 4. 2,... quét đủ nhanh ta thấy giống cột sáng đồng thời Phạm Hùng Kim Khánh Trang 107 Giáo trình Vi điều khi n Các ứng dụng dựa vi điều khi n MCS- 51 o h it m S N Hình a Phạm Hùng Kim Khánh y u g n e i

Ngày đăng: 27/02/2018, 21:58

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan