GIẢI BÀI TẬP VI XỬ LÝ

414 95 1
GIẢI BÀI TẬP VI XỬ LÝ

Đ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ải bài tập vi xử lý, vi điều khiển, led 7 đoạn , ma trận led. counter, timer , quét led ,vi điều khiển 16f887 , 18f8722 Chip , rom, cpu , bộ nhớ dữ liệu Giải các dạng bài tập vi điều khiển cho sinh viên khối ngành kĩ thuật điện điện tử, kĩ thuật máy tính

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH  ThS.NGUYỄN ĐÌNH PHÚ GIÁO TRÌNH VI ĐIỀU KHIỂN PIC NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH - 2017 i LỜI NÓI ĐẦU Bộ vi xử lý ngày phát triển đa sử dụng hầu hết hệ thống điều khiển công nghiệp thiết bị điện tử dân dụng Chính vai trị, chức vi xử lý đem lại nhiều ưu điểm, nhiều tính đặc biệt cho hệ thống điều khiển Các nhà nghiên cứu không ngừng nghiên cứu hệ thống điều khiển sử dụng vi xử lý để thay nhằm nâng cao khả tự động thay cho người, thúc đẩy lĩnh vực vi xử lý ngày phát triển không ngừng, đáp ứng yêu cầu điều khiển Để đơn giản bớt phức tạp phần cứng dùng vi xử lý, nhà nghiên cứu tích hợp hệ vi xử lý, nhớ, ngoại vi thành vi mạch gọi vi điều khiển Nội dung giáo trình nghiên cứu kiến thức vi điều khiển Do có nhiều họ vi điều khiển khác nhau, từ hệ bit hệ 32 bit, mức độ tích hợp từ đơn giản đến phức tạp, nhiều hãng chế tạo khác nhau, nhiều chủng loại khác làm cho người bắt đầu học hay nghiên cứu gặp nhiều bỡ ngỡ hệ cho phù hợp, giáo trình trình bày họ vi điều khiển bit hãng Microchip nhằm giúp bạn sinh viên ngành điện nói chung có giáo trình để học tập nghiên cứu cách dễ dàng Các ứng dụng dùng vi điều khiển nhiều cấp độ khác từ đơn giản đến phức tạp, giáo trình trình bày ứng dụng đơn giản để bạn đọc hiểu, từ kiến thức bạn thực ứng dụng điều khiển phức tạp Phần tập kèm theo giúp bạn giải yêu cầu phức tạp Từ kiến thức vi điều khiển bit, bạn hồn tồn tự nghiên cứu vi điều khiển nhiều bit 16 bit, 32 bit Giáo trình biên soạn thành 10 chương, chủ yếu trình bày vi điều khiển PIC 16F887: Chương Đặc tính, cấu trúc, chức port Chương Tổ chức nhớ, ghi Chương Lệnh hợp ngữ Chương Ngơn ngữ lập trình C Chương Giao tiếp LED, LCD, phím đơn, ma trận phím Chương Timer - Counter ii Chương Chuyển đổi tín hiệu tương tự sang số Chương Ngắt Chương Điều chế độ rộng xung - PWM Chương 10 Truyền liệu UART Nội dung chương chủ yếu giới thiệu đặc tính, cấu trúc chức port vi điều khiển, người đọc cần phải biết đặc tính vi điều khiển nghiên cứu Để so sánh khả vi điều khiển khác ta phải dựa vào đặc tính Phần cấu trúc bên cho bạn biết tổ chức, mối quan hệ khối với nhau, chức khối Bạn phải biết tên, ký hiệu đặt tên cho port, chức port để giúp bạn sử dụng port kết nối với đối tượng điều khiển Nội dung chương giới thiệu cấu trúc tổ chức loại nhớ tích hợp bên vi điều khiển bao gồm nhớ chương trình, nhớ liệu RAM, nhớ ngăn xếp, nhớ Eeprom, cách truy xuất nhớ Nội dung chương giới thiệu tập lệnh hợp ngữ vi điều khiển để viết chương trình hợp ngữ lập trình hợp ngữ khó dài giải u cầu tính tốn phức tạp nên phần giới thiệu không nghiên cứu sâu Nội dung chương giới thiệu ngơn ngữ lập trình C cho vi điều khiển PIC Có nhiều trình biên dịch ngơn ngữ lập trình C cho vi điều khiển tài liệu trình bày trình biên dịch CCS Lập trình ngơn ngữ C giúp bạn viết chương trình dễ so với hợp ngữ, tồn chương trình tài liệu viết ngơn ngữ lập trình C Để hiểu chương trình giáo trình viết chương trình theo yêu cầu bạn cần phải nắm rõ tổ chức chương trình C, kiểu liệu, toán tử, thư viện viết sẵn lệnh C Nội dung chương khảo sát chi tiết chức port, sơ đồ mạch port, sử dụng port để xuất nhập tín hiệu điều khiển led đơn, led đoạn trực tiếp, led đoạn quét, LCD, nút nhấn, bàn phím ma trận Trong yêu cầu cho bạn biết cách kết nối phần cứng, nguyên lý hoạt động, viết lưu đồ hay trình tự điều khiển chương trình mẫu, có giải thích lệnh chương trình Nội dung chương khảo sát chi tiết chức timer-counter tích hợp vi điều khiển, cách sử dụng timer-counter để định thời đếm kiện iii Nội dung chương khảo sát chi tiết chức chuyển đổi tín hiệu tương tự thành tín hiệu số (ADC) tích hợp vi điều khiển, cách sử dụng ADC để chuyển đổi tín hiệu tương tự cảm biến nhiệt để thực ứng dụng đo nhiệt độ, cảnh báo nhiệt độ điều khiển nhiều ứng dụng khác Nội dung chương khảo sát chi tiết chức ngắt vi điều khiển, biết tính ưu việt ngắt, cách sử dụng ngắt để đáp ứng tối ưu yêu cầu điều khiển nhằm đáp ứng nhanh kiện xảy Nội dung chương khảo sát chi tiết chức điều chế độ rộng xung PWM vi điều khiển, biết nguyên lý hoạt động, tính tốn thơng số xung điều chế, biết lập trình sử dụng chức PWM để điều khiển thay đổi độ sáng đèn, thay đổi tốc độ động DC nhiều ứng dụng khác Nội dung chương 10 khảo sát chi tiết chức truyền liệu nối tiếp UART vi điều khiển, biết trình tự thực gởi liệu nhận liệu, thực yêu cầu truyền liệu vi điều khiển với máy tính vi điều khiển với Ngoài kiến thức mà tác giả trình bày, cịn nhiều chức khác vi điều khiển mà tác giả chưa trình bày bạn tham khảo thêm tài liệu nhà chế tạo cung cấp Trong q trình biên soạn khơng thể tránh khỏi sai sót nên mong bạn đọc góp ý xây dựng Mọi ý kiến xin gởi nhóm tác giả theo địa phund@hcmute.edu.vn phu_nd@yahoo.com Nhóm tác giả xin cảm ơn bạn bè đồng nghiệp đóng góp nhiều ý kiến, xin cảm ơn người thân gia đình cho phép nhóm tác giả có nhiều thời gian thực việc biên soạn giáo trình Đại diện nhóm Nguyễn Đình Phú iv DANH MỤC HÌNH Hình 1- Các thiết bị sử dụng vi xử lý Hình 1- Hệ thống vi xử lý Hình 1- Vi điều khiển tích hợp vi xử lý, nhớ ngoại vi Hình 1- Các thiết bị vào, vi điều khiển Hình 1- Cấu hình vi điều khiển Hình 1- Cấu trúc bên vi điều khiển Hình 1- Sơ đồ chân PIC 16F887 10 Hình 2- Kiến trúc Von Neumann Harvard 21 Hình 2- Sơ đồ nhớ chương trình ngăn xếp 22 Hình 2- Nội dung ghi PC thực lệnh Call hay Goto 23 Hình 2- Nhảy trang khác trang nhớ 24 Hình 2- Bộ nhớ ngăn xếp thực ngắt kết thúc ngắt 26 Hình 2- Tổ chức nhớ theo byte 27 Hình 2- Tổ chức nhớ chứa mã lệnh liệu 27 Hình 2- Quá trình thực lệnh bước 28 Hình 2- Quá trình thực lệnh bước 29 Hình 2- 10 Quá trình thực lệnh bước 29 Hình 2- 11 Ký hiệu bước trình thực lệnh bước 29 Hình 2- 12 Các bước thực chi tiết trình thực lệnh bước 30 Hình 2- 13 Làm xong việc đến việc khác 31 Hình 2- 14 Làm theo cấu trúc pipeline hay dây chuyền 31 Hình 2- 15 Minh họa cấu trúc để thấy hiệu thời gian 33 Hình 2- 16 Cấu trúc pipeline vi điều khiển PIC 16F887 34 Hình 2- 17 Tổ chức File ghi 35 Hình 2- 18 Truy xuất trực tiếp gián tiếp nhớ RAM 36 v Hình 2- 19 Thanh ghi trạng thái 37 Hình 3- Hệ thống điều khiển đèn giao thông – ảnh minh họa 44 Hình 3- Trình tự biên soạn chương trình Assembly nạp code 45 Hình 3- Logo phần mềm MPLAB 45 Hình 3- Chương trình dùng hợp ngữ 47 Hình 3- Biên dịch chương trình hợp ngữ 48 Hình 3- Biên dịch liên kết nhiều chương trình hợp ngữ 49 Hình 3- Biên dịch chương trình hợp ngữ tạo file hex file bin 49 Hình 3- Các dạng mã lệnh 50 Hình 4- Biểu tượng phần mềm PIC-C 80 Hình 4- Giao diện phần mềm PIC-C 80 Hình 5- Sơ đồ kết nối port với đối tượng điều khiển 99 Hình 5- Sơ đồ kết nối port xuất nhập tín hiệu điều khiển 100 Hình 5- Port A ghi định hướng port A 101 Hình 5- Cấu hình chân RA0 102 Hình 5- Cấu hình chân RA1 102 Hình 5- Cấu hình chân RA2 103 Hình 5- Cấu hình chân RA3 104 Hình 5- Cấu hình chân RA4 105 Hình 5- Cấu hình chân RA5 106 Hình 5- 10 Cấu hình chân RA6 106 Hình 5- 11 Cấu hình chân RA7 107 Hình 5- 12 Port B ghi định hướng port B 107 Hình 5- 13 Thanh ghi ANSELH định cấu hình số tương tự cho port B 108 Hình 5- 14 Thanh ghi WPUB thiết lập cho phép/cấm điện trở treo 108 vi Hình 5- 15 Thanh ghi IOCB cho phép/cấm ngắt portB thay đổi 109 Hình 5- 16 Cấu hình chân RB 110 Hình 5- 17 Cấu hình chân RB 111 Hình 5- 18 Các chân PortB giao tiếp với mạch nạp, gỡ rối 112 Hình 5- 19 Port C ghi TRISC 113 Hình 5- 20 Cấu hình chân RC0 114 Hình 5- 21 Cấu hình chân RC1 114 Hình 5- 22 Cấu hình chân RC2 115 Hình 5- 23 Cấu hình chân RC3 115 Hình 5- 24 Cấu hình chân RC4 117 Hình 5- 25 Cấu hình chân RC5 117 Hình 5- 26 Cấu hình chân RC6 118 Hình 5- 27 Cấu hình chân RC7 118 Hình 5- 28 Port D ghi TRISD 119 Hình 5- 29 Cấu hình chân RD 120 Hình 5- 30 Cấu hình chân RD 120 Hình 5- 31 Port E ghi TRISE 121 Hình 5- 32 Cấu hình chân RE 122 Hình 5- 33 Cấu hình chân RE 122 Hình 5- 34 Các dạng tín hiệu nguồn, MCLR, PWRT, OST 129 Hình 5- 35 Các dạng tín hiệu bị sụt giảm nguồn BOR 129 Hình 5- 36 Sơ đồ khối mạch dao động PIC 130 Hình 5- 37 Dao động RC bên ngồi 132 Hình 5- 38 Dao động RC bên 132 Hình 5- 39 Dao động lấy từ bên ngồi 133 Hình 5- 40 Các dạng dao động LP, XT, HS 133 Hình 5- 41 Chức định thời giám sát - WDT 134 Hình 5- 42 Sơ đồ khối định thời giám sát – WDT 136 vii Hình 5- 43 Các tín hiệu PIC giao tiếp với mạch nạp dạng nối tiếp ICSP 137 Hình 5- 44 Sơ đồ điều khiển led đơn 138 Hình 5- 45 Lưu đồ điều khiển led đơn chớp tắt 139 Hình 5- 46 Lưu đồ điều khiển led đơn chớp tắt 10 lần 141 Hình 5- 47 Lưu đồ điều khiển led đơn sáng dần tắt dần từ phải sang trái 142 Hình 5- 48 Sơ đồ kết nối port B với led đoạn 144 Hình 5- 49 Hình led đoạn 144 Hình 5- 50 Lưu đồ đếm từ đến 146 Hình 5- 51 Sơ đồ kết nối port B, C điều khiển led đoạn 149 Hình 5- 52 Lưu đồ đếm từ 00 đến 99 149 Hình 5- 53 Sơ đồ kết nối port B D điều khiển led đoạn quét 151 Hình 5- 54 Lưu đồ điều khiển led quét sáng số 153 Hình 5- 55 Sơ đồ kết nối port B D điều khiển led đoạn quét 155 Hình 5- 56 Lưu đồ đếm từ 00 đến 99 hiển thị led quét 155 Hình 5- 57 Sơ đồ điều khiển led nút nhấn 158 Hình 5- 58 Lưu đồ điều khiển led đơn nút nhấn ON-OFF 158 Hình 5- 59 Sơ đồ điều khiển led nút nhấn 160 Hình 5- 60 Lưu đồ điều khiển led nút ON-OFF-INV 161 Hình 5- 61 Lưu đồ điều khiển led có chống dội phím INV 163 Hình 5- 62 Sơ đồ kết nối port điều khiển led đoạn, nút nhấn 165 Hình 5- 63 Lưu đồ đếm có điều khiển nút nhấn Start-Stop 165 Hình 5- 64 Bàn phím ma trận 4×4 167 Hình 5- 65 Bàn phím ma trận 4×4 với cột C1 168 Hình 5- 66 Bàn phím ma trận 4×4 với cột C2 169 Hình 5- 67 Bàn phím ma trận 4×4 với cột C3 170 Hình 5- 68 Lưu đồ quét bàn phím ma trận 4×4 171 Hình 5- 69 Lưu đồ qt bàn phím ma trận 4×4 có chống dội 172 Hình 5- 70 Vi điều khiển giao tiếp bàn phím ma trận 173 viii Hình 5- 71 Lưu đồ quét hiển thị ma trận phím 174 Hình 5- 72 Vi điều khiển giao tiếp bàn phím ma trận led đoạn 177 Hình 5- 73 Lưu đồ quét ma trận phím hiển thị mã phím 178 Hình 5- 74 Hình ảnh LCD 179 Hình 5- 75 Mặt sau LCD 181 Hình 5- 76 Sơ đồ khối điều khiển LCD 181 Hình 5- 77 Dạng sóng điều khiển LCD 188 Hình 5- 78 Hiển thị ký tự chữ A LCD 190 Hình 5- 79 Hiển thị 32 ký tự LCD 16×2 192 Hình 5- 80 Hiển thị 80 ký tự LCD 20×4 192 Hình 5- 81 Trình tự khởi tạo LCD 193 Hình 5- 82 Mạch điện vi điều khiển PIC giao tiếp LCD theo chuẩn bit 194 Hình 5- 83 Lưu đồ hiển thị thông tin hàng 195 Hình 5- 84 Lưu đồ hiển thị thông tin đếm giây 199 Hình 5- 85 Mạch điện vi điều khiển PIC giao tiếp LCD theo chuẩn bit 201 Hình 5- 86 Lưu đồ khởi tạo LCD theo chuẩn bit 201 Hình 5- 87 Lưu đồ hiển thị thơng tin hàng theo chuẩn bit 202 Hình 6- Sơ đồ khối timer T0 PIC16F887 215 Hình 6- Thanh ghi OPTION_REG 215 Hình 6- Thanh ghi INTCON 217 Hình 6- Bộ chia trước gán cho timer T0 218 Hình 6- Bộ chia trước gán cho WDT 218 Hình 6- Thanh ghi lưu kết T1 219 Hình 6- Cấu trúc timer T1 219 Hình 6- Thanh ghi T1CON 220 Hình 6- Timer1 hoạt động định thời 221 Hình 6- 10 T1 hoạt động đếm xung ngoại từ mạch dao động T1 222 ix Hình 6- 11 T1 hoạt động đếm xung ngoại đưa đến ngõ vào T1CKI 222 Hình 6- 12 Giản đồ thời gian xung đếm Counter1 222 Hình 6- 13 Kết nối thạch anh tạo dao động 223 Hình 6- 14 Sơ đồ khối Timer T2 225 Hình 6- 15 Thanh ghi T2CON 226 Hình 6- 16 PIC điều khiển led sáng tắt 230 Hình 6- 17 Lưu đồ điều khiển led sáng tắt– định thời 210ms 231 Hình 6- 18 Lưu đồ điều khiển led sáng tắt dùng ngắt – định thời 200ms 233 Hình 6- 19 Lưu đồ điều khiển led sáng tắt – định thời 1s 235 Hình 6- 20 Lưu đồ điều khiển led sáng tắt, định thời 13,107ms dùng T0 237 Hình 6- 21 Lưu đồ điều khiển led sáng tắt, định thời 1s dùng T0 239 Hình 6- 22 Lưu đồ điều khiển led sáng tắt, định thời 13,107ms dùng T2 241 Hình 6- 23 Đếm xung ngoại dùng counter T0 242 Hình 6- 24 Lưu đồ đếm xung ngoại dùng counter T0 243 Hình 6- 25 Đếm xung ngoại dùng counter T1 246 Hình 6- 26 Lưu đồ đếm xung ngoại dùng counter T1 247 Hình 6- 27 Đếm xung ngoại dùng counter T1 hiển thị led quét 248 Hình 6- 28 Lưu đồ chương trình đếm dùng counter T1 PIC 16F887 249 Hình 7- Sơ đồ khối ADC PIC 16F887 257 Hình 7- Thanh ghi ADCON0 258 Hình 7- Thanh ghi ADCON1 259 Hình 7- Định dạng cặp ghi lưu kết 260 Hình 7- Sơ đồ mạch đo nhiệt độ dùng PIC16F887 hiển thị led trực tiếp 265 Hình 7- Lưu đồ chuyển đổi ADC đo nhiệt độ kênh thứ 266 Hình 7- Sơ đồ mạch giao tiếp điều khiển Relay, Triac, Buzzer 269 x Chuẩn truyền liệu I2C có ưu điểm dùng đường tín hiệu giao tiếp nhiều thiết bị với nhau, so với chuẩn SPI dùng thêm nhiều tín hiệu IO để làm tín hiệu chọn thiết bị tớ Dạng sóng truyền liệu chuẩn I2C 10.7.3 Dạng sóng truyền liệu I2C trình ghi liệu từ chủ lên tớ hình 10-22 START GỞI ĐỊA CHỈ CỦA THIẾT BỊ TỚ - NHẬN TRẢ LỜI GỞI ĐỊA CHỈ Ô NHỚ CẦN GHI CHO THIẾT BỊ TỚ SDA A6 A5 A4 A3 A2 A1 A0 R/W ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK SCL GHI DỮ LIỆU VÀO THIẾT BỊ TỚ – BYTE TRẢ LỜI D7 D6 D5 D4 D3 D2 D1 D0 STOP GHI DỮ LIỆU VÀO THIẾT BỊ TỚ – BYTE ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK Hình 10- 22 Quá trình chủ ghi liệu vào tớ Dạng sóng truyền liệu I2C trình đọc liệu từ tớ hình 10-23 START GỞI ĐỊA CHỈ CỦA THIẾT BỊ TỚ - NHẬN TRẢ LỜI SDA STOP GỞI ĐỊA CHỈ Ô NHỚ CẦN ĐỌC CHO THIẾT BỊ TỚ A6 A5 A4 A3 A2 A1 A0 R/W ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK SCL GỞI ĐỊA CHỈ CỦA THIẾT BỊ TỚ - GỞI START THIẾT BỊ TỚ GỞI DỮ LIỆU LÊN CHO CHỦ – BYTE 1 SDA A6 A5 A4 A3 A2 A1 A0 R/W ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK SCL THIẾT BỊ TỚ GỞI DỮ LIỆU LÊN CHO CHỦ – BYTE D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 Hình 10- 23 Quá trình chủ đọc liệu từ tớ 10.7.4 372 STOP THIẾT BỊ TỚ GỞI DỮ LIỆU LÊN CHO CHỦ – BYTE Quy trình truyền liệu chuẩn I2C ACK 9 Quy trình thiết bị chủ giao tiếp với thiết bị tớ để thực việc ghi đọc liệu sau: Quá trình thiết bị chủ ghi liệu vào thiết bị tớ Bước 1: Thiết bị chủ tạo trạng thái START để bắt đầu trình truyền liệu – thiết bị tớ trạng thái sẵn sàng nhận địa từ thiết bị chủ Bước 2: Thiết bị chủ gởi địa thiết bị tớ cần giao tiếp – tất thiết bị tớ nhận địa so sánh với địa mình, thiết bị tớ sau phát khơng phải địa chờ nhận trạng thái START Trong liệu bit có bit địa bit điều khiển đọc/ghi (R/W): bit để báo cho thiết bị tớ nhận byte Bước 3: Thiết bị chủ chờ nhận tín hiệu bắt tay từ thiết bị tớ Thiết bị tớ địa phát tín hiệu trả lời cho chủ biết Bước 4: Thiết bị chủ tiến hành gởi địa ô nhớ bắt đầu cần ghi liệu, bit R/W trạng thái ghi Bước 5: Thiết bị chủ chờ nhận tín hiệu trả lời từ thiết bị tớ Bước 6: Thiết bị chủ gởi tiến hành gởi liệu để ghi vào thiết bị tớ, lần ghi byte, sau gởi xong tiến hành chờ nhận tín hiệu trả lời từ thiết bị tớ, trình thực byte cuối xong thiết bị chủ chuyển sang trạng thái STOP để chấm dứt trình giao tiếp với thiết bị tớ Quá trình thiết bị chủ đọc liệu vào thiết bị tớ Bước 1: Thiết bị chủ tạo trạng thái START để bắt đầu trình truyền liệu – thiết bị tớ trạng thái sẵn sàng nhận địa từ thiết bị chủ Bước 2: Thiết bị chủ gởi địa thiết bị tớ cần giao tiếp – tất thiết bị tớ nhận địa so sánh với địa mình, thiết bị tớ sau phát địa chờ nhận trạng thái START Trong liệu bit có bit địa bit điều khiển đọc/ghi (R/W): bit để báo cho thiết bị tớ nhận byte Bước 3: Thiết bị chủ chờ nhận tín hiệu bắt tay từ thiết bị tớ Thiết bị tớ địa phát tín hiệu trả lời cho chủ biết Bước 4: Thiết bị chủ tiến hành gởi địa ô nhớ bắt đầu cần đọc liệu, bit R/W trạng thái đọc 373 Bước 5: Thiết bị chủ chờ nhận tín hiệu trả lời từ thiết bị tớ Bước 6: Thiết bị chủ chuyển sang trạng thái STOP, bắt đầu lại trạng thái START, tiến hành gởi địa thiết bị bit R/W để yêu cầu tớ gởi liệu nội dung ô nhớ địa nhận Bước 7: Thiết bị chủ sau nhận báo tín hiệu trả lời, q trình thực nhận hết liệu mong muốn thiết bị chủ tạo tín hiệu STOP để chấm dứt KHẢO SÁT VÀ LẬP TRÌNH GIAO TIẾP IC REALTIME DS1307 10.8 10.8.1 Khảo sát IC DS1307 DS1307 chip đồng hồ thời gian thực Dallas Semiconductor Chip 64 nhớ, có nhớ 8-bit chứa thời gian: giây, phút, giờ, thứ (trong tuần), ngày, tháng, năm ghi điều khiển ngõ ra, vùng nhớ cịn lại 56 dùng dùng để lưu liệu DS1307 giao chuẩn nối tiếp I2C nên sơ đồ chân bên có chân hình 10-24 Các chân DS1307: Hai chân X1 X2: dùng để kết nối với tụ thạch anh có tần số 32768Hz để tạo dao động Chân VBAT nối với nguồn dương pin 3V3 để chip hoạt động đếm thời gian nguồn Hình 10- 24 Sơ đồ chân DS1307 Chân GND chân nối 0V Chân Vcc nối với nguồn Vcc 5V 3V3 tùy thuộc vào loại chip Chân SQW/OUT ngõ tạo xung vuông (Square Wave / Output Driver), tần số lập trình 374 Hai chân SCL, SDA đường tín hiệu giao tiếp chuẩn I2C CRYSTAL VCC VCC VCC X1 RUP CPU X2 SDA SQW/ OUT SCL VBAT GND DS13B07 Hình 10- 25 Sơ đồ kết nối vi điều khiển với DS1307 ADDRESS 00H SECONDS 01H MINUTES 02H HOURS 03H DAY 04H DATE 05H MONTHS 06H YEARS 07H CONTROL 08H RAM 56 BYTE 3FH Hình 10- 26 Tổ chức nhớ DS1307 Tổ chức nhớ bên RT DS1307 hình 10-26 Vì ghi quan trọng hoạt động DS1307 nên ta quan sát tổ chức theo bit ghi hình 10-27 375 Ơ nhớ lưu giây (SECONDS): có địa 0x00 có chức lưu hàng chục giây hàng đơn vị giây Bit thứ có tên CH (Clock Halt – ngừng đồng hồ), bit dao động chip ngừng làm đồng hồ ngừng hoạt động Nếu muốn đồng hồ hoạt động bit phải BIT0 00H CH 10 SECONDS SECONDS 00 - 59 01H 10 MINUTES MINUTES 00 - 59 02H 10HR HOURS 01 - 12 00 - 23 03H 0 04H 0 10 DATE DATE 05H 0 10 MONTH MONTH 01 - 12 YEAR 00 - 99 24 A/P 10 HR OUT 0 SQWE DAY 10 YEAR 06H 07H 12 0 1–7 – 28, 29, 30, 31 RS1 RS0 Hình 10- 27 Tổ chức ghi thời gian Ô nhớ lưu phút (MINUTES): có địa 0x01, có chức lưu phút hàng đơn vị hàng chục, bit ln Ơ nhớ lưu (HOURS): có địa 0x02 có chức lưu hàng chục hàng đơn vị chế độ 12 24 lựa chọn bit thứ có tên 12/24 Nếu bit 12/24 chọn chế độ 24 phần hàng chục sử dụng bit thứ thứ có ký hiệu 10HR Nếu bit 12/24 chọn chế độ 12 phần hàng chục sử dụng bit thứ 4, cịn bit thứ có ký hiệu A/P tương ứng với chế độ AM PM Bit ln Ơ nhớ lưu thứ (DAY – ngày tuần): có địa 0x03, có chức lưu thứ tuần có giá trị từ đến tương ứng từ Chủ nhật đến thứ bảy tuần, sử dụng bit thấp 376 Các cịn lại ngày tháng năm Cấu trúc bên DS1307 hình 10-28 Hình 10- 28 Cấu trúc bên DS1307 10.8.2 Giao tiếp PIC 16F887 với DS1307 Trong phần trình bày phần giao tiếp vi điều khiển PIC16F887 với I2C hình 10-29 377 Hình 10- 29 Mạch giao tiếp vi điều khiển với DS1307 LCD 10.8.3 Lập trình giao tiếp PIC 16F887 với DS1307 Để thuận tiện cho việc lập trình giao tiếp với DS1307 phần có xây dựng thư viện sau: #define GIAY_HTAI 0X55 #define PHUT_HTAI 0X33 #define GIO_HTAI 0X08 #define THU_HTAI #define NGAY_HTAI 0X16 #define THANG_HTAI 0X06 #define NAM_HTAI 0X13 #define MA_DS 0X98 #define ADDR_WR_1307 0xd0 #define ADDR_RD_1307 0xd1 #define ADDR_MEM 0x00 unsigned char nam_ds13, thang_ds13, ngay_ds13, thu_ds13, gio_ds13, phut_ds13, giay_ds13, ma_ds13, control_ds13, giaytam; void thiet_lap_thoi_gian_hien_tai() { giay_ds13 = giay_htai; phut_ds13 = phut_htai; 378 gio_ds13 = gio_htai; thu_ds13 = thu_htai; ngay_ds13 = ngay_htai; thang_ds13 = nam_ds13 thang_htai; = nam_htai; control_ds13 = 0x90; ma_ds13 = ma_ds; } void nap_thoi_gian_htai_vao_ds1307() { i2c_start(); i2c_write(addr_wr_1307); i2c_write(0x00); i2c_write(giay_ds13); i2c_write(phut_ds13); i2c_write(gio_ds13); i2c_write(thu_ds13); i2c_write(ngay_ds13); i2c_write(thang_ds13); i2c_write(nam_ds13); i2c_write(control_ds13); i2c_write(ma_ds13); i2c_stop(); } void doc_thoi_gian_tu_realtime() { i2c_start(); i2c_write(addr_wr_1307); i2c_write(addr_mem); i2c_start(); i2c_write(addr_rd_1307); giay_ds13 = i2c_read(); phut_ds13 = i2c_read(); gio_ds13 = i2c_read(); 379 thu_ds13 = i2c_read(); ngay_ds13 = i2c_read(); thang_ds13 = i2c_read(); nam_ds13 = i2c_read(); control_ds13 = i2c_read(); ma_ds13 = i2c_read(0); i2c_stop(); } void doc_giay_tu_realtime() { i2c_start(); i2c_write(addr_wr_1307); i2c_write(addr_mem); i2c_start(); i2c_write(addr_rd_1307); giay_ds13 = i2c_read(0); i2c_stop(); } void hien_thi_thoi_gian_ds1307 ( ) { lcd_command (0x8c); lcd_data(gio_ds13/16 +0x30); lcd_data(gio_ds13%16 +0x30); lcd_data(' '); lcd_data(phut_ds13/16 +0x30); lcd_data(phut_ds13%16 +0x30); lcd_data(' '); lcd_data(giay_ds13/16 +0x30); lcd_data(giay_ds13%16 +0x30); 380 //not ack lcd_command (0xcc); lcd_data(ngay_ds13/16 +0x30); lcd_data(ngay_ds13%16 +0x30); lcd_data(' '); lcd_data(thang_ds13/16 +0x30); lcd_data(thang_ds13%16 +0x30); lcd_data(' '); lcd_data(nam_ds13/16 +0x30); lcd_data(nam_ds13%16 +0x30); } Bài 10-06: Viết lưu đồ chương trình đọc thời gian thực DS1307 hiển thị thông tin thời gian phút giây LCD  Sơ đồ mạch: hình 10-29  Lưu đồ: hình 10-30 Khi sử dụng chuẩn truyền liệu I2C phải khai báo thêm hàng lệnh theo sau thư viện “TV_16F887.C” để trình biên dịch biết có sử dụng chế độ truyền I2C #USE I2C(MASTER,SLOW,SDA=PIN_B0,SCL=PIN_B1) BEGIN Khởi tạo port Khởi tạo LCD Giay_tam = giay Đọc thời gian từ real-time DS1307 Đọc thời gian từ real-time DS1307 Đúng mã quy định? S Giay = giay_tam Đ Thiết lập thời gian mới, nạp lại thời gian vào Real-time DS1307 S Đ Cập nhật giay_tam, hiển thị thời gian, delay 500ms 381 Hình 10- 30 Lưu đồ đọc liệu từ DS1307 qua chuẩn I2C hiển thị LCD  Chương trình #include #include #include void main() { set_tris_d(0x00); set_tris_e(0x00); setup_lcd(); lcd_command(lcd_addr_line1); lcd_data("clock:"); doc_thoi_gian_tu_realtime(); if (ma_ds13!=ma_ds) { thiet_lap_thoi_gian_hien_tai(); nap_thoi_gian_htai_vao_ds13b07(); } //thiet_lap_thoi_gian_hien_tai(); //nap_thoi_gian_htai_vao_ds13b07(); doc_thoi_gian_tu_realtime(); giaytam=giay_ds13; while(true) { doc_thoi_gian_tu_realtime(); if (giaytam!=giay_ds13) { giaytam=giay_ds13; hien_thi_thoi_gian_ds1307(); } 382 delay_ms(500); } } 10.9 CÂU HỎI ÔN TẬP – TRẮC NGHIỆM 10.9.1 Câu hỏi ôn tập Câu 10-1: Hãy cho biết tên ghi liên quan đến truyền liệu vi điều khiển PIC16F887 Câu 10-2: Hãy cho biết chức bit ghi TXSTA vi điều khiển PIC16F887 Câu 10-3: Hãy cho biết chức bit ghi RCSTA vi điều khiển PIC16F887 Câu 10-4: Hãy cho biết chức bit ghi BAUDCTL vi điều khiển PIC16F887 10.9.2 Câu hỏi mở rộng Hãy tìm hiểu truyền liệu vi điều khiển PIC18F4550 so sánh với PIC16F887 Câu 10-5: 10.9.3 Câu hỏi trắc nghiệm Câu 10-1: Vi điều khiển PIC 16F887 có chế độ truyền liệu ESUART: (a) (b) (c) (d) Câu 10-2: Vi điều khiển PIC 16F887 truyền đồng tín hiệu có tên là: (a) RxD, TxD (b) RxD, CK (c) TD, CK (d) TD, TK Câu 10-3: Vi điều khiển PIC 16F887 truyền bất đồng tín hiệu có tên là: (a) RxD, TxD (b) RxD, CK (c) TD, CK (d) TD, TK 383 Câu 10-4: Vi điều khiển PIC 16F887 ghi thiết lập tốc độ truyền liệu: (a) TXSTA (b) RCSTA (c) BAUDCTL (d) TMOD Câu 10-5: Trong công thức tính tốc độ PIC16F887 biến “FOSC” là: (a) Tần số dao động timer T1 (b) Tần số dao động tụ thạch anh (c) Tần số dao động timer T0 (d) Tần số dao động ADC Câu 10-6: Cặp ghi PIC16F887 lưu giá trị để tạo tốc độ baud: (a) TXSTA, RCSTA (b) BAUDCTL, RCSTA (c) TSPBGRH, SPBRGL (d) TSPBGRH, SPBRG Câu 10-7: Vi điều khiển PIC 16F887 sử dụng timer để thiết lập tốc độ truyền liệu: (a) T0 (b) T1 (c) T2 (d) Không dùng timer Câu 10-8: Bit cho phép ngắt cờ ngắt nhận liệu PIC 16F887: (a) RCIF, TXIF (b) TXIE, TXIF (c) RCIE, RCIF (d) TXIE, RCIE Câu 10-9: Bit cho phép ngắt cờ ngắt phát liệu PIC 16F887: (a) RCIF, TXIF (b) TXIE, TXIF (c) RCIE, RCIF (d) TXIE, RCIE 10.9.4 384 Bài tập Bài tập 10-01: Một hệ thống điều khiển dùng vi điều khiển PIC 16F887: vi điều khiển A có port D nối với led đơn, vi điều khiển B có port D nối với led Dữ liệu bit từ vi điều khiển A điều khiển port D sáng dần tắt dần hai chiều, đồng thời gởi sang vi điều khiển B để hiển thị led Hai vi điều khiển giao tiếp bất đồng tốc độ 9600 baud Hãy vẽ sơ đồ mạch, viết lưu đồ chương trình Bài tập 10-02: Một hệ thống điều khiển dùng vi điều khiển PIC16F887: vi điều khiển A kết nối với nút nhấn ON OFF, vi điều khiển B nối với led Khi nhấn ON vi điều khiển A gởi liệu sang vi điều khiển B làm led đơn sáng, nhấn OFF gởi mã làm led tắt Hai vi điều khiển giao tiếp bất đồng tốc độ 9600 baud Hãy vẽ sơ đồ mạch, viết lưu đồ chương trình Bài tập 10-03: Một hệ thống điều khiển dùng vi điều khiển PIC16F887: vi điều khiển A kết nối với nút nhấn ON_OFF_0 đến ON_OFF_7, vi điều khiển B nối với led đơn LED_0 đến LED_7 Khi nhấn ON_OFF_X vi điều khiển A gởi liệu sang vi điều khiển B làm LED_X đảo trạng thái Hai vi điều khiển giao tiếp bất đồng tốc độ 9600 baud Hãy vẽ sơ đồ mạch, viết lưu đồ chương trình 385 TÀI LIỆU THAM KHẢO [1] MICROCHIP – PIC 16F87X DATASHEET, 1997 [2] MICROCHIP – PIC micro Mid- Range MCU family reference Manual, 1997 [3] AVTAR SINGH – WALTER A TRIEBEL, “The 8088 Microprocessor – Programming, interfacing, software, hardware, and Applications”, Prentice Hall International Editions [4] DOUGLAS V HALL, “Microprocessor and Interfacing Programming, and hardware”, McGraw – Hill International Editions [5] John Uffenbeck, “The 8088/8086 family: Designing, programming and interfacing”, Prentice Hall, 1987 [6] James L Antonakos, “The 68000 Microprocessor: hardware and software principles and applications”, Prentice Hall fifth edition 2004 [7] Jack L Davies, “The Innovative 80x86 – Volume I: the 80286 Microprocessor, architecture”, Prentice Hall [8] Jack L Davies, “Z80 Family CPU user manual”, www.zilog.com [9] MetaLink Corporation Chandler – Arizona, “8051 Cross Assembler User’s Manual”, 1996 [10] “MCS51 Microcontroller Family User’s Manual”, 1994 [11] “M68332 User’s Manual” [12] Hồ Trung Mỹ, Vi Xử Lý, Nhà xuất Đại Học Quốc Gia Tp HCM [13] Ngô Diên Tập, Kỹ Thuật AVR, Nhà xuất KH & KT – 2003 [14] Văn Thế Minh, Kỹ Thuật vi xử lý, Nhà xuất giáo dục – 1997 [15] Các tài liệu vi điều khiển ATMEL, MICROCHIP 386

Ngày đăng: 28/09/2021, 16:34

Từ khóa liên quan

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

Tài liệu liên quan