Đồ án: Thiết kế đồng hồ AM/PM dùng PIC16F877A hiển thị LCD

Tiểu luận thiết kế đồng hồ AMPM dùng PIC16F877A, hiển thị LCD. Tìm hiểu về thiết kế, lập trình vi điều khiển và ứng dụng LCD. Download ngay!

Người đăng

Ẩn danh

Thể loại

Đồ án môn học

2023

56
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC CÁC HÌNH ẢNH

1. CHƯƠNG 1: TỔNG QUAN

1.1. GIỚI THIỆU

1.2. MỤC TIÊU NGHIÊN CỨU

1.3. ĐỐI TƯỢNG NGHIÊN CỨU

1.4. PHẠM VI NGHIÊN CỨU

1.5. BỐ CỤC ĐỒ ÁN

2. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. DS1307 Module thời gian thực RTC DS1307 dùng để gọi thời gian

2.2. KHỐI XỬ LÝ TRUNG TÂM

3. CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

3.1. YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG

3.1.1. Yêu cầu của hệ thống

3.1.2. Sơ đồ khối và chức năng mỗi khối

3.1.3. Hoạt động của hệ thống

3.2. THIẾT KẾ HỆ THỐNG PHẦN CỨNG

3.2.1. Khối thời gian thực RTC DS1307

3.2.2. Khối hiển thị LCD

3.2.3. Khối xử lý trung tâm

3.3. CHỨC NĂNG VÀ HOẠT ĐỘNG CỦA PHẦN MỀM

3.3.1. Lưu đồ giải thuật chương trình chính:

3.3.2. Lưu đồ hàm thời gian

3.3.3. Lưu đồ hàm chỉnh báo thức

4. CHƯƠNG 4: KẾT QUẢ THỰC HIỆN

4.1. Kết quả hoạt động toàn hệ thống

4.2. Điều chỉnh báo thức

5. CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

5.1. HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN

5.2. Hướng phát triển

TÀI LIỆU THAM KHẢO

Mục lục bảng

DANH MỤC CÁC HÌNH ẢNH

Tóm tắt

I. Tổng quan về mạch đồng hồ AM PM PIC16F877A và LCD 16x2

Trong bối cảnh phát triển không ngừng của khoa học kỹ thuật, ngành điện tử đã mang lại những thành tựu vượt bậc, đặc biệt trong lĩnh vực vi điều khiển. Các ứng dụng của vi điều khiển ngày càng phổ biến, thay thế dần các hệ thống cơ học truyền thống nhờ độ chính xác cao và tính linh hoạt. Một trong những ứng dụng tiêu biểu là mạch đồng hồ số dùng PIC16F877A, một giải pháp hiệu quả để xây dựng các hệ thống đo lường thời gian chính xác. Đề tài "Thiết kế đồng hồ xem giờ AM/PM dùng pic 16F877A hiển thị LCD" của sinh viên Nguyễn Thuận Tín, trường Đại học Sư Phạm Kỹ Thuật TP.HCM, là một minh chứng rõ ràng cho tiềm năng này. Mục tiêu chính của project điện tử này không chỉ là tạo ra một sản phẩm hiển thị thời gian thực mà còn là cơ hội để nghiên cứu sâu về vi điều khiển PIC16F877A, module đồng hồ thời gian thực (RTC) và kỹ thuật giao tiếp LCD 16x2 với PIC. Sản phẩm cuối cùng là một mạch điện tử hoàn chỉnh, có khả năng hiển thị giờ, phút, giây, ngày, tháng, năm và tích hợp chức năng báo thức. Dự án này là một đồ án vi điều khiển điển hình, yêu cầu kiến thức nền tảng vững chắc về mạch điện, điện tử cơ bản và kỹ năng lập trình vi điều khiển. Việc hoàn thành đồ án không chỉ chứng tỏ năng lực kỹ thuật mà còn mở ra hướng phát triển các ứng dụng phức tạp hơn trong tương lai.

1.1. Giới thiệu đồ án vi điều khiển và mục tiêu nghiên cứu

Đồ án tập trung vào việc nghiên cứu và thiết kế một hệ thống đồng hồ điện tử hoàn chỉnh. Mục tiêu cốt lõi là làm chủ công nghệ vi điều khiển, cụ thể là dòng PIC16F877A, để xử lý dữ liệu thời gian. Sinh viên thực hiện cần nghiên cứu cơ sở lý thuyết về module thời gian thực DS1307, màn hình LCD 16x2, và cách kết nối các module này với vi điều khiển. Một mục tiêu quan trọng khác là thực hành các kỹ thuật điện tử cơ bản như lắp ráp, kiểm tra mạch và mô phỏng Proteus. Sản phẩm cuối cùng phải đạt độ chính xác cao trong việc hiển thị thời gian và vận hành ổn định.

1.2. Phân tích vai trò của vi điều khiển PIC16F877A trong project

Trong hệ thống, vi điều khiển PIC16F877A đóng vai trò là bộ não trung tâm, điều phối mọi hoạt động. Đây là một vi điều khiển 8-bit mạnh mẽ của Microchip, hoạt động trên kiến trúc RISC, cho phép xử lý lệnh nhanh chóng. Với 33 chân I/O, bộ nhớ Flash 14KB và nhiều tính năng tích hợp như ADC, PWM, và các chuẩn giao tiếp nối tiếp (USART, SPI, I2C), PIC16F877A là lựa chọn lý tưởng cho các đồ án vi điều khiển. Trong mạch đồng hồ này, PIC16F877A có nhiệm vụ: đọc dữ liệu thời gian từ module DS1307 qua giao tiếp I2C, xử lý thông tin từ các nút nhấn điều chỉnh thời gian, và gửi lệnh hiển thị lên màn hình LCD.

II. Các thách thức kỹ thuật khi làm mạch đồng hồ số PIC16F877A

Việc xây dựng một mạch đồng hồ số dùng PIC16F877A không chỉ đơn thuần là lắp ráp linh kiện mà còn đối mặt với nhiều thách thức kỹ thuật. Thách thức lớn nhất nằm ở việc đảm bảo độ chính xác và ổn định của hệ thống. Thời gian là một đại lượng yêu cầu độ chính xác gần như tuyệt đối, do đó, việc lựa chọn và cấu hình module đồng hồ thời gian thực là cực kỳ quan trọng. Sai số trong dao động của thạch anh 20MHz hoặc module RTC có thể tích lũy và gây ra lệch giờ đáng kể sau một thời gian hoạt động. Một thách thức khác là việc lập trình và gỡ lỗi. Lập trình CCS C cho PIC đòi hỏi sự hiểu biết sâu về cấu trúc thanh ghi, quản lý bộ nhớ và xử lý ngắt. Việc giao tiếp giữa các thành phần khác nhau, như PIC với LCD qua giao tiếp song song 4-bit và PIC với module RTC DS1307 qua giao tiếp I2C, cần được xử lý đồng bộ và chính xác. Bất kỳ lỗi nào trong quá trình truyền nhận dữ liệu đều có thể dẫn đến hiển thị sai hoặc hệ thống bị treo. Ngoài ra, việc thiết kế phần cứng cũng cần được chú trọng, đặc biệt là khối nguồn ổn áp 5V để cung cấp năng lượng ổn định cho toàn mạch, tránh nhiễu điện từ có thể ảnh hưởng đến hoạt động của vi điều khiển.

2.1. Yêu cầu về độ chính xác của đồng hồ thời gian thực RTC

Module Real-time clock (RTC) DS1307 là trái tim của việc đo đếm thời gian. Độ chính xác của nó phụ thuộc trực tiếp vào bộ dao động thạch anh 32.768kHz. Module này cần được cấp nguồn dự phòng (pin 3V) để duy trì thời gian ngay cả khi nguồn chính bị ngắt. Thách thức ở đây là đảm bảo giao tiếp I2C giữa PIC và DS1307 luôn ổn định, không bị mất dữ liệu. Lập trình viên phải viết các hàm đọc và ghi dữ liệu BCD (Binary-Coded Decimal) từ các thanh ghi của DS1307 một cách chính xác, sau đó chuyển đổi sang định dạng phù hợp để hiển thị trên LCD.

2.2. Khó khăn trong giao tiếp LCD 16x2 với PIC và xử lý ngắt

Việc giao tiếp LCD 16x2 với PIC đòi hỏi phải tuân thủ đúng timing (thời gian) của các tín hiệu điều khiển (RS, R/W, E). Trong dự án này, chế độ giao tiếp 4-bit được sử dụng để tiết kiệm chân I/O của vi điều khiển. Điều này có nghĩa là mỗi byte dữ liệu phải được gửi thành hai lần, mỗi lần 4 bit. Việc khởi tạo LCD và gửi lệnh, dữ liệu cần được thực hiện tuần tự và chính xác theo datasheet. Ngoài ra, việc xử lý tín hiệu từ các nút nhấn cũng là một vấn đề. Để tránh hiện tượng dội phím (bouncing), cần có giải pháp chống dội bằng phần cứng (mạch RC) hoặc phần mềm (delay, kiểm tra nhiều lần).

III. Hướng dẫn thiết kế phần cứng cho đồng hồ PIC16F877A AM PM

Thiết kế phần cứng là nền tảng quyết định sự ổn định của project điện tử. Dựa trên sơ đồ nguyên lý mạch đồng hồ được trình bày trong đồ án, hệ thống được chia thành các khối chức năng rõ ràng. Khối trung tâm là vi điều khiển PIC16F877A, được kết nối với một thạch anh 20MHz để tạo xung nhịp hoạt động. Khối thời gian thực sử dụng module DS1307, giao tiếp với PIC qua hai chân RC3 (SCL) và RC4 (SDA), là các chân hỗ trợ chuẩn I2C của PIC. Khối hiển thị là màn hình LCD 16x2, kết nối với PORTD của vi điều khiển ở chế độ 4-bit để hiển thị thông tin. Khối giao tiếp người dùng bao gồm 4 nút nhấn điều chỉnh thời gian được kết nối với PORTB, cho phép người dùng cài đặt giờ, phút, giây, ngày, tháng, năm và chế độ báo thức. Khối nguồn có vai trò cực kỳ quan trọng, sử dụng IC ổn áp 7805 để tạo ra điện áp 5V ổn định từ nguồn DC đầu vào (7.5V-12V), cung cấp cho toàn bộ mạch. Sơ đồ mạch cũng bao gồm một còi báo (buzzer) được điều khiển bởi một transistor, kết nối với chân RD3 của PIC để phát tín hiệu khi đến giờ báo thức. Mỗi khối đều được thiết kế cẩn thận với các linh kiện phụ trợ như điện trở kéo, tụ lọc nhiễu để đảm bảo hoạt động tin cậy.

3.1. Phân tích sơ đồ nguyên lý mạch đồng hồ chi tiết

Sơ đồ nguyên lý là bản vẽ kỹ thuật mô tả kết nối giữa tất cả các linh kiện. Trong sơ đồ nguyên lý mạch đồng hồ này, chân MCLR của PIC16F877A được nối với một nút nhấn reset và điện trở kéo lên 10kΩ. Các chân OSC1 và OSC2 được nối với thạch anh 20MHz và hai tụ gốm. Các chân dữ liệu của LCD (D4-D7) được nối với RD0-RC2 và các chân điều khiển (RS, E) nối với RD1, RD2. Các nút nhấn được nối với các chân RB0-RB3, mỗi nút có một điện trở kéo lên để xác định mức logic cao khi không được nhấn.

3.2. Chức năng khối nguồn khối xử lý và nút nhấn điều chỉnh thời gian

Khối nguồn đảm bảo cung cấp điện áp 5V ổn định. Khối xử lý (PIC16F877A) thực hiện toàn bộ logic của chương trình. Khối nút nhấn điều chỉnh thời gian là giao diện để người dùng tương tác với hệ thống. Bốn nút nhấn có chức năng: chọn chế độ (chỉnh giờ/chỉnh báo thức), tăng giá trị, giảm giá trị và xác nhận. Chương trình phải liên tục quét trạng thái các nút nhấn này để thực hiện các yêu cầu tương ứng từ người dùng.

IV. Phương pháp lập trình CCS C cho PIC16F877A hiển thị LCD

Phần mềm là linh hồn của hệ thống, quyết định các chức năng và logic hoạt động của đồng hồ. Lập trình CCS C cho PIC là một lựa chọn phổ biến do trình biên dịch này cung cấp nhiều thư viện tích hợp sẵn, giúp đơn giản hóa quá trình phát triển, đặc biệt là các tác vụ giao tiếp. Môi trường phát triển có thể là MPLAB X IDE tích hợp với trình biên dịch CCS C. Cấu trúc của code đồng hồ PIC được xây dựng dựa trên một vòng lặp vô tận (while(true)) trong hàm main(). Bên trong vòng lặp này, chương trình liên tục thực hiện các nhiệm vụ chính: đọc thời gian từ module DS1307, chuyển đổi dữ liệu BCD sang số thập phân, định dạng và hiển thị lên LCD. Đồng thời, chương trình cũng kiểm tra trạng thái của các nút nhấn để chuyển sang các chế độ điều chỉnh. Lưu đồ giải thuật được xây dựng chi tiết cho từng chức năng, bao gồm chương trình chính, hàm chỉnh thời gian và hàm chỉnh báo thức. Việc sử dụng các hàm con giúp mã nguồn trở nên rõ ràng, dễ quản lý và gỡ lỗi. Đặc biệt, việc sử dụng thư viện LCD.C giúp tiết kiệm thời gian lập trình các hàm cấp thấp để điều khiển màn hình.

4.1. Sử dụng thư viện LCD.C và giao thức I2C trong CCS C

Trình biên dịch CCS C cung cấp một file thư viện chuẩn là thư viện LCD.C để điều khiển màn hình LCD. Người dùng chỉ cần khai báo các chân kết nối trong file header và sau đó gọi các hàm cấp cao như lcd_init(), lcd_putc(), lcd_gotoxy() để thực hiện các tác vụ hiển thị. Tương tự, CCS C cũng tích hợp sẵn các hàm để giao tiếp I2C (i2c_start(), i2c_write(), i2c_read(), i2c_stop()). Điều này giúp việc đọc/ghi dữ liệu từ module DS1307 trở nên đơn giản hơn rất nhiều so với việc phải tự lập trình toàn bộ giao thức từ đầu.

4.2. Xây dựng lưu đồ giải thuật cho code đồng hồ PIC

Lưu đồ giải thuật là công cụ trực quan hóa logic của chương trình trước khi viết mã. Chương trình chính bắt đầu bằng việc khởi tạo các cổng I/O, LCD và giao thức I2C. Sau đó, nó đi vào một vòng lặp để liên tục đọc và hiển thị thời gian. Nếu có tín hiệu nhấn nút, chương trình sẽ gọi đến các hàm con tương ứng để chỉnh giờ hoặc báo thức. Trong các hàm con này, một biến trạng thái (mode) được sử dụng để xác định thành phần thời gian nào đang được chỉnh (giờ, phút, hay ngày, tháng), và các nút tăng/giảm sẽ thay đổi giá trị của thành phần đó. Sau khi chỉnh xong, dữ liệu mới sẽ được ghi lại vào module RTC.

V. Kết quả mô phỏng Proteus và vận hành thực tế project điện tử

Trước khi thi công mạch thật, việc mô phỏng Proteus là một bước không thể thiếu trong các project điện tử. Proteus cho phép kiểm tra tính đúng đắn của sơ đồ nguyên lý và thuật toán chương trình mà không cần đến phần cứng vật lý. Trong đồ án này, toàn bộ mạch, bao gồm vi điều khiển PIC16F877A, LCD 16x2, module DS1307 và các nút nhấn, đều được vẽ lại và mô phỏng. File chương trình .hex được tạo ra từ CCS C Compiler sẽ được nạp vào vi điều khiển ảo trong Proteus. Kết quả mô phỏng cho thấy hệ thống hoạt động đúng như thiết kế: thời gian được hiển thị chính xác, các nút nhấn phản hồi đúng chức năng. Sau khi mô phỏng thành công, mạch thật được lắp ráp. Kết quả thực tế cho thấy sản phẩm hoạt động ổn định. Đồng hồ hiển thị thời gian thực với định dạng AM/PM, ngày tháng năm. Chức năng điều chỉnh thời gian và cài đặt báo thức thông qua các nút nhấn hoạt động mượt mà. Khi thời gian thực trùng với thời gian báo thức đã cài đặt, còi báo sẽ phát ra âm thanh. Theo tài liệu, một video minh họa hoạt động của sản phẩm cũng được thực hiện, cho thấy kết quả trực quan và sinh động về thành quả của đồ án.

5.1. Quy trình mô phỏng Proteus cho mạch đồng hồ số

Quy trình bắt đầu bằng việc vẽ lại sơ đồ nguyên lý mạch đồng hồ trong môi trường ISIS của Proteus. Các linh kiện như PIC16F877A, LCD1602, DS1307 đều có sẵn trong thư viện của phần mềm. Sau khi kết nối các linh kiện, file mã máy (.hex) từ trình biên dịch CCS C được nạp vào vi điều khiển. Chạy mô phỏng (Run Simulation) sẽ cho phép quan sát hoạt động của mạch trên màn hình máy tính, kiểm tra hiển thị trên LCD và tương tác với các nút nhấn.

5.2. Đánh giá kết quả hoạt động của mạch và chức năng báo thức

Sản phẩm thực tế được đánh giá dựa trên các tiêu chí: độ chính xác của thời gian, sự ổn định của mạch, và tính đúng đắn của các chức năng. Mạch hoạt động ổn định, hiển thị thời gian chính xác và không bị treo. Chức năng báo thức hoạt động hiệu quả, còi kêu đúng vào thời điểm đã được cài đặt. Các nút nhấn phản hồi tốt, cho phép người dùng dễ dàng điều chỉnh các thông số. Kết quả này khẳng định sự thành công của cả giai đoạn thiết kế phần cứng và lập trình phần mềm.

VI. Kết luận và hướng phát triển cho đồng hồ PIC16F877A AM PM

Đồ án "Thiết kế đồng hồ xem giờ AM/PM dùng pic 16F877A hiển thị LCD" đã hoàn thành xuất sắc các mục tiêu đề ra. Sản phẩm cuối cùng là một mạch đồng hồ số dùng PIC16F877A hoạt động ổn định, chính xác và có đầy đủ các chức năng cơ bản. Qua quá trình thực hiện, sinh viên đã tích lũy được nhiều kiến thức và kinh nghiệm thực tiễn quý báu về thiết kế mạch, lập trình CCS C cho PIC, và gỡ lỗi hệ thống nhúng. Tuy nhiên, bên cạnh những thành công, đồ án vẫn còn một số hạn chế nhất định. Theo báo cáo, phần cứng tự tạo có thể chưa đạt độ chính xác và thẩm mỹ cao như các sản phẩm thương mại. Hệ thống cũng có thể bị ảnh hưởng bởi nhiễu trong một số môi trường hoạt động. Đây là những điểm cần được cải thiện trong các phiên bản tiếp theo. Hướng phát triển cho dự án là rất rộng mở. Từ nền tảng này, có thể tích hợp thêm nhiều tính năng hữu ích để biến chiếc đồng hồ đơn giản thành một thiết bị thông minh đa chức năng. Việc nâng cấp và cải tiến không chỉ nâng cao giá trị của sản phẩm mà còn là cơ hội để tiếp tục học hỏi và chinh phục những công nghệ mới.

6.1. Tổng kết những kết quả đạt được và hạn chế của đề tài

Kết quả đạt được lớn nhất là xây dựng thành công một mạch đồng hồ số hoàn chỉnh, làm chủ được công nghệ liên quan đến vi điều khiển PIC16F877A, module RTC và LCD. Hạn chế chính nằm ở việc mạch còn khá cồng kềnh, chi phí phần cứng tương đối cao và độ bền chưa được kiểm chứng trong thời gian dài. Việc tối ưu hóa thiết kế mạch in (PCB) và lựa chọn linh kiện phù hợp có thể khắc phục những điểm này.

6.2. Tiềm năng cải tiến và tích hợp thêm cảm biến trong tương lai

Hướng phát triển được đề xuất trong tài liệu là tích hợp thêm cảm biến nhiệt độ (ví dụ LM35 hoặc DS18B20) để đồng hồ có thể hiển thị cả nhiệt độ môi trường. Xa hơn nữa, có thể kết nối hệ thống với module Wi-Fi (ESP8266) hoặc Bluetooth để đồng bộ thời gian qua Internet và điều khiển từ xa qua điện thoại thông minh. Việc cải thiện giao diện người dùng bằng màn hình LCD đồ họa hoặc OLED cũng là một hướng đi đầy hứa hẹn, giúp sản phẩm trở nên hiện đại và hấp dẫn hơn.

22/09/2025

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

Chương 1: Tổng quan: Nêu tính cấp thiết của đề tài, xu hướng và tình hình khoa học và công nghệ hiện nay. Sự phát triển công nghiệp và đời sống hằng ngày và từ đó đưa ra lý do chọn đề tài và xác định mục tiêu cho đề tài. Chương 2: Cở sở lý thuyết: Trình bày tổng quan về các thành phần và chức năng của từng loại phần cứng có trong hệ thống, dẫn dắt chi tiết cụ thể để xây dựng hoàn chỉnh về mô hình. Chương 3: Thiết kế và xây dựng hệ thống: Từ yêu cầu đề tài, trình bày về sơ đồ hệ thống.

Nêu ra các phương pháp xử lý dữ liệu rồi từ đó thiết kế mô hình. Chương 4: Kết quả thực hiện: Trình bày về kết quả của từng khối nhỏ và kết quả điều khiển hiển thị led bằng remote thông qua hình ảnh, video. Đưa ra các hiển thị như mong muốn đã lập trình. Chương 5: Kết luận và hướng phát triển: Dựa vào kết quả có được từ chương 4, đưa ra kết luận tổng quan về những gì đạt được và chưa đạt được của đề tài.

Từ đó đưa ra hướng phát triển để cải thiện hệ thống. 2 [ ] CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. DS1307 Module thời gian thực RTC DS1307 dùng để gọi thời gian : ngày, tháng, năm, giờ, phút, giây cho Vi điều khiển thông qua chẩun I2C, được tích hợp kèm thạch anh 32kHz. Có nguồn pin 3v để hoạt động thời gian một cách bền bỉ, DS1307 có một bộ dao động tích hợp giúp đảm bảo độ chính xác của đồng hồ và một bộ nhớ truy cập ngẫu nhiên (RAM) để lưu trữ dữ liệu.

3 Ký hiệu DS1307 mặt trước DS1307 mặt sau DS1307 Min Ký Thông số Nom Max Đơn STT (nhỏ hiệu (Chuẩn) (tối đa) vị nhất) 1. Vcc Điện áp cung cấp 4.5 V Điện áp vào mức 2.3 V cao 3 Điện áp vào mức 3. VBAT Nguồn dự trữ 2 3 3. ILI Dòng rò SCL -1 1 6.

ILO Dòng rò SDA -1 1 7. ICCA Dòng tiêu thụ 1. 1 : Thông số kỹ thuật cho DS1307 Chân Tên Chức năng 1 X1 Kết nối với thạch anh 32.768KHz tiêu chuẩn. Mạch dao động bên trong thiết kế để hoạt động với tinh thể có điện dung tải 2 X2 xác định 12,5pF.

Nguồn cung cấp đầu vào 3V dự phòng cho mạch. Pin phải 3 VBAT được giữ ổn định để hoạt động thích hợp. nếu nguồn cung cấp dự phòng là không cần thiết thì VBAT được nối đất. 4 GND Ground Đầu vào/ra dữ liệu nối tiếp (giao tiếp I2C).

Chân SDA truyền 5 SDA dữ liệu và cần có 1 điện trở kéo lên bên ngoài (điện áp kéo lên có thể lên đến 5.5V) Đầu vào nối tiếp. SCL truyền xung Clock đầu vào sử dụng 6 SCL để đồng bộ hóa dữ liệu. 7 SQW/OUT Điều khiển ngõ ra/ sóng vuông 4 Nguồn sơ cấp. Khi điện áp được đặt trong giới hạn bình 8 VCC thường có thể đọc và ghi dữ liệu.

Khi kết nối nguồn cung cấp dự phòng VBAT thì việc đọc và ghi bị hạn chế Bảng 2. 2: Chức năng các chân của DS1307 (https://datasheets.com/en/ds/DS1307. KHỐI XỬ LÝ TRUNG TÂ PIC16F877A là một loại vi điều khiển thuộc họ PIC16 của Microchip Technology. Đây là một trong những PIC được dùng rộng rãi để ứng dụng vào các mạch hiển thị, đếm, nhiệt độ, khoảng cách, … Nguyên lý hoạt động của PIC16F877A là vi điều khiển chạy trên kiến trúc RISC.

Kiến trúc này giúp cho vi điều khiển có thể xử lý các tác vụ nhanh hơn bằng cách sử dụng một tập lệnh đơn giản hơn so với kiến trúc CISC, tuy còn phức tạp trong việc lập chương trình nhưng PIC16F877A cho ta được nhiều thông tin và các port hơn. PIC16F877A là một vi điều khiển dòng 8-bit được sản xuất bởi Microchip Technology. Nó là một vi điều khiển có tính linh hoạt cao, hoạt động ở tần số cao và bộ nhớ lớn. PIC16F877A có nhiều tính năng như bộ chuyển đổi Analog-to- Digital (ADC) 10-bit, bộ tạo xung PWM, bộ đếm timer và bộ truyền thông nối tiếp.

Nó cũng có khả năng tương thích ngược với các phiên bản trước đó của PIC16F8x và có thể được sử dụng trong nhiều ứng dụng, bao gồm điều khiển thiết bị, thiết bị y tế, xe hơi và nhiều ứng dụng khác. PIC16F877A cũng được tích hợp sẵn với một số tính năng khác như bộ định thời, bộ phát ngắt, bộ định hướng nguồn điện và bộ chuyển đổi Analog-to-Digital (ADC) cho phép đọc giá trị từ các cảm biến. 4 Vi điều khiển PIC16F877A 5 Đặt tính PIC16F877A Kiến trúc vi điều khiển RISC(ReducedInstructionSet Computer) Bộ xử lý 8-bit và bộ nhớ Flash 14 KB Số lượng chân I/O 33 chân I/O 5 chân đầu vào analog và 28 chân đầu vào/số. Tốc độ xử lý 20 MHz Bộ định thời Có bộ định thời (timer) với nhiều chế độ hoạt động khác nhau.

Chế độ ngủ Tiết kiệm năng lượng (sleep mode) để giảm thiểu tiêu thụ điện năng khi không sử dụng. Giao tiếp Giao tiếp chuẩn như USART, SPI và I2C Nguồn điện Hoạt động với nguồn điện từ 2,0V đến 5,5V. Bảo mật Khả năng chống sao chép và chống lập trình lại bằng phần mềm. 3: Bảng đặt tính PIC16F877A RAM(bytes) 368 EPPROM/HEF 256 Số chân 40 Tốc độ CPU tối đa(MHz) 20 6 Chọn chân ngoại vi Không Bộ tạo dao động bên trong Không Số bộ so sánh 2 Số opamp Không Số kênh ADC 14 Độ phân giải ADC tối đa 10 ADC với tính toán Không Số bộ chuyển đổi DAC 0 Độ phân giải ADC tối đa 0 Tham chiếu điện áp nội bộ Có Nhiệt độ hoạt động tối thiểu (*C) -40 Nhiệt độ hoạt động tối đa (*C) 125 Điện áp hoạt động tối thiểu (V) 2 Điện áp hoạt động tối đa (V) 5.5 Điện áp cao thế Không Bảng 2.

4: Bảng đặt tính PIC16F877A Hình 2. 5 Sơ đồ chân vi điều khiển PIC16F877A 7 STT Chân Tên chân Mô tả MCLR được sử dụng trong quá trình lập trình, 1 MCLR / Vpp chủ yếu được kết nối với programer như PicKit 2 RA0 / AN0 Chân analog 0 hoặc chân 0 của PORTA 3 RA1 / AN1 Chân analog 1 hoặc chân 1 của PORTA 4 RA2 / AN2 / Vref- Chân analog 2 hoặc chân 2 của PORTA 5 RA3 / AN3 / Vref + Chân analog 3 hoặc chân 3 của PORTA RA4 / T0CKI / 6 C1out Chân 4 của PORTA 7 RA5/AN4/SS/C2out Chân analog 4 hoặc chân 5 của PORTA 8 RE0 / RD / AN5 Chân analog 5 hoặc chân 0 của PORTE 9 RE1 / WR / AN6 Chân analog 6 hoặc chân 1 của PORTE 10 RE2/CS/AN7 Chân 7 của PORTE 11 Vdd Chân nối đất của MCU 12 Vss Chân dương của MCU (+5V) 13 OSC1 / CLKI Bộ dao động bên ngoài / chân đầu vào clock 14 OSC2 / CLKO Bộ dao động bên ngoài / chân đầu vào clock RC0 / T1OSO / 15 T1CKI Chân 0 của PORT C 16 RC1 / T1OSI / CCP2 Chân 1 của POCTC hoặc chân Timer / PWM 17 RC2 / CCP1 Chân 2 của POCTC hoặc chân Timer / PWM 18 RC3 / SCK / SCL Chân 3 của POCTC 19 RD0 / PSP0 Chân 0 của POCTD 20 RD1 / PSPI Chân 1 của POCTD 21 RD2 / PSP2 Chân 2 của POCTD 22 RD3 / PSP3 Chân 3 của POCTD 23 RC4 / SDI / SDA Chân 4 của POCTC hoặc chân Serial Data vào 24 RC5 / SDO Chân 5 của POCTC hoặc chân Serial Data ra Chân thứ 6 của POCTC hoặc chân phát của Vi 25 RC6 / Tx / CK điều khiển Chân thứ 7 của POCTC hoặc chân thu của Vi 26 RC7 / Rx / DT điều khiển 27 RD4 / PSP4 Chân 4 của POCTD 8 28 RD5/PSP5 Chân 5 của POCTD 29 RD6/PSP6 Chân 6 của POCTD 30 RD7/PSP7 Chân 7 của POCTD 31 Vss Chân dương của MCU (+5V) 32 Vdd Chân nối đất của MCU 33 RB0/INT Chân thứ 0 của POCTB hoặc chân ngắt ngoài 34 RB1 Chân thứ 1 của POCTB 35 RB2 Chân thứ 2 của POCTB Chân thứ 3 của POCTB hoặc kết nối với 36 RB3/PGM programmer 37 RB4 Chân thứ 4 của POCTB 38 RB5 Chân thứ 5 của POCTB Chân thứ 6 của POCTB hoặc kết nối với 39 RB6/PGC programmer Chân thứ 7 của POCTB hoặc kết nối với 40 RB7/PGD programmer Bảng 2. 5: Bảng chức năng chân vi điều khiển PIC16F877 [ ] “https://drive.com/drive/folders/1SCYyh1wbIxa1kDwCyhH9WeUznIzCkLV? usp=share_link “ Một số thư viện cho 16F877A Thư viện trình điều khiển LCD: Thư viện này cung cấp các hàm để điều khiển các loại màn hình LCD, cho phép hiển thị các ký tự và số, vẽ đồ thị và thực hiện các chức năng khác. Thư viện trình điều khiển LED: Thư viện này cung cấp các hàm để điều khiển các loại đèn LED, bao gồm các chức năng như bật/tắt LED, nhấp nháy LED và điều khiển độ sáng của LED.

Thư viện trình điều khiển động cơ: Thư viện này cung cấp các hàm để điều khiển các loại động cơ, bao gồm các chức năng như chạy thẳng, quay trái/phải, tăng/giảm tốc độ và thực hiện các chức năng khác. 9 Thư viện trình điều khiển cảm biến: Thư viện này cung cấp các hàm để đọc dữ liệu từ các loại cảm biến, bao gồm các chức năng như đo nhiệt độ, đo ánh sáng, đo độ ẩm và thực hiện các chức năng khác. Thư viện trình điều khiển giao tiếp: Thư viện này cung cấp các hàm để giao tiếp với các thiết bị ngoại vi khác, bao gồm các chức năng như truyền/nhận dữ liệu qua cổng UART, SPI hoặc I2C và thực hiện các chức năng khác. Thư viện trình điều khiển bàn phím: Thư viện này cung cấp các hàm để đọc dữ liệu từ các loại bàn phím, bao gồm các chức năng như đọc phím bấm và thực hiện các chức năng khác.

Thư viện trình điều khiển ADC: Thư viện này cung cấp các hàm để đọc giá trị ADC từ các cổng đầu vào analog trên vi điều khiển. Thư viện trình điều khiển EEPROM: Thư viện này cung cấp các hàm để ghi và đọc dữ liệu từ bộ nhớ EEPROM trên vi điều khiển. LCD 16x Màn hình LCD 16x2 là một loại màn hình hiển thị được sử dụng rộng rãi trong các ứng dụng điện tử. Nó bao gồm một mảng các điểm ảnh (pixels) được tổ chức thành 16 hàng và 2 cột, tương ứng với số lượng ký tự có thể hiển thị trên một dòng và số dòng hiển thị trên màn hình.

6 Module LCD 1602 Màn hình LCD 16x2 được điều khiển bằng một vi điều khiển như Arduino hoặc Raspberry Pi thông qua một giao tiếp song song 8-bit hoặc 4-bit. Vi điều khiển sẽ gửi dữ liệu và lệnh đến màn hình thông qua các chân dữ liệu và chân điều khiển. 10 Tên Chức năng LCD 1602 có thể hiển thị tối đa 16 ký tự trên mỗi dòng và hai Hiển thị ký tự và dòng.

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