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

Tải miễn phí đồ án thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC 16F877A. Tài liệu PDF cung cấp lý thuyết và hướng dẫn chi tiết.

Chuyên ngành

Điện Tử

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2010

68
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan về Vi điều khiển PIC 16F877A

Vi điều khiển PIC 16F877A là một trong những bộ vi điều khiển phổ biến nhất trong ngành điện tử hiện đại. Đây là sản phẩm của hãng Microchip Technology, được thiết kế với các tính năng mạnh mẽ và linh hoạt. PIC 16F877A sở hữu 40 chân, bộ nhớ lưu trữ đủ lớn và nhiều cổng I/O để kết nối với các thiết bị ngoại vi. Bộ vi điều khiển này hoạt động với điện áp từ 2V đến 5.5V, tiêu thụ năng lượng thấp, phù hợp cho các ứng dụng điều khiển tự động, hệ thống nhúng và các dự án điện tử phức tạp. Vi điều khiển PIC được sử dụng rộng rãi trong các ứng dụng công nghiệp, y tế, và tiêu dùng. Với khả năng lập trình dễ dàng và chi phí thấp, PIC 16F877A trở thành lựa chọn lý tưởng cho các kỹ sư và sinh viên ngành điện tử.

1.1. Đặc điểm cấu trúc của PIC 16F877A

PIC 16F877A được trang bị kiến trúc Harvard với hai đường bus riêng biệt cho dữ liệu và chỉ lệnh. Bộ vi điều khiển này có 368 byte RAM để lưu trữ dữ liệu, 8K từ bộ nhớ Flash để chứa chương trình. Ngoài ra, PIC 16F877A còn có các module chức năng như Timer, Analog-to-Digital Converter (ADC), PWM, và ngắt ngoài. Các tính năng này cho phép vi điều khiển thực hiện nhiều tác vụ đồng thời mà không cần các mạch điện bên ngoài phức tạp.

1.2. Ứng dụng của PIC 16F877A trong giao tiếp I2C

Giao tiếp I2C trên PIC 16F877A cho phép kết nối nhiều thiết bị trên cùng một cặp dây (SDA và SCL). Bộ vi điều khiển này có module I2C tích hợp sẵn, giúp đơn giản hóa quá trình thiết kế hệ thống. Với khả năng hoạt động ở chế độ Master hoặc Slave, PIC 16F877A có thể điều khiển các thiết bị ngoại vi như cảm biến, bộ nhớ ngoài, và các vi điều khiển khác một cách hiệu quả.

II. Giao tiếp I2C Inter Integrated Circuit

Giao tiếp I2C là một chuẩn giao tiếp nối tiếp đã được phát triển bởi Philips (nay là NXP Semiconductors) vào những năm 1980. Đây là một trong những chuẩn giao tiếp phổ biến nhất trong các ứng dụng điện tử hiện đại. I2C sử dụng chỉ hai đường dây: SDA (Serial Data Line) và SCL (Serial Clock Line) để truyền dữ liệu giữa các thiết bị. Chuẩn giao tiếp I2C cho phép tốc độ truyền dữ liệu từ 100 kbps đến 400 kbps, hoặc thậm chí cao hơn ở chế độ high-speed. Với kiến trúc Master-Slave linh hoạt, I2C có thể kết nối tối đa 128 thiết bị trên cùng một bus. Điều này làm cho giao tiếp I2C trở thành giải pháp tối ưu cho các hệ thống nhúng phức tạp.

2.1. Nguyên tắc hoạt động của I2C

Giao tiếp I2C hoạt động dựa trên nguyên tắc open-drain với điện trở kéo lên (pull-up resistor). Hai dây SDA và SCL được kéo lên mức cao thông qua các điện trở. Khi thiết bị Master muốn gửi dữ liệu, nó sẽ kéo các dây này xuống mức thấp theo từng bit. I2C sử dụng phương pháp truyền dữ liệu bit-by-bit với tốc độ được điều khiển bởi tín hiệu CLK từ Master.

2.2. Ưu điểm của I2C trong hệ thống nhúng

I2C cung cấp nhiều lợi ích: giảm số lượng dây dẫn, giảm chi phí thiết kế, hỗ trợ hot-swap thiết bị, và khả năng mở rộng dễ dàng. Giao tiếp I2C còn có cơ chế xử lý xung đột và phát hiện lỗi, đảm bảo độ tin cậy cao. Nhờ những ưu điểm này, I2C được ứng dụng rộng rãi trong các thiết bị điện tử từ đơn giản đến phức tạp.

III. Thiết kế hệ thống giao tiếp I2C giữa hai PIC 16F877A

Thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC 16F877A là một ứng dụng thực tiễn quan trọng trong ngành điện tử nhúng. Trong hệ thống này, một PIC 16F877A đóng vai trò Master để điều khiển quá trình truyền dữ liệu, trong khi PIC 16F877A thứ hai hoạt động như một Slave để nhận và xử lý dữ liệu. Quá trình thiết kế bao gồm cấu hình các chân I/O, lập trình bộ vi điều khiển, và xây dựng mạch điều khiển phù hợp. Hệ thống giao tiếp I2C này cho phép hai vi điều khiển PIC trao đổi thông tin nhanh chóng và hiệu quả, từ đó mở rộng khả năng xử lý và điều khiển của toàn hệ thống. Ứng dụng của hệ thống này rất đa dạng, từ hệ thống điều khiển tự động đến các thiết bị đo lường thông minh.

3.1. Sơ đồ kết nối và cấu hình chân I2C

Để thiết lập giao tiếp I2C giữa hai PIC 16F877A, cần kết nối chân RC3 (SCL) và RC4 (SDA) của cả hai vi điều khiển với nhau. Hai điện trở pull-up (thường 4.7kΩ) được nối từ SDA và SCL tới nguồn điện dương. Master PIC 16F877A sẽ kiểm soát các tín hiệu SCL, trong khi Slave PIC 16F877A chỉ phản ứng với các lệnh từ Master. Cấu hình chân I2C đòi hỏi cả hai vi điều khiển phải được cài đặt địa chỉ I2C khác nhau để nhận biết nhau trên bus.

3.2. Lập trình và xử lý dữ liệu I2C

Lập trình giao tiếp I2C trên PIC 16F877A sử dụng các thanh ghi điều khiển SSPCON, SSPSTAT, SSPADD. Master PIC phải khởi tạo điều kiện START, gửi địa chỉ Slave kèm bit read/write, sau đó gửi hoặc nhận dữ liệu từng byte. Xử lý dữ liệu I2C yêu cầu chương trình phải kiểm tra các cờ ngắt (interrupt flags) để đảm bảo dữ liệu được truyền chính xác và đầy đủ.

IV. Triển khai và ứng dụng thực tiễn

Triển khai hệ thống giao tiếp I2C giữa hai PIC 16F877A yêu cầu chuẩn bị kỹ lưỡng về phần cứng và phần mềm. Đầu tiên, cần lắp ráp mạch điện với các linh kiện thích hợp, bao gồm vi điều khiển, các điện trở pull-up, và mạch nguồn ổn định. Tiếp theo, lập trình cả hai vi điều khiển với các hàm I2C thích hợp sử dụng ngôn ngữ C hoặc Assembly. Sau khi kiểm thử và điều chỉnh, hệ thống có thể được áp dụng vào các ứng dụng thực tế như hệ thống điều khiển nhiệt độ, đo lường cảm biến, hoặc điều khiển thiết bị từ xa. Giao tiếp I2C trong ứng dụng thực tiễn cần đảm bảo độ tin cậy cao, tiêu thụ năng lượng tối ưu, và khả năng mở rộng hệ thống trong tương lai.

4.1. Các bước triển khai hệ thống I2C

Bước đầu tiên là thiết kế sơ đồ mạch điện chi tiết cho giao tiếp I2C. Sau đó, lắp ráp các linh kiện trên mạch in hoặc breadboard thí nghiệm. Triển khai hệ thống tiếp theo bao gồm nạp chương trình vào cả hai PIC 16F877A, kiểm tra giao tiếp bằng oscilloscope hoặc logic analyzer. Cuối cùng, tiến hành kiểm thử toàn diện hệ thống để đảm bảo truyền dữ liệu chính xác và không có lỗi.

4.2. Ứng dụng thực tiễn của I2C trên PIC 16F877A

I2C trên PIC 16F877A được ứng dụng trong nhiều lĩnh vực: hệ thống điều khiển công nghiệp, thiết bị y tế, hệ thống an ninh thông minh, và các thiết bị IoT. Giao tiếp I2C cho phép kết nối dễ dàng với các cảm biến, màn hình LCD I2C, và bộ nhớ EEPROM. Nhờ vậy, các hệ thống phức tạp có thể được xây dựng một cách hiệu quả mà không cần quá nhiều dây dẫn và mạch điều khiển.

28/12/2025

Trích đoạn nội dung tài liệu

LỜI MỞ ĐẦU Ngày nay, cùng với sự phát triển không ngừng của cuộc cách mạng khoa học và kĩ thuật, ngành kĩ thuật điện tử đang dần khẳng định vai trò ngày càng lớn của mình đƣa con 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 điều khiển. Kỹ thuật vi điều khiển đang 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 các thiết bị kỹ thuật từ đơn giản cho đến phức tạp nhƣ thiết bị điều khiển tự động, thiết bị văn phòng, các thiết bị trong gia đình đều dùng các bộ vi điều khiển.

Cùng với nó con ngƣời cũng ngày càng hoàn thiện các chuẩn giao tiếp để kết nối các thiết bị điện tử với nhau thực hiện việc trao đổi thông tin, điều khiển các cơ cấu chấp hành một cách thuận lợi hơn. Với những kiến thức đã đƣợc học và những kiến thức cập nhập, nghiên cứu cùng với sự hƣớng dẫn của thầy giáo hƣớng dẫn. Em đã chọn đề tài: Thiết kế hệ thống giao tiếp I2C giữa hai vi điều khiển PIC. Đồ án của em gồm 2 phần: Chƣơng một :Tổng quan về pic và giao tiếp I2C.

Chƣơng hai :Thiết kế hệ thống giao tiếp I2C giữa 2 pic 16F877A Trong quá trình làm đồ án tốt nghiệp, do hạn chế về thời gian, tài liệu nên không tránh khỏi những thiếu sót. Em rất mong đƣợc sự góp ý của thầy cô trong hội đồng và các bạn để đồ án tốt nghiệp của 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 cùng thầy cô trong 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 1 Lớp: ĐT1001 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG CHƢƠNG 1.

Sơ lƣợc về vi xử lý và vi điều khiển. Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ thuật điện tử đã có sự 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à rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện tử nhỏ hơn và nhiều chức năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá thành ngày càng rẻ hơn, chính vì vậy điện tử có mặt khắp mọi nơi.

Bƣớc đột phá mới trong công nghệ điện tử, công ty Intel cho ra đời bộ 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 các chức năng cần thực hiện. Nhờ vậy vi xử lý có sự mềm dẻo hóa trong các chức năng của mình. Ngày nay vi xử lý có tốc độ tính toán rất cao và khả năng xử lý rất lớn. Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoài sau khi đã xử lý.

Và chức năng chính của Vi xử lý chính là xử lý dữ liệu, chẳng hạn nhƣ cộng, trừ, nhân, chia, so sánh.Vi xử lý không có khả năng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi. Để vi xử lý hoạt động cần có chƣơng trình kèm theo, các chƣơng trình này điều khiển các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu.Chƣơng trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh đƣợc lƣu trữ trong bộ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã. Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiển thị kí tự trên màn hình. đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoài đƣợc gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi.

Bản thân các vi xử lý khi đứng một mình Sinh viên: Bùi Văn Nguyên 2 Lớp: ĐT1001 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG không có nhiều hiệu quả sử dụng, nhƣng khi là một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn. Vi xử lý kết hợp với các thiết bị khác đƣợc sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lƣợng lớn các phép tính phức tạp,có tốc độ nhanh. Chẳng hạn nhƣ các hệ thống sản xuất tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khả năng hoạt động phức tạp v. Bộ Vi xử lý có khả năng vƣợt bậc so với các hệ thống khác về khả năng tính toá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 quả đối với các bài toán và hệ thống lớn.

Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cân nhắc. Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếp phức tạp nhƣ nhau. Các khối này bao gồm bộ nhớ để chứa dữ liệu và chƣơng trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiện đƣợc công việc. Để kết nối các khối này đòi hỏi ngƣời thiết kế phải hiểu biết tinh tƣờng về các thành phần vi xử lý, bộ nhớ, các thiết bị ngoại vi.

Hệ thống đƣợc tạo ra khá phức tạp,chiếm nhiều không gian, mạch in phức tạp và vấn đề chính là trình độ ngƣời thiết kế. Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệ thống nhỏ. Vì một số nhƣợc điểm trên nên các nhà chế tạo tích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duy nhất đƣợc gọi là Microcontroller-Vi điều khiển. Vi điều khiển có khả năng tƣơng tự nhƣ khả năng của 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 điều khiển ra đời mang lại sự tiện lợi đối với ngƣời dùng,họ không cần nắm vững một khối lƣợng kiến thức quá 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 cũng trở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bên ngoài.Vi điều khiển tuy đƣợ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 Sinh viên: Bùi Văn Nguyên 3 Lớp: ĐT1001 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG điểm này là khả năng xử lý bị giới hạn(tốc độ xử lý chậm hơn và khả năng tính toán ít 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ẻ hơn nhiều so với vi xử lý, việc sử dụng đơn giản,do đó nó đƣợc ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơ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 trong các dây chuyền tự động loại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v. Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tƣơng tự nhƣ các bộ vi xử lý và là chip đầu tiên trong họ MCS-48. Độ phức tạp, kích thƣớc và khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel cho ra chip 8051,bộ Vi điều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ vi điều khiển đƣợc sản xuất sau này.Sau đó rất nhiều họ vi điều khiển của nhiều nhà chế tạo khác nhau lần lƣợt đƣợc đƣa ra thị trƣờng với tính năng đƣợc cải tiến ngày càng mạnh.

Các vi điều khiển thông dụng: + Họ vi điều khiển AMCC: do tập đoàn “Applied Micro Circuits Corporation” sản xuất. Tháng 5/2004, họ vi điều khiển này đƣợc phát triển và đƣa ra 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 4 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, những vi điều khiển này đƣợc phát triển và tung ra 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 5 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 đƣợc ứng dụng phổ biến nhất, đặc biệt là PIC16F877A đƣợc tích hợp thêm những thành phần mới nhƣ bộ chuyển đổi A/D 10 bits, và lập trình phần mềm điều khiển cũng đơn giản hơn. Sinh viên: Bùi Văn Nguyên 6 Lớp: ĐT1001 TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG 2.Tổng quan về vi điều khiển PIC 2.PIC là gì? PIC là viết tắt của thuật ngữ “Programable Interlligent Compurter”, có thể tạm dịch là “máy tính thông minh khả trình” do hãng Gnenral Intrusment đặt tên cho vi điều khiển đầu tiên đầu tiên của họ PIC 1650 đƣợc thiết kế dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600.

Vi điều khiể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 điều khiển PIC nhƣ ngày nay.2 Đặc điểm của PIC so với các loại vi điều khiển khác Hiện nay trên thị trƣờng có rất nhiều loại vi điều khiển khác nhau 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 quá đắt. - Có đầy đủ tính năng của 1 vi điều khiển khi hoạt động độc lập.

- Là sự bổ xung tốt về kiến thức cũng nhƣ về ứng dụng cho họ vi điều khiển mang tính truyền thống nhƣ 8051. - Có sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình,mạch nạp từ đơn giản đến mức cao. - Các tính năng đa dạng của vi điều khiển PIC,ngày càng đƣợc mở rộng, phát triển.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ