Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 185 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
185
Dung lượng
2,96 MB
Nội dung
BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH GIÁO TRÌNH MƠ ĐUN: KỸ THUẬT VI ĐIỀU KHIỂN NGHỀ: ĐIỆN CƠNG NGHIỆP TRÌNH ĐỘ: CAO ĐẲNG (Ban hành kèm theo Quyết định số: ………………., ngày … tháng …… năm 2017 Hiệu trưởng trường Cao đẳng Cơ giới Ninh Bình) Năm 2019 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Giáo trình Vi điều khiển biên soạn sở chương trình giảng dạy theo chương trình khung Tổng cục Dạy nghề Khi biên soạn, nhóm biên soạn cố gắng cập nhật kiến thức có liên quan đến nội dung chương trình đào tạo phù hợp với mục tiêu đào tạo, nội dung lý thuyết thực hành biên soạn gắn với nhu cầu thực tế sản xuất đồng thời có tính thực tiễn cao Nội dung giáo trình biên soạn với dung lượng thời gian đào tạo 150 gồm có: Bài 1: Sơ lược lịch sử hướng phát triển vi điều khiển Bài 2: Cấu trúc họ vi điều khiển 8051 Bài 3: Tập lệnh 8051 Bài 4: Bộ định thời Bài 5: Cổng nối tiếp Bài 6: Ngắt Bài 7: Phần mềm hợp ngữ Trong trình sử dụng giáo trình, tuỳ theo yêu cầu khoa học công nghệ phát triển điều chỉnh thời gian bổ sung kiên thức cho phù hợp Trong giáo trình, chúng tơi có đề nội dung thực tập để người học cố áp dụng kiến thức phù hợp với kỹ Tuy nhiên, theo điều kiện sở vật chất trang thiết bị, trường có thề sử dụng cho phù hợp Mặc dù cố gắng tổ chức biên soạn để đáp ứng mục tiêu đào tạo không tránh khiếm khuyết Rất mong nhận đóng góp ý kiến người sử dụng, người đọc để nhóm biên soạn chỉnh hồn thiện sau thời gian sử dụng Ninh Bình, ngày tháng 06 năm 2019 Nhóm tác giả Chủ biên: Tống Thanh Bình MỤC LỤC Bài 1 Bài 2 Bài3 Bài 4 Bài 5 ĐỀ MỤC Tuyên bố quyền Lời gới thiệu Sơ lược lịch sử hướng phát triển vi điều khiển Lịch sử phát triển Vi điều khiển Lĩnh vực ứng dụng Hướng phát triển Cấu trúc họ vi điều khiển 8051 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 Tổ chức 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 phương pháp định địa Các nhóm lệnh Luyện tập 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 Khởi tạo truy xuất ghi Timer Timer 8052 Luyện tập Cổng nối tiếp Mở đầu 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ý TRANG 6 11 12 13 13 16 22 25 29 32 33 33 34 40 40 42 46 75 83 83 85 88 89 90 90 93 98 103 103 105 107 113 114 Bài 6 Bài 7 Tốc độ BAUD Luyện tập Ngắt Mở đầu Tổ chức ngắt 8051 Xử lý ngắt Thiết kế chương trình dùng ngắt Ngắt cổng nối tiếp Các cổng ngắt Đồ thị thời gian ngắt Luyện tập Phần mềm hợp ngữ Mở đầu Hoạt động ASSEMBLER Cấu trúc chương trình liệu Tính biểu thức hợp dịch Các điều khiển ASSEMBLER Hoạt động liên kết MACRO Luyện tập Tài Liệu tham khảo 116 121 125 125 126 131 133 136 137 138 140 145 145 146 147 153 161 162 164 164 184 GIÁO TRÌNH VI ĐIỀU KHIỂN Mơ đun: Kỹ Thuật vi điều khiển Mã số mơ đun: MĐ 32 Vị trí, tính chất mơ đun: - Vị trí mơ đun: Mơ đun bố trí dạy sau học xong môn vi xử lý học trước môn vi mạch số lập trình - Tính chất mơ đun: Là mô đun bắt buộc Mục tiêu mô đun: - 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ế - Kiểm tra viết chương trình điều kiển Về kiến thức: - 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 khiển Về kỹ năng: - 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ế Về thái độ: - Rèn luyện cho học sinh thái độ nghiêm túc, cẩn thận, xác học tập thực công việc Bài 1:SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA VI ĐIỀU KHIỂN Mã số mô đun: MĐ -32 Giới thiệu: Trong thập niên cuối kỷ XX, từ đời cơng nghệ bán dẫn, kỹ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau tích hợp với mật độ cao cao diện tích nhỏ,nhờ thiết bị nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Bước đột phát kỹ thuật điện tử tạo thiết bị điện tử Vi điều khiển Một vi điều khiển (microcontroller) xem “một máy tính chip” – mạch điện tích hợp chip, lập trình được, dùng để điều khiển hoạt động hệ thống Vi điều khiển ứng dụng rộng rãi Đa số lĩnh vực ứng dụng vi điều khiển Và khí tự động hố có lẽ gắn liền với vi xử lý Vi điều khiển câu trúc siêu nhỏ, gồm linh kiện điện tử kích thước micro nano kết hợp với nhau, nối với thiết bị bên qua chân vi điều khiển Vì hiểu rõ cấu trúc nó, ta hiểu làm việc với gì? Và hoạt động nào? Mục tiêu bài: - Trình bày cấu trúc chung vi điều khiển - Phát biểu ứng dụng vi điều khiển hướng phát triển vi điều khiển Nội dung chính: Lịch sử xuất vi điều khiển 8051 - Năm 1976 Intel giới thiệu vi điều khiển (microcontroller) 8748, chip tương tự vi xử lý chip họ MCS-48 Độ phức tạp, kích thước khả Vi điều khiển tăng thêm bậc quan trọng vào năm 1980 intel tung chip 8051, Vi điều khiển họ MCS-51 chuẩn công nghệ cho nhiều họ Vi điều khiển sản xuất sau Chip 8051 chứa 60000 transistor bao gồm 4K byte ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Sau nhiều họ Vi điều khiển nhiều nhà chế tạo khác đưa thị trường với tính cải tiến ngày mạnh - Hiện có nhiều họ Vi điều khiển thị trường với nhiều ứng dụng khác nhau, họ Vi điều khiển họ MCS-51 sử dụng rộng rãi giới Việt nam - Vào năm 1980 Intel cơng bố chíp 8051(80C51), vi điều khiển họ vi điều khiển MCS-51 Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, port nối tiếp định thời 16 bit Tiếp theo sau đời chip 8052, 8053, 8055 với nhiều tính cải tiến - 8051 vi điều khiển bit tức CPU làm việc với bit liệu Dữ liệu lớn bit chia thành liệu bit để xử lý - 8051 trở nên phổ biến sau Intel cho phép nhà sản xuất khác (Siemens, Atmel, Philips …) sản xuất bán dạng biến thể 8051 mà họ muốn với điều kiện họ phải để mã chương trình tương thích với 8051 Từ dẫn đến đời nhiều phiên 8051 với tốc độ dung lượng ROM chip khác Bảng Dung lượng RAM Dung lượng ROM Chế độ nạp 89C51 128 byte Kbyte song song 89C52 128 byte Kbyte song song 89C53 128 byte 12 Kbyte song song 89C55 128 byte 20 Kbyte song song - Tuy nhiên, điều quan trọng có nhiều biến thể 8051, khác tốc độ, dung lượng ROM tất lệnh tương thích với 8051 ban đầu Điều có nghĩa chương trình viết cho phiên 8051 chạy với phiên khác không phụ thuộc vào hãng sản xuất Vi điều khiển 2.1 Nguyên lý, cấu tạo 2.1.1 Cấu tạo vi điều khiển - Vi điều khiển máy tính tích hợp chíp, thường sử dụng để điều khiển thiết bị điện tử Vi điều khiển thực chất gồm vi xử lý có hiệu suất đủ cao giá thành thấp (so với vi xử lý đa dùng máy tính) kết hợp với thiết bị ngoại vi nhớ, mô đun vào/ra, mô đun biến đổi từ số sang tương tự từ tương tự sang số, mô đun điều chế độ rộng xung (PWM) - Vi điều khiển thường dùng để xây dựng hệ thống nhúng Nó xuất nhiều dụng cụ điện tử, thiết bị điện, máy giặt, lị vi sóng, điện thoại, dây truyền tự động - Hầu hết loại vi điều khiển có cấu trúc Harvard loại cấu trúc mà nhớ chương trình nhớ liệu phân biệt riêng - Cấu trúc vi điều khiển gồm CPU, nhớ chương trình (thường nhớ ROM nhớ Flash), nhớ liệu (RAM), định thời, cổng vào/ra để giao tiếp với thiết bị bên ngoài, tất khối tích hợp vi mạch Các loại vi điều khiển thị trường nay: - VDK MCS-51: 8031, 8032, 8051, 8052, - VDK ATMEL: 89Cxx, AT89Cxx51 - VDK AVR AT90Sxxxx - VDK PIC 16C5x, 17C43 2.1.2 Nguyên lý hoạt động vi điều khiển Mặc dù có nhiều họ vi điều khiển phát triển nhiều chương trình điều khiển tạo cho chúng, tất chúng có số điểm chung Do ta hiểu cặn kẽ họ việc tìm hiểu thêm họ vi điều khiển hoàn toàn đơn giản Một kịch chung cho hoạt động vi điều khiển sau: Khi nguồn điện cung cấp, vi điều khiển chip có chương trình nạp sẵn vào khơng có hoạt động xảy Khi có nguồn điện, hoạt động bắt đầu xảy với tốc độ cao Đơn vị điều khiển logic có nhiệm vụ điều khiển tất hoạt động Nó khóa tất mạch khác, trừ mạch giao động thạch anh Sau mini giây tất sẵn sàng hoạt động Điện áp nguồn ni đạt đến giá trị tối đa tần số giao động trở nên ổn định Các bit ghi SFR cho biết trạng thái tất mạch vi điều khiển Toàn vi điều khiển hoạt động theo chu kỳ chuỗi xung Thanh ghi đếm chương trình (Program Counter) xóa Câu lệnh từ địa gửi tới giải mã lệnh sau thực thi Giá trị ghi PC tăng lên toàn trình lặp lại vài … triệu lần giây Các kiểu cấu trúc nhớ (Hình 1.1) Hình 1.1 Cấu trúc bên vi điều khiển - Memory (bộ nhớ): ROM/RAM lưu trữ chương trình hay kết trung gian Read Only Memory (ROM): Read Only Memory (ROM) loại nhớ sử dụng để lưu vĩnnh viễn chương trình thực thi Kích cỡ chương trình viết phụ thuộc vào kích cỡ nhớ ROM tích hợp vi điều khiển hay thêm vào chip gắn bên ngoài, tùy thuộc vào loại vi điều khiển Cả hai tùy chọn có số nhược điểm Nếu ROM thêm vào chip bên ngoài, vi điều khiển rẻ chương trình tồn lâu đáng kể Nhưng đồng thời, làm giảm số lượng chân vào/ra để vi điều khiển sử dụng với mục đích khác ROM nội thường nhỏ đắt tiền hơn, ghim thêm có sẵn để kết nối với mơi trường ngoại vi Kích thước dãy ROM từ 512B đến 64KB Random Access Memory (RAM): Random Access Memory (RAM) loại nhớ sử dụng cho liệu lưu trữ tạm thời kết trung gian tạo sử dụng trình hoạt động vi điều khiển Nội 10 MOV LCALL MOV LCALL MOV TEXT1: MOV MOVC LCALL INC CJNE MOV A,#0CH ;BAT HIEN THI,TAT CON TRO OUT_INSTRUCTION A,#80H ;DUA CON TRO VE DAU DONG THU NHAT OUT_INSTRUCTION DPTR,#BANG1 ; HIEN THI DONG TEXT THU NHAT A,#0 A,@A+DPTR OUT_DATA DPTR A,#99H,TEXT1 A,#0C0H ;DUA CON TRO VE DAU DONG THU HAI OUT_INSTRUCTION DPTR,#BANG2 ; HIEN THI DONG TEXT THU HAI A,#0 A,@A+DPTR OUT_DATA DPTR A,#99H,TEXT2 A,#0CH ;TAT CON TRO OUT_INSTRUCTION BACK_LIGHT DELAY_5S LOOP: BACK_LIGHT ; TAT DEN BACK LIGHT R0,#17 LCALL MOV TEXT2: MOV MOVC LCALL INC CJNE MOV LCALL CLR LCALL SETB MOV SHIFT_LEFT: MOV A,#18H ;DICH TOAN BO HIEN THI SANG TRAI LCALL OUT_INSTRUCTION LCALL DELAY_200MS DJNZ R0,SHIFT_LEFT ; KIEM TRA SO LAN DICH MOV R0,#17 SHIFT_RIGHT: MOV A,#1CH ;DICH TOAN BO HIEN THI SANG TRAI LCALL OUT_INSTRUCTION DELAY_200MS LCALL DJNZ R0,SHIFT_RIGHT ; KIEM TRA SO LAN DICH CLR BACK_LIGHT ; BAT DEN BACK LIGHT LCALL DELAY_1S LJMP LOOP ;*********************************************************O UT_INSTRUCTION: MOV DATA_LCD,A ;DUA MA LENH RA PORT GIAO 171 TIEP VOI LCD CLR RS ;CHON THANH GHI LENH CLR RW ;CHON CHE DO GHI SETB EN ;CHO PHEP DUA LENH RA LCD LCALL DELAY CLR EN LCALL DELAY RET OUT_DATA: MOV DATA_LCD,A ;DUA DU LIEU RA PORT GIAO TIEP VOI LCD RS ;CHON THANH GHI DU LIEU SETB CLR R W ;CHON CHE DO GHI SETB EN ;CHO PHEP DUA DU LIEU RA LCD LCALL DELAY CLR EN LCALL DELAY RET ;********************************************************* DELAY_1S: MOV 33H,#20 MOV TMOD,#00000001B LOOP_DL1S: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ 33H,LOOP_DL1S RET ;****************************************************** DELAY_5S: MOV 32H,#100 MOV TMOD,#00000001B LOOP_DL5S: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ 32H,LOOP_DL5S RET 172 ;****************************************************** DELAY_200MS: MOV 31H,#4 MOV TMOD,#00000001B LOOP_DL200MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ 31H,LOOP_DL200MS RET ;*******************************************************D ELAY: MOV 30H,#255 DJNZ 30H,$ RET BANG1: DB ' WELLCOME TO ',99H BANG2: DB 'CONTROLLER LAB!',99H END Bài tập mở rộng: Viết chương trình điều khiển hiển thị dịng text hình LCD kết hợp với nút nhấn Buzzer Nếu nút nhấn Buzzer phát âm “Beep” báo nhận phím, hình hiển thị dòng text thứ nhất,tương tự tiếp tục nhấn dịng text khác xuất hình LCD Bài Truy xuất IC real time DS12887 1.1 Mục đích, yêu cầu : Giúp sinh viên làm quen với việc truy xuất liệu thời gian từ IC real time cho ứng dụng yêu cầu thời gian thực đồng hồ báo giờ… 1.2 Chương trình tham khảo : Chương trình đồng hồ báo giờ,phút,giây,thứ ngày tháng năm cách truy xuất liệu thời gian từ Real time,cho phép khởi tạo lại Real time ;KHAI BAO BIEN RS BIT P2.3 RW BIT P2.4 EN BIT P2.5 BACK_LIGHT BIT P2.6 ENABLE_REALTIME BIT P2.7 P3.3 ENABLE_INT1 BIT DATA_LCD EQU P0 STEP_SHIFT 7FH EQU LCD_BUF EQU 173 7EH GIAY PHUT EQU EQU 7DH 7CH GIO THU NGAY THANG EQU EQU EQU EQU 7BH 7AH 79H 78H NAM DONVI_GIAY CHUC_GIAY DONVI_PHUT EQU EQU EQU EQU 77H 76H 75H 74H CHUC_PHUT DONVI_GIO CHUC_GIO DONVI_NGAY EQU EQU EQU EQU 73H 72H 71H 70H CHUC_NGAY DONVI_THANG CHUC_THANG EQU EQU EQU 6FH 6EH 6DH DONVI_NAM CHUC_NAM DATA_IN DATA_OUT EQU EQU EQU EQU 6CH 6BH 6AH 69H ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H MAIN: MOV TMOD,#00010001B MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV IE,#10000010B MOV LCALL MOV LCALL MOV LCALL LCD_BUF,#38H ;TAO MA TRAN 5X7 OUT_INSTRUCTION LCD_BUF,#00001111B ;ON DINH LCD OUT_INSTRUCTION LCD_BUF,#1H ;XOA MAN HINH LCD OUT_INSTRUCTION 174 MOV LCD_BUF,#0EH ;BAT HIEN THI LCALL OUT_INSTRUCTION LCALL DELAY1 JB E_INT1,LOOP ; CHO PHEP KHOI TAO LAI REAL TIME DELAY LCALL JB E_INT1,LOOP JN B E_INT1,$ MOV A,#80H ;DUA CON TRO VE DAU DONG THU NHAT LCALL OUT_INSTRUCTION MOV DPTR,#BANG1 TEXT1: ;HIEN THI DONG THONG BAO SET UP REAL TIME A,#0 MOV MOVC A,@A+DPTR MOV LCD_BUF,A LCALL OUT_DATA INC DPTR CJNE A,#99H,TEXT1 ;KIEM TRA MA KET THUC DONG TEXT MOV LCD_BUF,#0C0H ;DUA CON TRO VE DAU DONG THU HAI LCALL OUT_INSTRUCTION R0,#16 MOV LOOP_SETUP: MOV LCD_BUF,#'*' ; HIEN THI KHOANG TRONG LCALL OUT_DATA DELAY1 LCALL R0,LOOP_SETUP DJNZ LCALL LCALL LCALL MOV LCALL LOOP: SETB SJMP $ KHOI_TAO_REAL DELAY1 DELAY1 LCD_BUF,#1H OUT_INSTRUCTION ;XOA MAN HINH LCD TR0 ;**********************************************************SH ITF_RIGHT: MOV LCD_BUF,#14H ;DICH CON TRO SANG PHAI LCALL OUT_INSTRUCTION DJNZ STEP_SHIFT,SHITF_RIGHT 175 RET ;********************************************************** TIME_DISPLAY: MOV LCD_BUF,#80H ;DUA CON TRO VE DAU HANG THU NHAT LCALL OUT_INSTRUCTION MOV LCD_BUF,#0CH ;BAT HIEN THI TAT CON TRO LCALL OUT_INSTRUCTION SUN: MOV LCD_BUF,#' ' LCALL OUT_DATA ; HIEN THI KHOANG TRONG MOV R0,THU ; HIEN THI DAY OF WEEK CJNE R0,#1,MON MOV LCD_BUF,#'S' ;HIEN THI CHU "SUN" LCALL OUT_DATA MOV LCD_BUF,#'U' LCALL OUT_DATA MOV LCD_BUF,#'N' LCALL OUT_DATA LJMP NEXT_HT MON: CJNE R0,#2,TUE MOV LCD_BUF,#'M' ;HIEN THI CHU "MON" LCALL OUT_DATA MOV LCD_BUF,#'O' LCALL OUT_DATA MOV LCD_BUF,#'N' LCALL OUT_DATA LJMP NEXT_HT TUE: CJNE R0,#3,WEN MOV LCD_BUF,#'T' ;HIEN THI CHU "TUE" LCALL OUT_DATA MOV LCD_BUF,#'U' LCALL OUT_DATA MOV LCD_BUF,#'E' LCALL OUT_DATA LJMP NEXT_HT WEN: CJNE R0,#4,THUR MOV LCD_BUF,#'W' ;HIEN THI CHU "WEN" LCALL OUT_DATA 176 MOV LCD_BUF,#'E' LCALL OUT_DATA MOV LCD_BUF,#'N' LCALL OUT_DATA LJMP NEXT_HT THUR: CJNE R0,#5,FRI MOV LCD_BUF,#'T' ;HIEN THI CHU "THU" LCALL OUT_DATA MOV LCD_BUF,#'H' LCALL OUT_DATA MOV LCD_BUF,#'U' LCALL OUT_DATA LJMP NEXT_HT FRI: CJNE R0,#6,SAT MOV LCD_BUF,#'F' ;HIEN THI CHU "FRI" LCALL OUT_DATA MOV LCD_BUF,#'R' LCALL OUT_DATA MOV LCD_BUF,#'I' LCALL OUT_DATA LJMP NEXT_HT SAT: CJNE R0,#7,ERROR ERROR: MOV LCD_BUF,#'S' ;HIEN THI CHU "SAT" LCALL OUT_DATA MOV LCD_BUF,#'A' LCALL OUT_DATA MOV LCD_BUF,#'T' LCALL OUT_DATA LJMP NEXT_HT NEXT_HT: MOV LCD_BUF,#' ' LCALL OUT_DATA ; HIEN THI KHOANG TRONG MOV LCD_BUF,CHUC_NGAY ; HIEN THI NGAY LCALL OUT_DATA MOV LCD_BUF,DONVI_NGAY LCALL OUT_DATA MOV LCD_BUF,#' ' ; HIEN THI KHOANG TRONG LCALL OUT_DATA 177 MOV LCD_BUF,CHUC_THANG ; HIEN THI THANG LCALL OUT_DATA MOV LCD_BUF,DONVI_THANG LCALL OUT_DATA MOV LCD_BUF,#' ' ; HIEN THI KHOANG TRONG LCALL OUT_DATA MOV LCD_BUF,#'2' LCALL OUT_DATA ; HIEN THI KY TU "2" MOV LCD_BUF,#'0' LCALL OUT_DATA ; HIEN THI KY TU "0" MOV LCD_BUF,CHUC_NAM LCALL OUT_DATA ; HIEN THI NAM MOV LCD_BUF,DONVI_NAM LCALL OUT_DATA MOV LCD_BUF,#0C0H ;DUA CON TRO VE DAU DONG THU HAI LCALL OUT_INSTRUCTION MOV STEP_SHIFT,#4 LCALL SHITF_RIGHT ; DICH CON TRO SANG PHAI MOV LCD_BUF,CHUC_GIO LCALL OUT_DATA ; HIEN THI GIO MOV LCD_BUF,DONVI_GIO LCALL OUT_DATA MOV LCD_BUF,#':' LCALL OUT_DATA MOV LCD_BUF,CHUC_PHUT LCALL OUT_DATA ; HIEN THI DAU ":" ; HIEN THI PHUT MOV LCD_BUF,DONVI_PHUT LCALL OUT_DATA MOV LCD_BUF,#':' LCALL OUT_DATA ; HIEN THI DAU ":" 178 MOV LCD_BUF,CHUC_GIAY LCALL OUT_DATA ; HIEN THI GIAY MOV LCD_BUF,DONVI_GIAY LCALL OUT_DATA RET ;************************************************************ GIAI_MA: MOV A,DATA_IN DPTR,#MA_LCD MOV MOVC A,@A+DPTR MOV DATA_OUT,A RET ;*************************************************************X U_LY: MOV A,GIAY MOV B,#10 DIV AB MOV CHUC_GIAY,A MOV DONVI_GIAY,B MOV DATA_IN,DONVI_GIAY LCALL GIAI_MA MOV DONVI_GIAY,DATA_OUT MOV DATA_IN,CHUC_GIAY LCALL GIAI_MA MOV CHUC_GIAY,DATA_OUT MOV A,PHUT MOV B,#10 DIV AB CHUC_PHUT,A MOV MOV DONVI_PHUT,B MOV DATA_IN,DONVI_PHUT LCALL GIAI_MA MOV DONVI_PHUT,DATA_OUT MOV DATA_IN,CHUC_PHUT LCALL GIAI_MA MOV CHUC_PHUT,DATA_OUT MOV A,GIO MOV B,#10 DIV AB MOV CHUC_GIO,A 179 MOV MOV LCALL MOV DONVI_GIO,B DATA_IN,DONVI_GIO GIAI_MA DONVI_GIO,DATA_OUT MOV LCALL MOV DATA_IN,CHUC_GIO GIAI_MA CHUC_GIO,DATA_OUT MOV MOV DIV MOV MOV A,NGAY B,#10 AB CHUC_NGAY,A DONVI_NGAY,B MOV LCALL MOV DATA_IN,DONVI_NGAY GIAI_MA DONVI_NGAY,DATA_OUT MOV LCALL MOV MOV MOV DIV MOV MOV MOV LCALL MOV DATA_IN,CHUC_NGAY GIAI_MA CHUC_NGAY,DATA_OUT A,THANG B,#10 AB CHUC_THANG,A DONVI_THANG,B DATA_IN,DONVI_THANG GIAI_MA DONVI_THANG,DATA_OUT MOV LCALL MOV DATA_IN,CHUC_THANG GIAI_MA CHUC_THANG,DATA_OUT MOV MOV DIV MOV MOV A,NAM B,#10 AB CHUC_NAM,A DONVI_NAM,B MOV LCALL DATA_IN,DONVI_NAM GIAI_MA 180 MOV DONVI_NAM,DATA_OUT DATA_IN,CHUC_NAM MOV LCALL GIAI_MA MOV CHUC_NAM,DATA_OUT RET ;************************************************************ ISR_T0: TR0 CLR MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) LCALL READ_TIME LCALL XU_LY LCALL TIME_DISPLAY SETB TR0 RETI ;*************************************************************R EAD_TIME: CLR ENABLE_REALTIME ; CHO PHEP DOC REAL TIME MOV R0,#0 MOVX A,@R0 MOV GIAY,A MOV MOVX MOV MOV MOVX MOV MOV MOVX MOV R0,#2 A,@R0 PHUT,A R0,#4 A,@R0 GIO,A R0,#6 A,@R0 THU,AMOV R0,#7 MOVX MOV A,@R0 NGAY,A MOV MOVX MOV MOV MOVX MOV SETB R0,#8 A,@R0 THANG,A R0,#9 A,@R0 NAM,A ENABLE_REALTIME ; NGUNG CHO PHEP DOC REAL TIME 181 RET ;********************************************************** KHOI_TAO_REAL: ; CHO PHEP DOC REAL TIME CLR ENABLE_REALTIME MOV R0,#0 ; O NHO GIAY MOV A,#0 ; NAP GIA TRI 00 VAO O NHO GIAY MOVX @R0,A MOV MOV MOVX R0,#02H ; O NHO PHUT A,#0 ; NAP GIA TRI 00 VAO O NHO PHUT @R0,A MOV MOV MOVX R0,#04H ; O NHO GIO A,#0 ; NAP GIA TRI 00 VAO O NHO GIO @R0,A MOV MOV MOVX R0,#06H ; O NHO THU A,#7 ; NAP GIA TRI VAO O NHO THU @R0,A MOV MOV MOVX R0,#07H A,#1 @R0,A ; O NHO NGAY MOV MOV MOVX R0,#08H A,#11 @R0,A ; O NHO THANG MOV MOV MOVX R0,#09H A,#8 @R0,A ; O NHO NAM MOV MOV R0,#0AH A,#00100000B ;TURN ON THE OSCILATOR AND ALLOW THE RTC TO KEEP TIME X @R0,A MOV MOV MOV MOD E MOVX SETB RET R0,#0BH A,#00000010B ;SIGNIFIES BINARY DATA AND 24H @R0,A ENABLE_REALTIME ; NGUNG CHO PHEP DOC REAL TIME 182 ;********************************************************** OUT_INSTRUCTION: MOV DATA_LCD,LCD_BUF ;DUA MA LENH RA PORT GIAO TIEP VOI LCD CLR RS ;CHON THANH GHI LENH CLR RW ;CHON CHE DO GHI SETB EN ;CHO PHEP DUA LENH RA LCD LCALL DELAY CLR EN CALL DELAY RET OUT_DATA: MOV DATA_LCD,LCD_BUF ;DUA DU LIEU RA PORT GIAO TIEP VOI LCD ;CHON THANH GHI DU LIEU ;CHON CHE DO GHI ;CHO PHEP DUA DU LIEU RA LCD RS SETB CLR RW SETB EN LCALL DELAY CLR EN LCALL DELAY RET ;********************************************************** DELAY1: MOV 33H,#255 LOOP_DL1: MOV 32H,#255 DJNZ 32H,$ DJNZ 33H,LOOP_DL1 RET ;********************************************************** DELAY: MOV 31H,#100 DJNZ 31H,$ RET ;********************************************************** MA_LCD: DB '0' DB '1' DB '2' DB '3' '4' DB '5' DB '6' DB '7' DB '8' DB '9' DB ;********************************************************** BANG1: DB 'SET UP REAL TIME',99H ;********************************************************** 183 LCD COMMAND MOV LCD_BUF,#1H ;XOA MAN HINH HIEN THI MOV MOV LCD_BUF,#8H ;TAT TOAN BO HIEN THI MOV MOV LCD_BUF,#0CH ;BAT HIEN THI TAT CON TRO MOV MOV LCD_BUF,#0DH ;NHAP NHAY CON TRO MOV LCD_BUF,#10H ;DICH CON TRO SANG TRAI MOV LCD_BUF,#14H ;DICH CON TRO SANG PHAI MOV LCD_BUF,#18H ;DICH TOAN BO HIEN THI SANG TRAI MOV LCD_BUF,#1CH ;DICH TOAN BO HIEN THI SANG PHAI MOV LCD_BUF,#80H ;DUA CON TRO VE DAU DONG THU NHAT MOV LCD_BUF,#0C0H ;DUA CON TRO VE DAU DONG THU HAI MOV LCD_BUF,#15H ;ON DINH LCD END 1.3 Bài tập mở rộng : Viết chương trình đồng hồ hiển thị hình LCD,cho phép người sử dụng chỉnh thời gian ba nút MODE,UP,DOWN BÀI TẬP MỞ RỘNG Bài 1: Viết chương trình điều khiển đèn giao thông sử dụng khối LED đơn khối LED đoạn.Cho phép thay đổi giá trị thời gian cách sử dụng khối nút nhấn,kết hợp với khối Buzzer phát âm nhận phím Bài 2: Viết chương trình chuông đố vui để học cho đội chơi,sử dụng khối LED đơn,khối nút nhấn Buzzer Bài 3: Viết chương trình giải mã tín hiệu Remote TV Philips TV Sony,bằng cách sử dụng khối Infrared Reciver khối LED đoạn Hiển thị giá trị phím nhận 0-9 LED đoạn Bài 4: Viết chương trình đồng hồ hiển thị hình LCD cho phép người sử dụng hiệu chỉnh thời gian cài đặt thời gian đỗ chuông.Hiệu chỉnh khối nút nhấn báo chng khối Buzzer Bài 5: Viết chương trình đồng hồ hiển thị hình LCD cho phép người sử dụng hiệu chỉnh thời gian cài đặt thời gian đỗ chuông.Hiệu chỉnh Remote TV báo chuông khối Buzzer 184 TÀI LIỆU THAM KHẢO Họ vi điều khiển 8051 – Tống Văn Oanh, Hoàng Đức Hải – Nhà xuất lao động xã hội Kỹ thuật Vi điều khiển AVR – Ngô Diệp Tập – Nhà xuất khoa học kỹ thuật 185 ... - Trình bày cấu trúc chung vi điều khiển - Phát biểu ứng dụng vi điều khiển hướng phát triển vi điều khiển Nội dung chính: Lịch sử xuất vi điều khiển 8051 - Năm 1976 Intel giới thiệu vi điều khiển. .. sản xuất Vi điều khiển 2.1 Nguyên lý, cấu tạo 2.1.1 Cấu tạo vi điều khiển - Vi điều khiển máy tính tích hợp chíp, thường sử dụng để điều khiển thiết bị điện tử Vi điều khiển thực chất gồm vi xử... ghi điều khiển nguồn PCON Là ghi PCON (power control) có chức điều khiển cơng suất vi điều khiển làm vi? ??c hay chế độ chờ Khi vi điều khiển khơng cịn xử lý người lập trình lập trình cho vi điều khiển