1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

68 37 0

Đ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

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ỉ ngun mới:kỉ ngun số Trong số ta khơng thể 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 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 hồ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 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 góp ý thầy hội đồng bạn để đồ án tốt nghiệp em hoàn thiện Em xin gửi lời cảm ơn chân thành đến nhà trường thầy khoa Điện tử, đặc biệt thầy Đồ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 2019 Sinh viê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ƯƠ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 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 tố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 ngồi sau xử lý Và chức Vi xử lý xử lý liệu, chẳng hạn 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, 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 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 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 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, 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 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 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 tố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 tốn khơng địi hỏi khả tính tố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 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ơ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 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 gọi Microcontroller-Vi điều khiển Vi điều khiển có khả tương tự khả vi xử lý, 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 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 xây dựng với phần cứng dành cho người sử dụng đơn giản hơn, thay vào lợi 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 điểm khả xử lý bị giới hạn(tốc độ xử lý chậm khả tính tố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 ứ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 ứ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ự 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 sản xuất sau này.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 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 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 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 đ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 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) 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 đ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 ứng dụng phổ biến nhất, đặc biệt PIC16F877A tích hợp thêm thành phần chuyển đổi A/D 10 bits, lập trình phần mềm điều khiển đơn giả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”, 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 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 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 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 sử dụng ngày phổ biến bởi: - Dễ dàng mua thị trường Viêt Nam - Giá thành khơng q đắ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 ứng dụng cho họ vi điều khiển mang tính truyền thống 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 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 thiết kế theo dạng kiến trúc:kiến trúc Von Neuman 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 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 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ải thiện đáng kể Một điểm cần ý tập lệnh kiến trúc Harvard 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 ln 14 bít ( liệu đươc tổ chức thành byte) Đặc điểm 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ả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 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 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 cịn 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 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 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 tổ chức theo kiến trúc Harvard 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 thiết kế theo kiểu kiến trúc Von-Neuman 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 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 thực thi 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 Hình 1.2 Cơ chế PIPELINING TCY0: đọc lệnh TCY1: thực thi lệnh 1,đọc lệnh TCY2: thực thi lệnh 2,đọc lệnh TCY3: thực thi lệnh 3,đọc lênh TCY4: lệnh khơng phải lệnh thực thi theo quy trình thực thi chương trình (lệnh thực thi phải lệnh label SUB_1) nên chu trình thực thi lệnh dùng để đọc lệnh label SUB_1 Như xem lệnh cần chu kì xung clock để thực thi TCY5: thực thi lệnh SUB_1 đọc lệnh SUB_1.Quá trình thực tương tự cho lệnh chương trình Thơng thường để thực thi lệnh, ta cần chu kì lệnh để gọi lệnh đó, chu kì xung clock để giải mã thực thi lệnh Với chế pipelining trình bày trên, lệnh xem thực thi chu kì lệnh Đối với lệnh mà trình thực thi làm thay đổi giá trị PC (Program Counter) cần hai chu kì lệnh để thực thi phải thực việc gọi lệnh địa PC tới.Sau xác định vị trí lệnh ghi PC,mỗi lệnh cần chu kì lệnh để thực thi xong Sinh viên: Bùi Văn Nguyên Lớp: ĐT1001 10 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 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 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 tồ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 cho 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 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, 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 sơ đồ mạch nguyên lý khối sau: Hình 2.7 Sơ đồ mạch 16F877A Chân số MCLR đấu nối thêm đó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 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 reset lại Do giao tiếp PIC giao tiếp I2C nên chân 18 (SDA) 23 (SCL) cuả PIC nối với Mỗi dây SDA hay SCL 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) sử dụng nhiều ứng dụng VĐK LCD có nhiều ưu điể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 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 ni 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 lấy từ chân D4 D7 LCD nối từ  RB2 RB5 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 nối với chân RB6 Vi điều khiển Chân E LCD 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 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ƯỜ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); 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 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 ứ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 đạ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 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 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! 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ỤC LỤC LỜI MỞ ĐẦU CHƯƠNG TỔNG QUAN .2 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 .8 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 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 ... tên cho vi điều khiển đầu tiên họ PIC 1650 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 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 ngày... 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. .. kiến trúc Harvard 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 thiết kế theo kiểu kiến trúc Von-Neuman gọi vi điều khiển CISC (Complex

Ngày đăng: 29/09/2020, 19:14

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w