Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 114 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
114
Dung lượng
1,98 MB
Nội dung
MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân MỤC LỤC MỤC LỤC Lời Mở Đầu CHƢƠNG 1: NỘI DUNG YÊU CẦU ĐỀTÀI 10 2.1 Pic gì? 11 2.2 Tại dùng Pic? 11 2.2 Các dòng Pic Và cách lựa chọn Viđiềukhiển Pic 11 2.4 Ngôn ngữ lập trình cho Pic 12 2.5 Mạch nạp Pic 12 2.6 VIĐIỀUKHIỂN PIC 16F877A 13 2.6.3 SƠ ĐỒ KHỐI CỦA PIC 16f877A 16 2.6.4 TỔ CHỨC BỘ NHỚ 18 2.6.4.1 Bộ nhớ chƣơng trình 18 2.6.4.2 Bộ nhớ liệu 18 2.6.4.3 Stack 21 2.6.6 TIMER 25 2.6.6.1 Timer 25 2.6.6.2 Timer 26 2.6.6.3 Timer 27 2.6.7 ADC 29 2.7 CÁC CHUẨN GIAOTIẾP 31 SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân 2.7.1 GIAOTIẾP NỐI TIẾP 31 2.7.1.1 USART 31 2.7.1.1.1 USART bất đồng 32 2.7.1.1.2 USART đồng 36 2.7.2 Chuẩn giaotiếpI2C 36 2.7.2.1 Giới thiệu I2C 36 2.7.2.2 Đặc điểm giaotiếpI2C 37 2.7.2.3 Điều kiện Start Stop 41 2.7.2.4 Định dạng liệu truyền 42 2.7.2.5 Định dạng địa thiết bị 45 2.7.2.6 Truyền liệu bus I2C, chế độ Master –Slave 45 2.7.3 Chuẩn giaotiếp SPI 49 2.7.3.1 SPI Master mode 50 2.7.3.2 SPI Slave mode 50 2.7.4 Cổng giaotiếp song song PSP(Parallel Slave Port) 51 2.7.4.1 Sơ lƣợc cấu tạo chức PSP 51 2.7.4.1.1 Cấu tạo phần cứng SSP viđiềukhiển PIC 16F877A 52 2.7.4.1.2 Quá trình truyền nhận liệu qua SSP 52 2.8 Các đặc tính Oscillator 55 2.9 Các chế độ Reset 55 2.10 Interrup 57 2.10.1 Ngắt gì? 57 SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân 2.10.2 Cấu trúc Interrup 61 2.11.1 HIỂN THỊ LED ĐƠN 62 2.11.1.1 Giới Thiệu Chung: 62 2.11.1.2 Tính toán giá trị điện trở 63 2.11.2.1Các khái niệm 64 2.11.2.2 Kết nối với ViĐiềuKhiển 65 2.11.2.3 GiaoTiếpViĐiềuKhiển Với Nhiều Led Đoạn : 69 2.11.3 LED MA TRẬN 72 2.11.3.1 Hiển thị led Ma Trận 72 2.11.3.1.1 Giới thiệu: 72 2.11.3.1.2 Led Ma Trận 8x8: 73 2.11.3.1.3 Chốt Hàng: 75 2.11.3.1.4 Chốt Cột: 76 2.11.3.2 Phƣơng Pháp Dùng Thanh Ghi Dịch: 77 2.11.3.2.1 Quét Hàng: 77 2.11.3.2.2 Quét Cột: 79 2.11.3.2.2.1 Giới thiệu chung phƣơng pháp quét cột 79 2.11.3.2.2.2 Quá trình thực quét cột 79 2.11.4 HIỂN THỊ LCD 83 2.11.4.1 Giới Thiệu Chung Về LCD 83 2.11.4.2 Tên chân chức năng: 84 CHƢƠNG PHÂN TÍCH THIẾT KẾ 85 SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân 3.1 SƠ ĐỒ KHỐI 85 3.2 PHÂN TÍCH MẠCH 86 3.2.1 MẠCH NGUỒN 86 3.2.2 MẠCH MASTER 88 3.2.3 MẠCH SLAVE 89 CHƢƠNG 4:GIẢI THUẬT VÀ CHƢƠNG TRÌNH 97 CHƢƠNG 5: TỔNG KẾT 116 KẾT LUẬN 117 SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân Lời Cảm Ơn Nhóm chúng em xin chân thành gửi lời cảm ơn đến thầy Tống Thanh Nhân cƣơng vịGiáo viên hƣớng dẫn đềtài tận tình giúp đỡ suốt trình thực Đềtài tốt nghiệp Đồng thời xin bày tỏ lòng biết ơn đến thầy cô trƣờng Cao Đẳng Kỹ Thuật Cao Thắng đặc biệt thầy cô Khoa Điện Tử-Tin Học tận tình dạy dỗ truyền thụ kinh nghiệm kiến thức quý báu suốt thời gian đào tạo trƣờng Chân thành cảm ơn ! Sinh viên thực hiện: TRƢƠNG CÔNG NGHIỆP NGUYỄN DUY LINH SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân Lời Mở Đầu Trong thời đại khoa học ngày nay, lĩnh vực khoa học kỹ thuật phát triển nhanh ngày, đặc biệt lĩnh vực công nghệ điện tử trở nên cần thiết cho xã hội động lực để tạo nên xã hội tiên tiến - đại Hiện khoa học – kỹ thuật đất nƣớc ta bƣớc phát triển hòa chung vào phát triển chung toàn cầu Trên đà phát triển đó, vấn đề tự động hoá – khoa học điện tử đƣợc ứng dụng cách rộng rãi trình sản xuất, đặc biệt vấn đề nghiên cứu trở thành nhu cầu cần thiết, với xuất cuả Chip vi xử lý máy tính với việc ứng dụng rộng rãi đẩy vấn đề tự động hoá lên bƣớc caođể cải thiện đƣợc lao động chân tay ngƣời … Chính Chip vi xử lý đặc biệt Họ Viđiềukhiển PIC đƣợc sử dụng rộng rãi việc giảng dạy đào tạo cho sinh viên nhằm tạo nguồn lao động có trình độ kỹ thuật cao phục vụ sản xuất Để hòa nhập vào cộng đồng cƣ dân điện tử thời đại ngày nay, nhóm chúng em định nghiên cứu lĩnh vực này, với kiến thức có phạm vi hiểu biết mình, chúng em tìm hiểu thực đề tài: “ MạngViĐiềuKhiểnGiaotiếpI2C ” SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân CHƢƠNG 1: NỘI DUNG YÊU CẦU ĐỀTÀI Sử dụng chức giaotiếpviđiềukhiển (pic 16f877a) mode i2cđểgiaotiếp với thiết bị slave chế độ one master – multislave Dữ liệu đƣợc truyền từ thiết bị chủ (master) tới thiết bị tớ (slave) Khi nhận đƣợc lệnh từ master slave hiển thị kết thông qua thiết bị ngoại vi (ICs) Yêu cầu: -Nắm đƣợc kiến thức giao thƣc, địa chỉ, cách thức truyền liệu -Lập trình cho viđiềukhiển thông qua trình biên dịch CCS dùng ngôn ngữ lập trình C -Nắm vững kiến thức viđiềukhiển thành phần chức đặc biệt chức giaotiếp với IC với thông qua bus i2c SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang 10 MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân CHƢƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Pic gì? PIC viết tắt “Programable Intelligent Computer”, tạm dịch “máy tính thông minh khả trình” hãng Genenral Instrument đặt tên cho viđiềukhiển họ PIC1650 đƣợc thiết kế để dùng làm thiết bị ngoại vi cho viđiềukhiển CP1600 Viđiềukhiển sau đƣợc nghiên cứu phát triển thêm từ hình thành nên dòng viđiềukhiển PIC ngày 2.2 Tại dùng Pic? Họ viđiềukhiển tìm mua dễ dàng thị trƣờng Việt Nam Giá thành không đắt Có đầy đủ tính viđiềukhiển hoạt động độc lập Là bổ sung tốt kiến thức nhƣ ứng dụng cho họ viđiềukhiểnmang tính truyền thống: họ viđiềukhiển 8051 Số lƣợng ngƣời sử dụng họ viđiềukhiển PIC Hiện Việt Nam nhƣ giới, họ viđiềukhiển đƣợc sử dụng rộng rãi Điều tạo nhiều thuận lợi trình tìm hiểu phát triển ứng dụng nhƣ: số lƣợng tài liệu, số lƣợng ứng dụng mở đƣợc phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm đƣợc dẫn gặp khó khăn, Sự hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình, nạp chƣơng trình từ đơn giản đến phức tạp,… Các tính đa dạng viđiềukhiển PIC, tính không ngừng đƣợc phát triển 2.2 Các dòng Pic Và cách lựa chọn Viđiềukhiển Pic Các kí hiệu viđiềukhiển PIC: PIC12xxxx: độ dài lệnh 12 bit PIC16xxxx: độ dài lệnh 14 bit PIC18xxxx: độ dài lệnh 16 bit C: PIC có nhớ EPROM (chỉ có 16C84 EEPROM) SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang 11 MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân F: PIC có nhớ flash LF: PIC có nhớ flash hoạt động điện áp thấp LV: tƣơng tự nhƣ LF, kí hiệu cũ Bên cạnh số viđiệukhiển có kí hiệu xxFxxx EEPROM, có thêm chữ A cuối flash (ví dụ PIC16F877 EEPROM, PIC16F877A flash) Ở Việt Nam phổ biến họ viđiềukhiển PIC hãng Microchip sản xuất Cách lựa chọn viđiềukhiển PIC phù hợp: Trƣớc hết cần ý đến số chân viđiềukhiển cần thiết cho ứng dụng Có nhiều viđiềukhiển PIC với số lƣợng chân khác nhau, chí có viđiềukhiển có chân,ngoài có viđiềukhiển 28, 40, 44, … chân Cần chọn viđiềukhiển PIC có nhớ flash để nạp xóa chƣơng trình đƣợc nhiều lần Tiếp theo cần ý đến khối chức đƣợc tích hợp sẵn viđiều khiển, chuẩn giaotiếp bên Sau cần ý đến nhớ chƣơng trình mà viđiềukhiển cho phép 2.4 Ngôn ngữ lập trình cho Pic Ngôn ngữ lập trình cho PIC đa dạng Ngôn ngữ lập trình cấp thấp có MPLAB (đƣợc cung cấp miễn phí nhà sản xuất Microchip), ngôn ngữ lập trình cấp caobao gồm C, Basic, Pascal,… Ngoài có số ngôn ngữ lập trình đƣợc phát triển dành riêng cho PIC nhƣ PICBasic, MikroBasic,… 2.5 Mạch nạp Pic Đây dòng sản phẩm đa dạng dành cho viđiềukhiển PIC Có thể sử dụng mạch nạp đƣợc cung cấp nhà sản xuất hãng Microchip nhƣ: PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II Có thể dùng sản phẩm để nạp cho viđiềukhiển khác thông qua chƣơng trình MPLAB Dòng sản phẩm thống có ƣu nạp đƣợc cho tất viđiềukhiển PIC, nhiên giá thành cao thƣờng gặp nhiều khó khăn trình mua sản phẩm SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang 12 MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân 2.6 VIĐIỀUKHIỂN PIC 16F877A Hình : Pic 16F877A SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang 13 MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân CODE SLAVE1 /************HIEN LED 7**********/ #define chon_led1 pin_a0 #define chon_led2 pin_a1 #define chon_led3 pin_a2 #define chon_led4 pin_a3 unsigned char const digits[10] = {192,249,164,176,153,146,130,248,128,144}; void display_digit(int8 digit){ output_d(digits[digit]); output_a(0xff); delay_us(50); } /***************************main*************************/ #include #FUSES NOWDT #FUSES XT #FUSES PUT #FUSES NOPROTECT #FUSES NOLVP SVTH: Nguyễn Duy Linh Trƣơng Công Nghiệp Trang 103 MẠNGVIĐIỀUKHIỂNGIAOTIẾPI2C GVHD: Tống Thanh Nhân #use delay(clock=4000000) #use i2c(SLAVE, FORCE_HW) SDA=PIN_C4, SCL=PIN_C3, address=0xa0, SLOW, #include "driver_segment_led.c" int8 data = 0; #INT_SSP void i2c_isr(){ data = i2c_read(); } int16 Test_i2c(){ if(data==0xa0){ while(data==0xa0); if(data==1)return 1; if(data==2)return 2; if(data==3)return 3; //data = 0; } } void display_singel_led(){ int16 i; for(i=0;i