Đồ án Thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC

68 13 0
Đồ án Thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC

Đ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

Đồ án Thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC

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 TR NG Đ I H C DÂN L P H I PHọNG L IM Đ U Ngày nay, với phát tri n không ngừng cách m ng khoa học vƠ kĩ thu t, ngƠnh kĩ thu t điện tử dần khẳng đ nh vai trị ngƠy cƠng lớn đ a ng i b ớc sang k nguyên mới:k nguyên s Trong s ta khơng th khơng nói đ n kĩ thu t vi u n Kỹ thu t vi u n có ứng dụng rộng rƣi vƠ thơm nh p vƠo nhi u lĩnh vực kỹ thu t vƠ đ i s ng xƣ hội Hầu h t thi t b kỹ thu t từ đ n giản cho đ n phức t p nh thi t b u n tự động, thi t b văn phòng, thi t b gia đình đ u dùng vi u n Cùng với ng i ngƠy cƠng 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, u n c cấu chấp hƠnh cách thu n lợi h n Với ki n thức đƣ đ ợc học vƠ 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 u n PIC Đ án em g m phần: Ch ng :T ng quan v pic vƠ 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 v 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 hội đ ng vƠ b n đ đ án t t nghiệp em đ ợc hoƠn thiện h 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 lƠ thầy ĐoƠn Hữu Chức đƣ giúp đỡ em hoƠn thƠnh đ án nƠy Hải Phòng, ngày 30 tháng 10 năm 2010 Sinh viên Bùi Văn Nguyên Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 TR NG Đ I H C DÂN L P H I PHọNG CH S l NG T NG QUAN c vi x lý vƠ vi điều khiển Trong th p niên cu i th 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 vƠ cao diện tích nhỏ, nh v y thi t b điện tử nhỏ h n vƠ nhi u chức h n Các thi t b điện tử ngƠy cƠng nhi u chức giá thƠnh ngƠy cƠng rẻ h n, v y đ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 lƠ phần cứng ch đóng vai trị thứ y u, phần m m (ch ng trình) đóng vai trị chủ đ o đ i với chức cần thực Nh v y vi xử lý có m m dẻo hóa chức NgƠy vi xử lý có t c độ tính tốn cao vƠ 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 vƠ xuất liệu ngoƠi sau đƣ xử lý VƠ chức Vi xử lý 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ơng có khả giao ti p trực ti p với thi t b ngo i vi, ch có khả nh n vƠ 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 nƠy u n m ch logic vƠ từ vi xử lý xử lý liệu cần thi t theo yêu cầu.Ch ng trình lƠ 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 vƠ 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 u n động c , hi n th kí tự mƠn 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 ngoƠi đ ợc gọi lƠ thi t b I/O (nh p/xuất) hay gọi lƠ thi t b ngo i vi Bản thơn vi xử lý đứng Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 TR NG Đ I H C DÂN L P H I PHọNG khơng có nhi u hiệu sử dụng, nh ng lƠ phần máy tính, hiệu ứng dụng Vi xử lý 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 v khả tính tốn, xử lý, vƠ thay đ i ch ng trình linh ho t theo mục đích ng i dùng, đặc biệt hiệu đ i với bƠi toán vƠ hệ th ng lớn Tuy nhiên đ i với ứng dụng nhỏ, tầm tính tốn khơng địi hỏi khả tính tốn lớn việc ứng dụng vi xử lý cần nhắc B i hệ th ng dù lớn hay nhỏ, n u 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 nƠy bao g m nhớ đ chứa liệu vƠ ch ng trình thực hiện, m ch điện giao ti p ngo i vi đ xuất nh p vƠ u n tr l i, kh i nƠy liên k t với vi xử lý thực đ ợc công việc Đ k t n i kh i nƠy đòi hỏi ng thi t k phải hi u bi t tinh t i ng v 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Ơ vấn đ lƠ trình độ ng i thi t k K t lƠ 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 m nên nhƠ ch t o tích hợp nhớ vƠ s m ch giao ti p ngo i vi với vi xử lý vƠo IC đ ợc gọi Microcontroller-Vi u n Vi u 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 h n nhi u.Vi u n đ i mang l i tiện lợi đ i vớ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 m ch điện dƠnh cho ng i dùng vi xử lý, k t cấu i dùng tr nên đ n giản h n nhi u vƠ có khả giao ti p trực ti p với thi t b bên ngoƠi.Vi u n đ ợc xơy dựng với phần cứng dƠnh cho ng Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 i sử dụng đ n giản h n, nh ng thay vƠo lợi TR NG Đ I H C DÂN L P H I PHọNG m nƠy lƠ khả xử lý b giới h n(t c độ xử lý ch m h n vƠ khả tính tốn h n,dung l ợng ch ng trình b giới h n) Thay vƠo đó, vi u n có giá thành rẻ h n 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 tốn phức t p Vi u 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 u n (microcontroller) 8748, chip t ng tự nh vi xử lý vƠ lƠ chip họ MCS-48 Độ phức t p, kích th ớc vƠ khả Vi u n tăng thêm b c quan trọng vƠo năm 1980 intel cho chip 8051,bộ Vi u n họ MCS-51 vƠ lƠ chuẩn công nghệ cho nhi u họ vi u n đ ợc sản xuất sau nƠy.Sau nhi u họ vi u 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 cƠng m nh Các vi u n thông dụng: + Họ vi u n AMCC: t p đoƠn “Applied Micro Circuits Corporation” sản xuất Tháng 5/2004, họ vi u n nƠy đ ợc phát tri n vƠ đ a th tr ng b i 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 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 u 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 u n Freescale Semiconductor: Năm 2004, vi u n nƠy đ ợc phát tri n vƠ tung th tr ng b i 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) Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 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 u 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 u n Microchip 12-bit instruction PIC 14-bit instruction PIC PIC16F84 16-bit instruction PIC Trong họ vi u n Microchip đ ợc ứng dụng ph bi n nhất, đặc biệt lƠ PIC16F877A đ ợc tích hợp thêm thƠnh phần nh chuy n đ i A/D 10 bits, vƠ l p trình phần m m u n đ n giản h n Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 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”, có th t m d ch lƠ “máy tính thơng minh khả trình” hƣng Gnenral Intrusment đặt tên cho vi u n đầu tiên họ PIC 1650 đ ợc thi t k dùng lƠm thi t b ngo i vi cho vi u n CP1600 Vi u n nƠy sau đ ợc nghiên cứu phát tri n thêm vƠ từ hình thƠnh nên dịng vi u 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 u n khác nh : 8051 Motorola 68HC, AVR, ARM…Tuy v y PIC v n đ ợc sử dụng ngƠy cƠng đ ợc ph bi n b i: - Dễ dƠng mua đ ợc th tr ng Viêt Nam - Giá thƠnh không q đắt - Có đầy đủ tính vi u n ho t động độc l p - LƠ b xung t t v ki n thức nh v ứng dụng cho họ vi u n mang tính truy n th ng nh 8051 - Có hỗ trợ nhƠ sản xuất v 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 u n PIC,ngƠy cƠng đ ợc m rộng, phát tri n 2.3 Ki n trúc PIC Ki n trúc phần cứng vi u n đ ợc thi t k theo d ng ki n trúc:ki n trúc Von Neuman vƠ ki n trúc Havard Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 TR NG Đ I H C DÂN L P H I PHọNG Harvard Data mem ory Von_Neumann 14 8 Progr am mem ory CPU CPU Progr am and data mem ory Hình 1.1 Ki n trúc Harvard vƠ 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 vƠ Von-Neumann lƠ cấu trúc nhớ liệu vƠ nhớ ch ng trình Đ i với ki n trúc Von-Neumann, nhớ liệu vƠ nhớ ch ng trình nằm chung nhớ Do ta có th t chức, đ i cách linh ho t nhớ ch ng trình vƠ nhớ liệu Tuy nhiên u nƠy ch có ý nghĩa t c độ xử lí CPU lƠ cao, với cấu trúc th i m CPU ch có th t ng tác với nhớ liệu nhớ ch ng trình Nh v y có th nói cấu trúc Von-Neumann khơng phù hợp với cấu trúc vi u n Đ i với cấu trúc Harvard, nhớ ch ng trình vƠ nhớ liệu tách thƠnh hai nhớ riêng biệt.Do th i m CPU có th t ng tác với hai nhớ,nh v y t c độ xử lí đ ợc cải thiện đáng k Một m cần ý lƠ t p lệnh ki n trúc Harvard có th đ ợc t i u tùy theo yêu cầu ki n trúc vi u n mƠ không phụ thuộc vƠo cấu trúc liệu.Ví dụ với vi u n dịng 16F độ dƠi ln lƠ 14 bít ( liệu đ c t chức thƠnh byte) Đặc m nƠy đ ợc minh họa hình 1.1 2.4 RISC CISC Nh trên,ki n trúc Harvard lƠ khái niệm h n so với ki n trúc Von- Neumann.Khái niệm nƠy đ ợc cải thiện nhằm cải ti n t c độ thực thi vi u n.Qua việc tách r i nhớ ch Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 ng trình vƠ nhớ liệu,bus ch ng trình TR NG Đ I H C DÂN L P H I PHọNG bus liệu.CPU có th lúc truy xuất nhớ ch ng trình vƠ 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 cịn phụ thuộc vƠo cấu trúc liệu mƠ có th linh động u ch nh tùy theo khả vƠ t c độ vi u n.VƠ đ ti p tục cải ti n t c độ thực thi lệnh,t p lệnh họ vi u n PIC đ ợc thi t k cho chi u dƠi mƣ lệnh ln c đ nh (ví dụ với họ 16Fxxxx chi u dƠi mƣ lệnh lƠ 14 bit),vƠ cho phép thực thi chu kì xung clock (ngo i trừ s tr lệnh nhảy, lệnh gọi ch ng hợp đặc biệt nh ng trình con-cần hai xung đ ng h ) Đi u nƠy có nghĩa lƠ t p lệnh vi u n thuộc cấu trúc Harvard s lệnh h n,ngắn h n,đ n giản h n đ đáp ứng yêu cầu mƣ hoá lệnh s l ợng bit đ nh Vi u n đ ợc t chức theo ki n trúc Harvard đ ợc gọi lƠ vi u n RISC (Reducer Instruction Set Computer) hay lƠ vi u n có t p lệnh rút gọn Vi u n đ ợc thi t k theo ki u ki n trúc Von-Neuman đ ợc gọi lƠ vi u n CISC (Complex Instruction Set Computer) hay vi u n có t p lệnh phức t p lệnh khơng phải lƠ s c đ nh mƠ lƠ bội s 8bit (1 byte) 2.5 PIPELINING (x lí song song) Đơy lƠ c ch xử lí lệnh vi u n PIC.Một chu kì lệnh vi u n s bao g m xung clock.Ví dụ ta sử dụng oscillator có tần s MHZ xung lệnh có tần s lƠ MHZ (chu ki lệnh lƠ 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 đơy ta ch bƠn đ n quy trình vi u n xử lí đo n ch ng trình thơng qua chu kì lệnh.q trình s đ ợc thực thi nh sau: Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 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 u n PIC đơy 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 u n PIC Có th đ a vƠo vi u n chủ (Master) vi u n tớ (Slave) Trong thi t k em đ a tín hiệu vƠo chơn AN0 vi u n chủ S đ m ch đo nh hình 2.3 d ới đơy Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 53 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 d 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 ni b S đ ngun lí Hình 2.5 S đ chi ti t m ch ngu n Ngu n n đ nh cung cấp cho hệ th ng lƠ ngu n +5V Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 54 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 vƠ ch ng nhiễu cho ngu n 2.3.2 PIC 26F877A đơy 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 u n PIC16F877A đ ợc cho d ới đơy Hình 2.6 S đ chơn chi ti t Đ vi u 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 u n đơy ta s 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 55 TR NG Đ I H C DÂN L P H I PHọNG n đ nh cách tuyệt đ i, vƠ cách khắc phục lƠ gắn thêm tụ lọc vƠo th ch anh Th ch anh sử dụng đơy lƠ 20MHz V y ta s mắc đ ợc s đ m ch nguyên lý kh i nƠy 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 v 0) Khi SW1 m điện áp vƠo chơn s lƠ +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 s lƠ 0V (mức 0) lƠ mức kích ho t, ho t động PIC đ ợc reset l i Do giao ti p PIC lƠ 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 đ u đ ợ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 m so với Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 56 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 lƠ lo i dịng, 16 kí tự, sử dụng ngu n ni thấp (từ 2,5 đ n 5V) Có th ho t động hai ch độ bit bit (trong đ tƠi nƠy em sử dụng ch độ bit) Với đầu vƠo bit đ ợc lấy từ chơn D4D7 LCD n i từ RB2RB5 vi u 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 u n Chơn E LCD đ ợc n i với chơn RB7 Vi u n Các tín hiệu u n cho phép hi n th LCD đ ợc thực thơng qua l p trình Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 57 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 58 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 59 TR 2.5 Thi t k ch NG Đ I H C DÂN L P H I PHọNG 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); Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 60 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 () { Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 61 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); Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 62 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); Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 63 TR NG Đ I H C DÂN L P H I PHọNG hile (1) { output_b (value) ; } } Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 64 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 vƠ lƠm đ án, với giúp đỡ t n tình thầy giáo vƠ b n Đặc biệt lƠ 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 u n Giao ti p I2C giao ti p đo l ng vƠ u n, sử dụng vi u n thu th p đ ợc đ i l ợng cần đo, xử lý đ i l ợng vƠ đ a k t mong mu n Hiện vi u n đa năng, nhỏ gọn, áp dụng vi u n vƠo s ng lƠ cần thi t Mặc dù c gắng nh ng trình lƠm đ án t t nghiệp, h n ch v th i gian, tƠi liệu vƠ trình độ có h n nên khơng tránh khỏi có thi u sót Em mong đ ợc góp ý, ch bảo thầy cô vƠ 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 nƠy Em xin chân thành cảm ơn! Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 65 TR NG Đ I H C DÂN L P H I PHọNG M CL C L IM CH Đ U NG T NG QUAN S l ợc v vi xử lý vƠ vi u 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 vƠ 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 vƠ 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 66 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 Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 67

Ngày đăng: 06/02/2023, 11:34

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

Tài liệu liên quan