Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
1,41 MB
Nội dung
Header Page of 161 BỘ GIÁO DỤC VÀ ĐÀO TAO TRƯỜNG………………… Đồ án Thiết kế hệ thống giao tiếp I2C hai vi điều khiển PIC Footer Page of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG LỜI MỞ ĐẦU Ngày nay, với phát triển không ngừng cách mạng khoa học kĩ thuật, ngành kĩ thuật điện tử dần khẳng định vai trò ngày lớn đƣa ngƣời bƣớc sang kỉ nguyên mới:kỉ nguyên số Trong số ta không nói đến kĩ thuật vi điều khiển Kỹ thuật vi điều khiển có ứng dụng rộng rãi thâm nhập vào nhiều lĩnh vực kỹ thuật đời sống xã hội Hầu hết thiết bị kỹ thuật từ đơn giản phức tạp nhƣ thiết bị điều khiển tự động, thiết bị văn phòng, thiết bị gia đình dùng vi điều khiển Cùng với ngƣời ngày hoàn thiện chuẩn giao tiếp để kết nối thiết bị điện tử với thực việc trao đổi thông tin, điều khiển cấu chấp hành cách thuận lợi Với kiến thức đƣợc học kiến thức cập nhập, nghiên cứu với hƣớng dẫn thầy giáo hƣớng dẫn Em chọn đề tài: Thiết kế hệ thống giao tiếp I2C hai vi điều khiển PIC Đồ án em gồm phần: Chƣơng :Tổng quan pic giao tiếp I2C Chƣơng hai :Thiết kế hệ thống giao tiếp I2C pic 16F877A Trong trình làm đồ án tốt nghiệp, hạn chế thời gian, tài liệu nên không tránh khỏi thiếu sót Em mong đƣợc góp ý thầy cô hội đồng bạn để đồ án tốt nghiệp em đƣợc hoàn thiện Em xin gửi lời cảm ơn chân thành đến nhà trƣờng thầy cô khoa Điện tử, đặc biệt thầy Đoàn Hữu Chức giúp đỡ em hoàn thành đồ án Hải Phòng, ngày 30 tháng 10 năm 2010 Sinh viên Bùi Văn Nguyên Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG CHƢƠNG TỔNG QUAN Sơ lƣợc vi xử lý vi điều khiển 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 đƣợc tích hợp với mật độ cao cao diện tích nhỏ, nhờ thiết bị điện tử 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á công nghệ điện tử, công ty Intel cho đời vi xử lý đầu tiên, tức phần cứng đóng vai trò thứ yếu, phần mềm (chƣơng trình) đóng vai trò chủ đạo chức cần thực Nhờ vi xử lý có mềm dẻo hóa chức Ngày vi xử lý có tốc độ tính toán cao khả xử lý lớn Vi xử lý có khối chức cần thiết để lấy liệu, xử lý liệu xuất liệu sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn nhƣ cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý khả giao tiếp trực tiếp với thiết bị ngoại vi, có khả nhận xử lý liệu mà Để vi xử lý hoạt động cần có chƣơng trình kèm theo, chƣơng trình điều khiển mạch logic từ vi xử lý xử lý liệu cần thiết theo yêu cầu.Chƣơng trình tập hợp lệnh để xử lý liệu thực lệnh đƣợc lƣu trữ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ nhớ, giải mã lệnh thực lệnh sau giải mã Để thực công việc với thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự hình đòi hỏi phải kết hợp vi xử lý với mạch điện giao tiếp với bên đƣợc gọi thiết bị I/O (nhập/xuất) hay gọi thiết bị ngoại vi Bản thân vi xử lý đứng Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG nhiều hiệu sử dụng, nhƣng phần máy tính, hiệu ứng dụng Vi xử lý lớn Vi xử lý kết hợp với thiết bị khác đƣợc sử hệ thống lớn, phức tạp đòi hỏi phải xử lý lƣợng lớn phép tính phức tạp,có tốc độ nhanh Chẳng hạn nhƣ hệ thống sản xuất tự động công nghiệp, tổng đài điện thoại, robot có khả hoạt động phức tạp v.v Bộ Vi xử lý có khả vƣợt bậc so với hệ thống khác khả tính toán, xử lý, thay đổi chƣơng trình linh hoạt theo mục đích ngƣời dùng, đặc biệt hiệu toán hệ thống lớn Tuy nhiên ứng dụng nhỏ, tầm tính toán không đòi hỏi khả tính toán lớn việc ứng dụng vi xử lý cần cân nhắc Bởi hệ thống dù lớn hay nhỏ, dùng vi xử lý đòi hỏi khối mạch điện giao tiếp phức tạp nhƣ Các khối bao gồm nhớ để chứa liệu chƣơng trình thực hiện, mạch điện giao tiếp ngoại vi để xuất nhập điều khiển trở lại, khối liên kết với vi xử lý thực đƣợc công việc Để kết nối khối đòi hỏi ngƣời thiết kế phải hiểu biết tinh tƣờng thành phần vi xử lý, nhớ, thiết bị ngoại vi Hệ thống đƣợc tạo phức tạp,chiếm nhiều không gian, mạch in phức tạp vấn đề trình độ ngƣời thiết kế Kết giá thành sản phẩm cuối cao, không phù hợp để áp dụng cho hệ thống nhỏ Vì số nhƣợc điểm nên nhà chế tạo tích hợp nhớ số mạch giao tiếp ngoại vi với vi xử lý vào IC đƣợc gọi Microcontroller-Vi điều khiển Vi điều khiển có khả tƣơng tự nhƣ khả vi xử lý, nhƣng cấu trúc phần cứng dành cho ngƣời dùng đơn giản nhiều.Vi điều khiển đời mang lại tiện lợi ngƣời dùng,họ không cần nắm vững khối lƣợng kiến thức lớn nhƣ ngƣời dùng vi xử lý, kết cấu mạch điện dành cho ngƣời dùng trở nên đơn giản nhiều có khả giao tiếp trực tiếp với thiết bị bên ngoài.Vi điều khiển đƣợc xây dựng với phần cứng dành cho ngƣời sử dụng đơn giản hơn, nhƣng thay vào lợi Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG điểm khả xử lý bị giới hạn(tốc độ xử lý chậm khả tính toán hơn,dung lƣợng chƣơng trình bị giới hạn) Thay vào đó, vi điều khiển có giá thành rẻ nhiều so với vi xử lý, việc sử dụng đơn giản,do đƣợc ứng dụng rộng rãi vào nhiều ứng dụng có chức đơn giản, không đòi hỏi tính toán phức tạp Vi điều khiển đƣợc ứng dụng dây chuyền tự động loại nhỏ, robot có chức đơn giản, máy giặt, ôtô v.v Năm 1976 Intel giới thiệu vi điều khiển (microcontroller) 8748, chip tƣơng tự nhƣ 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 cho chip 8051,bộ Vi điều khiển họ MCS-51 chuẩn công nghệ cho nhiều họ vi điều khiển đƣợc sản xuất sau này.Sau nhiều họ vi điều khiển nhiều nhà chế tạo khác lần lƣợt đƣợc đƣa thị trƣờng với tính đƣợc cải tiến ngày mạnh Các vi điều khiển thông dụng: + Họ vi điều khiển AMCC: tập đoàn “Applied Micro Circuits Corporation” sản xuất Tháng 5/2004, họ vi điều khiển đƣợc phát triển đƣa thị trƣờng IBM, bao gồm: 403 PowerPC CPU PPC 403GCX 405 PowerPC CPU PPC 405EP PPC 405GP/CR PPC 405GPr PPC NPe405H/L 440 PowerPC Book-E CPU Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG PPC 440GP PPC 440GX PPC 440EP/EPx/GRx PPC 440SP/SPe + Họ vi điều khiển Atmel: Dòng Atmel AT91 (Kiến trúc ARM THUMB) Dòng AT90, Tiny & Mega – AVR (Atmel Norway design) Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51) Dòng MARC4 + Họ vi điều khiển Freescale Semiconductor: Năm 2004, vi điều khiển đƣợc phát triển tung thị trƣờng Motorola Dòng 8-bit 68HC05 (CPU05) 68HC08 (CPU08) 68HC11 (CPU11) Dòng 16-bit 68HC12 (CPU12) 68HC16 (CPU16) Freescale DSP56800 (DSPcontroller) Dòng 32-bit Freescale 683XX (CPU32) MPC500 MPC 860 (PowerQUICC) Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG MPC 8240/8250 (PowerQUICC II) MPC 8540/8555/8560 (PowerQUICC III) + Họ vi điều khiển Intel Dòng 8-bit 8XC42 MCS48 MCS51 8061 8xC251 Dòng 16-bit 80186/88 MCS96 MXS296 Dòng 32-bit 386EX i960 + Họ vi điều khiển Microchip 12-bit instruction PIC 14-bit instruction PIC PIC16F84 16-bit instruction PIC Trong họ vi điều khiển Microchip đƣợc ứng dụng phổ biến nhất, đặc biệt PIC16F877A đƣợc tích hợp thêm thành phần nhƣ chuyển đổi A/D 10 bits, lập trình phần mềm điều khiển đơn giản Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 2.Tổng quan vi điều khiển PIC 2.1.PIC gì? PIC viết tắt thuật ngữ “Programable Interlligent Compurter”, tạm dịch “máy tính thông minh khả trình” hãng Gnenral Intrusment đặt tên cho vi điều khiển đầu tiên họ PIC 1650 đƣợc thiết kế dùng làm thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển sau đƣợc nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC nhƣ ngày 2.2 Đặc điểm PIC so với loại vi điều khiển khác Hiện thị trƣờng có nhiều loại vi điều khiển khác nhƣ: 8051 Motorola 68HC, AVR, ARM…Tuy PIC đƣợc sử dụng ngày đƣợc phổ biến bởi: - Dễ dàng mua đƣợc thị trƣờng Viêt Nam - Giá thành không đắt - Có đầy đủ tính vi điều khiển hoạt động độc lập - Là bổ xung tốt kiến thức nhƣ ứng dụng cho họ vi điều khiển mang tính truyền thống nhƣ 8051 - Có hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình,mạch nạp từ đơn giản đến mức cao - Các tính đa dạng vi điều khiển PIC,ngày đƣợc mở rộng, phát triển 2.3 Kiến trúc PIC Kiến trúc phần cứng vi điều khiển đƣợc thiết kế theo dạng kiến trúc:kiến trúc Von Neuman kiến trúc Havard Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page of 161 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG Harvard Data mem ory 14 CPU Von_Neumann Progr am mem ory CPU Progr am and data mem ory Hình 1.1 Kiến trúc Harvard kiến trúc Von-Neumann Tổ chức phần cứng PIC đƣợc tổ chức theo kiểu kiến trúc Harvard Điểm khác biệt kiến trúc Harvard Von-Neumann cấu trúc nhớ liệu nhớ chƣơng trình Đối với kiến trúc Von-Neumann, nhớ liệu nhớ chƣơng trình nằm chung nhớ Do ta tổ chức, cân đối cách linh hoạt nhớ chƣơng trình nhớ liệu Tuy nhiên điều có ý nghĩa tốc độ xử lí CPU cao, với cấu trúc thời điểm CPU tƣơng tác với nhớ liệu nhớ chƣơng trình Nhƣ nói cấu trúc Von-Neumann không phù hợp với cấu trúc vi điều khiển Đối với cấu trúc Harvard, nhớ chƣơng trình nhớ liệu tách thành hai nhớ riêng biệt.Do thời điểm CPU tƣơng tác với hai nhớ,nhƣ tốc độ xử lí đƣợc cải thiện đáng kể Một điểm cần ý tập lệnh kiến trúc Harvard đƣợc tối ƣu tùy theo yêu cầu kiến trúc vi điều khiển mà không phụ thuộc vào cấu trúc liệu.Ví dụ với vi điều khiển dòng 16F độ dài 14 bít ( liệu đƣơc tổ chức thành byte) Đặc điểm đƣợc minh họa hình 1.1 2.4 RISC CISC Nhƣ trên,kiến trúc Harvard khái niệm so với kiến trúc VonNeumann.Khái niệm đƣợc cải thiện nhằm cải tiến tốc độ thực thi vi điều khiển.Qua việc tách rời nhớ chƣơng trình nhớ liệu,bus chƣơng trình Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 of 161 Header Page 10 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG bus liệu.CPU lúc truy xuất nhớ chƣơng trình nhớ liệu,giúp tăng tốc độ xử lí liệu nên gấp đôi.Đồng thời cấu trúc lệnh không phụ thuộc vào cấu trúc liệu mà linh động điều chỉnh tùy theo khả tốc độ vi điều khiển.Và để tiếp tục cải tiến tốc độ thực thi lệnh,tập lệnh họ vi điều khiển PIC đƣợc thiết kế cho chiều dài mã lệnh cố định (ví dụ với họ 16Fxxxx chiều dài mã lệnh 14 bit),và cho phép thực thi chu kì xung clock (ngoại trừ số trƣờng hợp đặc biệt nhƣ lệnh nhảy, lệnh gọi chƣơng trình con-cần hai xung đồng hồ) Điều có nghĩa tập lệnh vi điều khiển thuộc cấu trúc Harvard lệnh hơn,ngắn hơn,đơn giản để đáp ứng yêu cầu mã hoá lệnh số lƣợng bit định Vi điều khiển đƣợc tổ chức theo kiến trúc Harvard đƣợc gọi vi điều khiển RISC (Reducer Instruction Set Computer) vi điều khiển có tập lệnh rút gọn Vi điều khiển đƣợc thiết kế theo kiểu kiến trúc Von-Neuman đƣợc gọi vi điều khiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp lệnh số cố định mà bội số 8bit (1 byte) 2.5 PIPELINING (xử lí song song) Đây chế xử lí lệnh vi điều khiển PIC.Một chu kì lệnh vi điều khiển bao gồm xung clock.Ví dụ ta sử dụng oscillator có tần số MHZ xung lệnh có tần số MHZ (chu ki lệnh ns) Giả sử ta có đoạn chƣơng trình nhƣ sau: 1.MOVLW 55h 2.MOVWF PORT B 3.CALL SUB_1 4.BSF PORT A,BIT instruction @ address SUB_1 Ở ta bàn đến quy trình vi điều khiển xử lí đoạn chƣơng trình thông qua chu kì lệnh.quá trình đƣợc thực thi nhƣ sau: Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 10 of 161 Header Page 54 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 2.2 Sơ đồ chi tiết Hình 2.2 Sơ đồ mạch chi tiết giao tiếp I2C với PIC Để tƣờng minh việc truyền nhận liệu hai vi điều khiển PIC em sử dụng mạch đo nhiệt độ dùng cảm biến nhiệt LM335 Tín hiệu điện áp lối cảm biến đƣợc đƣa vào biến đổi tƣơng tự số vi điều khiển PIC Có thể đƣa vào vi điều khiển chủ (Master) vi điều khiển tớ (Slave) Trong thiết kế em đƣa tín hiệu vào chân AN0 vi điều khiển chủ Sơ đồ mạch đo nhƣ hình 2.3 dƣới Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 54 of 161 53 Header Page 55 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG Hình 2.3 Mạch cảm biến đo nhiệt độ dùng để lấy liệu truyền nhận cho giao tiếp I2C 2.3 Thiết kế khối 2.3.1 Khối nguồn nuôi a.Sơ đồ khối Biến áp AC chỉnh lƣu Bộ ổn áp DC Hình 2.4 Sơ đồ khối nguồn nuôi b Sơ đồ nguyên lí Hình 2.5 Sơ đồ chi tiết mạch nguồn Nguồn ổn định cung cấp cho hệ thống nguồn +5V Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 55 of 161 54 Header Page 56 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG Mạch lấy nguồn chiều từ máy biến áp với điện áp từ 6V đến 12V đƣa vào ngõ vào Sau cho qua IC ổn áp 7805 để tạo ngõ OUT +5V ổn định cấp cho toàn mạch Tụ điện đóng vai trò ổn định chống nhiễu cho nguồn 2.3.2 PIC 26F877A Ở em sử dụng m PIC đóng vai trò Master, PIC Slave, giao tiếp với thông qua giao tiếp I2C Sơ đồ chân chi tiết vi điều khiển PIC16F877A đƣợc cho dƣới Hình 2.6 Sơ đồ chân chi tiết Để vi điều khiển hoạt động ta cần cấp nguồn cho nó, PIC 16F877A có chân cấp nguồn chân 11, 32 nối nguồn +5V, chân 12, 31 nối đất Sau cấp nguồn ta cần cung cấp tiếp xung clock cho hoạt động vi điều khiển Ở ta dùng thạch anh làm nguồn xung để cấp cho PIC qua chân 13,14 PIC Tuy nhiên nhƣ ta biết, xung dao động thạch anh tạo không thực Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 56 of 161 55 Header Page 57 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG ổn định cách tuyệt đối, cách khắc phục gắn thêm tụ lọc vào thạch anh Thạch anh sử dụng 20MHz Vậy ta mắc đƣợc sơ đồ mạch nguyên lý khối nhƣ sau: Hình 2.7 Sơ đồ mạch 16F877A Chân số MCLR đƣợc đấu nối thêm nhƣ đóng vai trò reset PIC, làm việc sƣờn xuống (mức 0) Khi SW1 mở điện áp vào chân số +5V (mức 1) PIC không đƣợc reset, SW1 đóng, mạch kín, chân số nối đất, điện áp vào 0V (mức 0) mức kích hoạt, hoạt động PIC đƣợc reset lại Do giao tiếp PIC giao tiếp I2C nên chân 18 (SDA) 23 (SCL) cuả PIC đƣợc nối với Mỗi dây SDA hay SCL đƣợc nối với điện áp dƣơng nguồn cấp thông qua điện trở kéo lên (full-up resistor) 2.3.3 Khối hiển thị Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) đƣợc sử dụng nhiều ứng dụng VĐK LCD có nhiều ƣu điểm so với Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 57 of 161 56 Header Page 58 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG dạng hiển thị khác nhƣ có khả hiển thị kí tự đa dạng, trực quan (chữ, số kí tự đồ họa), dễ dàng đƣa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn tài nguyên hệ thống giá thành rẻ Ở em sử dụng HD44780 Hitachi, loại thiết bị hiển thị LCD thông dụng nƣớc ta, cụ thể sử dụng LCD_DM 1602A) Hình 2.8 Sơ đồ chi tiết LCD 16x2 LCD1602 loại dòng, 16 kí tự, sử dụng nguồn nuôi thấp (từ 2,5 đến 5V) Có thể hoạt động hai chế độ bit bit (trong đề tài em sử dụng chế độ bit) Với đầu vào bit đƣợc lấy từ chân D4D7 LCD nối từ RB2RB5 vi điều khiển PIC Chân RW đóng vai trò chọn chế độ đọc ghi cho LCD, mức logic “0” LCD hoạt động chế độ ghi, ngƣợc lại chế độ đọc Chân RS LCD đƣợc nối với chân RB6 Vi điều khiển Chân E LCD đƣợc nối với chân RB7 Vi điều khiển Các tín hiệu điều khiển cho phép hiển thị LCD đƣợc thực thông qua lập trình Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 58 of 161 57 Header Page 59 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 2.3.4 Khối ngoại vi Nhƣ trình bày 2.4 Lƣu đồ thuật toán Với Master Start Khởi tạo LCD,ADC,I 2C Đọc ADC Gọi hàm Write I2C Gọi hàm Read I2C Gọi c.trình hiển thị LCD Yes Tiếp tục No End Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 59 of 161 58 Header Page 60 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG Với Slave Start Khởi tạo I2C Gọi hàm ngắt i2c_isr ( ) Nhận từ Master truyền lại Master Delay Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 60 of 161 59 Header Page 61 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 2.5 Thiết kế chƣơng trình Cho Master #include #fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use Delay (Clock=4000000) #include #use i2c (master, sda=PIN_C4, scl=PIN_C3, force_hw) #use fast_io (b) #use fast_io (c) void convert_bcd (unsigned int data) { int8 d1, d2, d3; d1=(int8) data/100; d2=(int8) (data/10)%10; d3=(int8) data%10; d1=d1+0x30; d2=d2+0x30; d3=d3+0x30; lcd_putcmd (line_2+11); lcd_putchar (d1); lcd_putcmd (line_2+12); lcd_putchar (d2); lcd_putcmd (line_2+13); Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 61 of 161 60 Header Page 62 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG lcd_putchar (d3); lcd_putcmd (line_2+14); lcd_putchar (" "); lcd_putcmd (line_2+15); lcd_putchar ("C"); } void write_I2C (int8 value, int8 slave_addr) { i2c_start (); i2c_write (slave_addr); i2c_write (value); i2c_stop (); } int8 read_I2C (int8 slave_addr) { int8 value_re; i2c_start(); i2c_write (slave_addr + 1); value_re = i2c_read (0); i2c_stop (); return value_re; } void main () { Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 62 of 161 61 Header Page 63 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG int8 value; const int8 slave_addr = 0x10; set_tris_b (0x00); set_tris_c (0x80); set_tris_a (0xff); lcd_init (); lcd_putcmd (line_1); printf (lcd_putchar,"Giao tiep I2C"); lcd_putcmd (line_2); printf (lcd_putchar,"Value:"); setup_adc_ports (AN0); setup_adc (ADC_CLOCK_INTERNAL); set_ADC_channel (0); read_adc (adc_start_only); delay_us (10); while (1) { value=(float) read_adc (); write_I2C (value, slave_addr); // Gui di delay_ms (50); value = read_I2C (slave_addr); // Nhan lai value = (value - 139.23)/0.513; convert_bcd (value); delay_ms (10); Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 63 of 161 62 Header Page 64 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG output_d (value); } } Cho Slave #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay (Clock=4000000) #ues i2c (SLAVE,SDA=PIN_C4,SCL=PIN_C3.address=0x10,force_hw) int8 value = 0x01; #INT_SSP Void i2c_isr ( ) { Int8 state; state = i2c_isr_state (); if (state < 0x80) value = i2c_read (); if (state == 0x80) { i2c_write (value); } } void main ( ) { Enable_int errupts (GLOBAL); Enable_int erupts (INT_SSP); set_tris_b (0x00); Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 64 of 161 63 Header Page 65 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG ƣhile (1) { output_b (value) ; } } Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 65 of 161 64 Header Page 66 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG KẾT LUẬN Sau thời gian nghiên cứu làm đồ án, với giúp đỡ tận tình thầy cô giáo bạn Đặc biệt thầy Đoàn Hữu Chức em hoàn thành nhiệm vụ đồ án Qua đồ án em thấy đƣợc ứng dụng quan trọng vi điều khiển Giao tiếp I2C giao tiếp đo lƣờng điều khiển, sử dụng vi điều khiển thu thập đƣợc đại lƣợng cần đo, xử lý đại lƣợng đƣa kết mong muốn Hiện vi điều khiển đa năng, nhỏ gọn, áp dụng vi điều khiển vào sống cần thiết Mặc dù cố gắng nhƣng trình làm đồ án tốt nghiệp, hạn chế thời gian, tài liệu trình độ có hạn nên không tránh khỏi có thiếu sót Em mong đƣợc góp ý, bảo thầy cô bạn để giúp em nâng cao kiến thức, chuyên môn phục vụ cho công việc sau Em xin chân thành cảm ơn! Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 66 of 161 65 Header Page 67 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG MỤC LỤC LỜI MỞ ĐẦU CHƢƠNG TỔNG QUAN Sơ lƣợc vi xử lý vi điều khiển 2.Tổng quan vi điều khiển PIC 2.1.PIC gì? 2.2 Đặc điểm PIC so với loại vi điều khiển khác 2.3 Kiến trúc PIC 2.4 RISC CISC 2.5 PIPELINING (xử lí song song) 2.6 Các dòng PIC cách lựa chọn vi điều khiển PIC 11 2.7 Ngôn ngữ lập trình cho PIC 12 2.8 Mạch nạp PIC 12 Tổng quan PIC 16F877A 13 3.1 Sơ đồ khối bảng mô tả chức chân PIC16F877A 13 3.2 Tổ chức nhớ 18 3.2.1 Tổ chức nhớ chƣơng trình 19 3.2.2 Tổ chức nhớ liệu 19 3.2.3 Các ghi mục đích chung 19 3.2.4 Các ghi chức đặc biệt 21 3.2.5 Các ghi trạng thái 21 3.3 Các cổng PIC 16F877A 22 3.3.1 PORTA ghi TRISA 22 3.3.2 PORTB ghi TRISB 23 3.3.3 PORT C ghi TRIS C 25 3.3.4 PORT D ghi TRIS D 28 3.3.5 PORT E ghi TRIS E 29 3.4 Hoạt động định thời 31 Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 67 of 161 66 Header Page 68 of 161.TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 3.4.1 Bộ định thời TIMER 31 3.4.2 Bộ định thời TIMER1 33 3.4.3 Bộ định thời TIMER2 34 Giao tiếp I2C 36 4.1.Giới thiệu chung I2C 36 4.1.1 Đặc điểm giao tiếp I2C 37 4.2 I2C vi điều khiển PIC 45 4.2.1 Tổng quan chung 45 4.2.2 Truyền nhận liệu dùng I2C 46 4.2.3 Giao tiếp I2C vi điều khiển 16F87x 47 CHƢƠNG 2: 52 THIẾT KẾ HỆ THỐNG GIAO TIẾP I2C GIỮA PIC 52 2.1 Sơ đồ khối hệ thống 52 2.2 Sơ đồ chi tiết 52 2.3 Thiết kế khối 54 2.3.1 Khối nguồn nuôi 54 2.3.2 PIC 26F877A 55 2.3.3 Khối hiển thị 56 2.3.4 Khối ngoại vi 58 2.4 Lƣu đồ thuật toán 58 2.5 Thiết kế chƣơng trình 60 KẾT LUẬN 65 Footer Sinh viên: Bùi Văn Nguyên Lớp: PageĐT1001 68 of 161 67 ... dẫn Em chọn đề tài: Thiết kế hệ thống giao tiếp I2C hai vi điều khiển PIC Đồ án em gồm phần: Chƣơng :Tổng quan pic giao tiếp I2C Chƣơng hai :Thiết kế hệ thống giao tiếp I2C pic 16F877A Trong trình... cho vi điều khiển đầu tiên họ PIC 1650 đƣợc thiết kế dùng làm thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển sau đƣợc nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC. .. dòng vi điều khiển PIC dsPIC Ở Vi t Nam phổ biến họ vi điều khiển PIC hãng Microchip sản xuất Cách lựa chọn vi điều khiển PIC cho phù hợp: - Trƣớc hết cần biết số chân vi điều khiển cần thiết