Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 128 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
128
Dung lượng
3,02 MB
Nội dung
ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI TRỊNH THỊ HẠNH(Chủ biên) TẠ VĂN BẰNG – BÙI VĂN CƠNG GIÁO TRÌNH VI ĐIỀU KHIỂN Nghề: Cơ điện tử Trình độ: Cao đẳng (Lưu hành nội bộ) Hà Nội - Năm 2019 LỜI NÓI ĐẦU Để cung cấp tài liệu học tập cho học sinh - sinh viên tài liệu cho giáo viên giảng dạy, Điện tử Trường CĐN Việt Nam - Hàn Quốc thành phố Hà Nội chỉnh sửa, biên soạn giáo trình “VI ĐIỀU KHIỂN” dành riêng cho học sinh sinh viên nghề Cơ điện tử Đây mô đun chương trình đào tạo nghề Cơ điện tử trình độ Cao đẳng Nhóm biên soạn tham khảo tài liệu: “vi điều khiển ” dùng cho sinh viên Trường Cao đẳng, Đại học kỹ thuật tác giả Sổ tay linh kiện điện tử cho người thiết kế mạch Giáo trình linh kiện điện tử ứng dụng Sổ tay tra cứu tranzito Nhật Bản (Nguyễn Kim Giao, Lê Xuân Thế Kỹ thuật VXL & lập trình ASSEMBLY cho hệ VXL - Đỗ Xuân Tiến – NXB KH&KT - 200 Họ VĐK 8051 Tống Văn On & Hoàng Đức Hải - NXB LĐXH – 2001 nhiều tài liệu khác Mặc dù nhóm biên soạn có nhiều cố gắng khơng tránh thiếu sót Rất mong đồng nghiệp độc giả góp ý kiến để giáo trình hồn thiện Xin chân thành cảm ơn! Hà Nội, ngày … tháng … năm 2019 Chủ biên: Trịnh Thị Hạnh MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC GIÁO TRÌNH MƠ ĐUN Bài Cấu trúc họ vi điều khiển 8051 Mục tiêu 1.1 Tổng quan 1.2 Sơ đồ chân 1.3 Cấu trúc Port I/O 1.4 Tổ chức nhớ 11 1.5 Các ghi chức đặc biệt 17 1.7 Các cải tiến 8032/8052 28 1.8 Hoạt động Reset 28 1.9 Thực hành ứng dụng 29 Bài 36 Tập lệnh 8051 36 2.1 Mở đầu 36 2.2 Các cách định địa 39 2.3 Các nhóm lệnh 45 2.4 Thực hành 74 Bài 82 Bộ định thời 82 3.1 Mở đầu 82 3.2 Thanh ghi SFR timer 84 3.3 Các chế độ làm việc 86 3.4 Nguồn cung cấp xung cho Timer 88 3.5 Khởi tạo truy xuất ghi Timer 88 3.6 Thực hành 91 Bài 97 Cổng nối tiếp 97 4.1 Thanh ghi điều khiển 97 4.2 Chế độ làm việc 98 4.3 Khởi tạo truy xuất ghi PORT nối tiếp 104 4.4 Truyền thông đa xử lý 106 4.5 Thực hành 113 TÀI LIỆU THAM KHẢO 127 GIÁO TRÌNH MƠ ĐUN Tên mơ đun: Vi điều khiển Mã số mô đun: MĐ 43 Thời gian mô đun: 60 (LT: 18 giờ; TH/TT/TN/BT/TL: 42 giờ) I Vị trí, tính chất mơ đun - Vị trí: Mơ đun Vi điều khiển mơ đun bố trí dạy sau học xong môn học mô đun: Kỹ thuật xung số điện tử bản, điện tử nâng cao, điện tử công suất, học trước môn vi mạch số lập trình - Tính chất: Là mơ đun chun môn nghề II Mục tiêu mô đun - Kiến thức: + Vận hành thiết bị dây chuyền sản xuất dùng vi điều khiển + Xác định nguyên nhân gây hư hỏng xảy thực tế - Kỹ + Kiểm tra viết chương trình điều kiển + Trình bày cấu trúc, ứng dụng vi điều khiển công nghiệp + Kiểm tra viết chương trình điều kiển +Vận hành thiết bị dây chuyền sản xuất dùng vi điều khiển + Xác định nguyên nhân gây hư hỏng xảy thực tế - Năng lực tự chủ, trách nhiệm: + Rèn luyện thái độ nghiêm túc, cẩn thận, xác học tập thực cơng việc III Nội dung mô đun Nội dung tổng quát phân bổ thời gian Thời gian Số TT Tên mô đun Cấu trúc họ vi điều khiển 8051 Tổng số Thực hành Lý thuyết Kiểm tra+ 12 6 18 12 18 12 1 Tổng quan Sơ đồ chân Cấu trúc Port I/O Tổ chức nhớ Các ghi chức đặc biệt Bộ nhớ Các cải tiến 8032/8052 Hoạt động Reset Thực hành ứng dụng Tập lệnh 8051 Mở đầu Các cách định địa Các nhóm lệnh Thực hành Kiểm tra Bộ định thời Mở đầu Thanh ghi SFR timer Các chế độ làm việc Nguồn cung cấp xung cho Timer Khởi động, dừng, điều khiển Timer Thực hành Kiểm tra Cổng nối tiếp 12 11 1 Thanh ghi điều khiển Chế độ làm việc Khởi tạo truy suất ghi PORT nối tiếp Truyền thông đa xử lý Thực hành Kiểm tra Cộng 60 18 39 Bài Cấu trúc họ vi điều khiển 8051 Mục tiêu - Mô tả cấu trúc họ vi điều khiển chuẩ công nghiệp - Thực truy xuất nhớ liệu, nhớ chương trình qui trình kỹ thuật - Thực kỹ thuật phương pháp mở rộng nhớ - Trình bày nguyên lý hoạt động mạch reset - Nghiêm túc, cẩn thận, xác học tập thực công việc 1.1 Tổng quan Khoa học kỹ thuật ngày phát triển mạnh mẽ, công nghệ thuộc lĩnh vực khác nhờ đời nhằm đáp ứng nhu cầu xã hội kỹ thuật Vi điều khiển nằm số Hiện kỹ thuật Vi xử lý giảng dạy rộng rãi trường Đại học Cao đẳng nước, nhiên lĩnh vực Vi điều khiển mẻ, ứng dụng chưa khai thác triệt để hệ thống điều khiển, đo lường điều chỉnh dây chuyền cơng nghiệp Qua q trình tham gia giảng dạy trường Đại học SPKT Hưng yên thời gian học tập nâng cao CHLB Đức, tác giả tập trung nghiên cứu biên soạn giáo trình kỹ thuật Vi điều khiển nhằm phục vụ công việc giảng dạy lĩnh vực trường Toàn nội dung giáo trình chia làm phần Phần bao gồm kiến thức phần cứng tập lệnh họ Vi điều khiển 80C51/ AT89C51 phần tác giả tập trung trình bày phần cứng họ Vi điều khiển 80C52/ AT89S8252 kỹ thuật lập trình hợp ngữ Đối tượng giáo trình sinh viên ngành Điện, Điện tử, Cơ điện tử, Công nghệ thông tin Tuy nhiên để tiếp thu tốt nội dung từ giáo trình này, người học cần có kiến thức kỹ thuật số, kỹ thuật mạch điện tử biết qua ngơn ngữ lập trình cấp cao Pascal, C… Mặc dù cố gắng trình biên soạn, trình độ thời gian cịn bị hạn chế nên chắn giáo trình khơng tránh khỏi thiếu sót, mong nhận ý kiến đóng góp, phê bình bạn đọc 1.2 Sơ đồ chân Hình 1.1 IC 80C51/AT89C51 Hình 1.1 sơ đồ chân 8051 Chức chân tín hiệu sau: - P0.0 đến P0.7 chân cổng - P1.0 đến P1.7 chân cổng - P2.0 đến P2.7 chân cổng - P3.0 đến P3.7 chân cổng - RxD: Nhận tín hiệu kiểu nối tiếp - TxD: Truyền tín hiệu kiểu nối tiếp - /INT0: Ngắt - /INT1: Ngắt - T0: Chân vào Timer/Counter - T1: Chân vào Timer/Counter - /Wr: Ghi liệu vào nhớ - /Rd: Đọc liệu từ nhớ - RST: Chân vào Reset, tích cực mức logic cao khoảng chu kỳ máy - XTAL1: Chân vào mạch khuyếch đaị dao động - XTAL2: Chân từ mạch khuyếch đaị dao động - /PSEN : Chân cho phép đọc nhớ chương trình ngồi (ROM ngồi) - ALE (/PROG): Chân tín hiệu cho phép chốt địa để truy cập nhớ ngoài, On-chip xuất byte thấp địa Tín hiệu chốt kích hoạt mức cao, tần số xung chốt = 1/6 tần số dao động VĐK Nó dùng cho Timer ngồi cho mục đích tạo xung Clock Đây chân nhận xung vào để nạp chương trình cho Flash (hoặc EEPROM) bên On-chip mức thấp - /EA/Vpp: Cho phép On-chip truy cập nhớ chương trình ngồi /EA=0, /EA=1 On-chip làm việc với nhớ chương trình nội trú Khi chân cấp nguồn điện áp 12V (Vpp) On-chip đảm nhận chức nạp chương trình cho Flash bên - Vcc: Cung cấp dương nguồn cho On-chip (+ 5V) - GND: nối mát 1.3 Cấu trúc Port I/O 1.3.1 Port - Port (P0.0 – P0.7) có số thứ tự chân từ 32 – 39 Port có hai chức năng: - Port xuất/nhập liệu (P0.0 - P0.7) cho thiết kế vi điều khiển khơng sử dụng nhớ bên ngồi - Bus địa byte thấp bus liệu đa hợp (AD0 – AD7) cho thiết kế vi điều khiển có sử dụng nhớ bên ngồi - Khi ALE = Port đóng vai trị bus liệu (D0 – D7) a) 9600 b) 4800 SMOD = tần số XTAL = 11.0592MHz Lời giải: Với tần số XTAL = 11.0592MHz SMOD = ta có tần số cấp cho Timer1 57.6kHz a) 57.600/9600 = TH1 = - hay TH1 = FAH b) 57.600/4800 = 12 TH1 = - 12 hay TH1 = F4H 4.5 Thực hành 4.5.1 Thực hành theo ngôn ngữ ASM Bài Điều khiển khối LED đơn : ORG Bài 2: Chương trình đếm 000 đến 255 dùng ngắt 000H ORG 000H MOV TMOD,#05H ORG 0030H MOV TH0,#0 MAIN: MOV TL0,#0 LCALL TURN_ON_OFF CLR TF0 LCALL FLASH_SINGLE_LED SETB TR0 LCALL FLASH_LED MAIN: CALL HEX_BCD LCALL SHIFT_LEFT_RIGHT CALL BCD_7DOAN LCALL CALL HIENTHI INCREMENT_LEFT_RIGHT JMP MAIN SJMP $ ;******************************* ;********************************* ************** ****************** LJMP MAIN 113 HEX_BCD: MOV A,TL0 MOV 36H,#5 MOV B,#10 LOOP_INC_LR: DIV AB MOV P1,#11111111B MOV 10H,B ;LUU SO HANG INC_LEFT: DV CLR C MOV B,#10 DIV AB MOV A,P1 MOV 11H,B ;LUU SO HANG RLC A CHUC MOV P1,A MOV 12H,A ;LUU SO LCALL DELAY_50MS HANG TRAM CJNE A,#0,INC_LEFT RET MOV P1,#11111111B ;******************************* ************** INC_RIGHT: BCD_7DOAN: CLR C MOV DPTR,#MA7DOAN MOV A,P1 MOV R0,#10H RRC A MOV R1,#20H MOV P1,A GM: MOV A,@R0 LCALL DELAY_50MS MOVC A,@A+DPTR MOV @R1,A CJNE A,#0,INC_RIGHT INC R0 DJNZ 36H,LOOP_INC_LR INC R1 MOV P1,#0FFH CJNE R0,#13H,GM RET RET ;********************************* ;******************************* ******************* ************** SHIFT_LEFT_RIGHT: HIENTHI: MOV 35H,#5 MOV R0,#20H MOV A,#08H LOOP_SHIFT_LR: HT: MOV P0,@R0 MOV P1,#11111110B MOV P2,A LOOP_SHIFT_L: CALL DELAY MOV A,P1 MOV P2,#00H ;CHONG RL A LEM INCREMENT_LEFT_RIGHT: 114 INC R0 RR A LCALL DELAY_50MS CJNE A,#01H,HT CJNE A,#01111111B,LOOP_SHIFT_L RET LOOP_SHIFT_R: ;******************************* MOV A,P1 ************** RR A DELAY: MOV R7,#0FFH MOV P1,A DJNZ R7,$ LCALL DELAY_50MS RET CJNE ;******************************* A,#11111110B,LOOP_SHIFT_R ************** DJNZ 35H,LOOP_SHIFT_LR MA7DOAN: MOV P1,#0FFH DB RET 0C0H,0F9H,0A4H,0B0H,99H,92H,82 ;********************************* H,0F8H,80H,90H END ****************** FLASH_LED: Bài 3: Viết chương trình điều khiển 16 MOV 34H,#100 LED sáng dần? LOOP_FL: MOV P1,A MOV A,P1 Chương trình mẫu: ORG 000H MAIN: MOV P1,A MOV P0,#0FFH ;8 LED P0 LCALL DELAY_50MS TAT DJNZ 34H,LOOP_FL MOV P2,#0FFH ;8 LED P2 RET TAT ;********************************* LOOP: CALL DELAY MOV A,P0 ****************** CLR C FLASH_SINGLE_LED: RLC A MOV 33H,#100 MOV P0,A LOOP_FLS: MOV A,P2 CPL P1.0 ; COMPLEMENT RLC A BIT MOV P2,A LCALL DELAY_50MS JC LOOP DJNZ 33H,LOOP_FLS CPL A ; COMPLEMENT A 115 JMP MAIN ;********************************* ;******************************* ****************** TURN_ON_OFF: *******CHUONG TRINH CON DELAY CLR P1.0 ; TURN ON DELAY: LCALL DELAY_5S MOV R0,#0FFH SETB P1.0 ; TURN OFF RET DEL: MOV R1,#0FFH ;********************************* DJNZ R1,$ ****************** DELAY_5S: DJNZ R0,DEL RET MOV 32H,#5 RET END LOOP_DL5S: LCALL DELAY_1S DJNZ 32H,LOOP_DL5S RET ;********************************* ****************** DELAY_1S: MOV 31H,#20 LOOP_DL1S: LCALL DELAY_50MS DJNZ 31H,LOOP_DL1S RET ;********************************* ****************** DELAY_500MS: MOV 30H,#10 LOOP_DL500MS: LCALL DELAY_50MS DJNZ 30H,LOOP_DL500MS RET ;********************************* ****************** DELAY_50MS: MOV TMOD,#00000001B TIMER 16 BIT SETB TR0 JNB ; TF0,$ 116 CLR TF0 CLR TR0 MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) RET Bài 4: Viết chương trình điều khiển LED chớp tắt Bài 5: Viết chương trình điều khiển động bước? Chương trình mẫu: ORG 000H MAIN: MOV P0,#00H CALL DELAY MOV P0,#0FFH CALL DELAY JMP MAIN Chương trình mẫu ORG 000H ;*****************************Chu ong trinh Delay DELAY: MOV R0,#0FFH DEL: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DEL RET END 4.5.2 Thực hành theo ngôn ngữ KeilC Điều khiển led MATRIX 117 MAIN: MOV A,#0FEH LOOP: MOV P2,A CALL DELAY RL A CJNE A,#0F7H,LOOP JMP MAIN ;******************************* ******* DELAY: MOV R6,#0FFH DEL: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL RET END 118 119 120 Chương trình hiển thị ký tự A led ma trận #include #define Hang P0 #define Cot P1 void delay() { TMOD=0x01; TH0=0xFB; TL0=0x00; TR0=1; while(1){ if(TF0==1) break; } TR0=0; TF0=0; 121 } main() { while(1) { Hang=0xE0; Cot=0x02; delay(); Hang=0xDB; Cot=0x04; delay(); Hang=0xBB; Cot=0x08; delay(); Hang=0xDB; Cot=0x10; delay(); Hang=0xE0; Cot=0x20; delay(); } } Bài tập nhà: Viết chương trinh hiển thị chữ CĐT – Khoa Điện tử 122 123 Viết chương trình hiển thị dịng thứ cho LCD “A, B, C, D” #include #define RS P3_0 #define RW P3_1 //RW=0 => ghi #define EN P3_2 //RW=1 => doc //RS=0 => code //RS=1 => data #define LCD_PORT P1 void delay_5ms() { int i,j; for(i=0;i