TỔNG QUAN
GIỚI THIỆU
Xã hội ngày càng phát triển nhờ vào khoa học – kỹ thuật, ngành điện tử đã đạt được nhiều thành tựu to lớn, với sự ra đời của nhiều sản phẩm đáp ứng nhu cầu thiết yếu của con người Vi điều khiển, đặc biệt là PIC 16F877A, đã khẳng định vị thế trong nhiều ứng dụng, nổi bật là đồng hồ điện tử hiển thị giờ trên màn hình LCD với độ chính xác gần như tuyệt đối, thay thế cho đồng hồ cơ truyền thống Em đã tìm hiểu và thiết kế ứng dụng “Thiết Kế Đồng Hồ Xem Giờ Am/Pm Dùng PIC”.
16F877A Hiển Thị Lên Lcd ” trong khuôn khổ của đồ án 1.
MỤC TIÊU NGHIÊN CỨU
Nghiên cứu cơ sở lý thuyết về vi điều khiển hiển thị màn hình LCD, module thời gian thực, arduino Uno
Nghiên cứu, thực hành các thao tác kĩ thuật điện tử cơ bản (lắp ráp, test mạch, mô phỏng, thiết kế )
Trong quá trình nghiên cứu, tôi mong muốn phát triển một sản phẩm hữu ích cho nhiều lĩnh vực trong cuộc sống, với khả năng đạt được độ chính xác cao trên 60%.
ĐỐI TƯỢNG NGHIÊN CỨU
- Module thời gian thực DS1307
- Kết nối các module và cảm biến với Pic 16F877A để hiển thị các giá trị cần thiết lên lcd.
PHẠM VI NGHIÊN CỨU
Nghiên cứu lý thuyết về mạch hiển thị tên và ngày giờ trên LCD 1602 nhằm lựa chọn thuật toán và phương pháp có độ chính xác cao để nhận diện remote, từ đó nâng cao độ chính xác cho sản phẩm.
Tìm hiểu các lý thuyết có liên quan như ngôn ngữ Arduino
BỐ CỤC ĐỒ ÁN
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
Kết luận tổng quan về những thành tựu và hạn chế của đề tài cho thấy những điểm mạnh đã đạt được, đồng thời chỉ ra những khía cạnh cần cải thiện Từ đó, chúng ta có thể đề xuất các hướng phát triển nhằm nâng cao hiệu quả của hệ thống trong tương lai.
CƠ SỞ LÝ THUYẾT
DS1307
Module RTC DS1307 là thiết bị gọi thời gian, cung cấp thông tin về ngày, tháng, năm, giờ, phút và giây cho vi điều khiển qua giao thức I2C Nó được tích hợp với thạch anh 32kHz và sử dụng nguồn pin 3V để duy trì hoạt động ổn định DS1307 còn có bộ dao động tích hợp, đảm bảo độ chính xác cao cho đồng hồ, cùng với bộ nhớ RAM để lưu trữ dữ liệu.
Hình 2 2 Sơ đồ chân DS1307 mặt sau
Max (tối đa) Đơn vị
1 Vcc Điện áp cung cấp 4.5 5 5.5 V
2 V IH Điện áp vào mức cao 2.2 Vcc+0.3 V
3 V IL Điện áp vào mức thấp -0.3 +0.8 V
7 I CCA Dòng tiêu thụ 1.5 mA
Bảng 2 1 : Thông số kỹ thuật cho DS1307
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 xác định 12,5pF
Nguồn cung cấp đầu vào 3V dự phòng cho mạch cần được duy trì ổn định để đảm bảo hoạt động hiệu quả Trong trường hợp nguồn dự phòng không cần thiết, VBAT sẽ được nối đất.
Chân SDA trong giao tiếp I2C là chân đầu vào/ra dữ liệu, có chức năng truyền tải thông tin Để hoạt động hiệu quả, chân SDA cần được kết nối với một điện trở kéo lên bên ngoài, với điện áp kéo lên có thể đạt tới 5.5V.
6 SCL Đầu vào nối tiếp SCL truyền xung Clock đầu vào sử dụng để đồng bộ hóa dữ liệu
7 SQW/OUT Điều khiển ngõ ra/ sóng vuông
Nguồn sơ cấp cho phép đọc và ghi dữ liệu khi điện áp nằm trong giới hạn bình thường Tuy nhiên, khi kết nối với nguồn cung cấp dự phòng VBAT, khả năng đọc và ghi sẽ bị hạn chế.
Bảng 2 2: Chức năng các chân của DS1307
(https://datasheets.maximintegrated.com/en/ds/DS1307.pdf)
KHỐI XỬ LÝ TRUNG TÂM
PIC16F877A là vi điều khiển nổi bật trong dòng PIC16 của Microchip Technology, được ứng dụng phổ biến trong các mạch hiển thị, đếm, đo nhiệt độ và khoảng cách.
Vi điều khiển PIC16F877A hoạt động dựa trên kiến trúc RISC, cho phép xử lý tác vụ nhanh hơn nhờ vào tập lệnh đơn giản hơn so với kiến trúc CISC Mặc dù việc lập trình có thể phức tạp, PIC16F877A cung cấp nhiều thông tin và cổng kết nối hơn, mang lại lợi ích cho người sử dụng.
PIC16F877A là vi điều khiển 8-bit do Microchip Technology sản xuất, nổi bật với tính linh hoạt, tần số hoạt động cao và bộ nhớ lớn Vi điều khiển này tích hợp 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à giao tiếp nối tiếp Nó tương thích ngược với các phiên bản trước của PIC16F8x, cho phép ứng dụng rộng rãi trong điều khiển thiết bị, thiết bị y tế, xe hơi và nhiều lĩnh vực khác Thêm vào đó, PIC16F877A còn có các tính năng như bộ định thời, bộ phát ngắt, bộ định hướng nguồn điện, và khả năng đọc giá trị từ cảm biến thông qua ADC.
Hình 2 4 Vi điều khiển PIC16F877A
Kiến trúc vi điều khiển RISC (Reduced Instruction Set
Bộ xử lý 8-bit và bộ nhớ Flash 14 KB
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à
Nguồn điện Hoạt động với nguồn điện từ 2,0V đến
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
Bảng 2 3: Bảng đặt tính PIC16F877A
Tốc độ CPU tối đa(MHz) 20
Chọn chân ngoại vi Không
Bộ tạo dao động bên trong 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
Chân Tên chân Mô tả
MCLR được sử dụng trong quá trình lập trình, 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
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
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 điều khiển
Chân thứ 7 của POCTC hoặc chân thu của Vi điều khiển
27 RD4 / PSP4 Chân 4 của POCTD
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 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 programmer
Chân thứ 7 của POCTB hoặc kết nối với programmer
Bảng 2 5: Bảng chức năng chân vi điều khiển PIC16F877 𝑨 [𝟑]
“https://drive.google.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 cung cấp các hàm hữu ích để điều khiển màn hình LCD, cho phép hiển thị ký tự, số, vẽ đồ thị và thực hiện nhiều chức năng khác.
Thư viện trình điều khiển LED cung cấp các hàm hữu ích cho việc quản lý đèn LED, cho phép người dùng thực hiện các chức năng như bật và tắt LED, làm cho LED nhấp nháy, cũng như điều chỉnh độ sáng của đèn.
Thư viện trình điều khiển động cơ cung cấp các hàm cần thiết để điều khiển nhiều loại động cơ Nó bao gồm các chức năng như chạy thẳng, quay trái hoặc phải, tăng và giảm tốc độ, cùng với nhiều tính năng khác.
Thư viện trình điều khiển cảm biến cung cấp các hàm hữu ích cho việc đọc dữ liệu từ nhiều loại cảm biến khác nhau, bao gồm các chức năng đo nhiệt độ, ánh sáng, độ ẩm và thực hiện nhiều tác vụ khác.
Thư viện trình điều khiển giao tiếp cung cấp các hàm cần thiết để tương tác với các thiết bị ngoại vi, hỗ trợ truyền và nhận dữ liệu qua các giao thức như UART, SPI và I2C, đồng thời thực hiện nhiều chức năng khác.
Thư viện trình điều khiển bàn phím cung cấp các hàm hữu ích để đọc dữ liệu từ nhiều loại bàn phím, bao gồm khả năng đọ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 16x2
Màn hình LCD 16x2 là một loại màn hình hiển thị phổ biến trong các ứng dụng điện tử, với cấu trúc 16 hàng và 2 cột, cho phép hiển thị một số lượng ký tự nhất định trên mỗi dòng.
Màn hình LCD 16x2 có thể được điều khiển bởi vi điều khiển như Arduino hoặc Raspberry Pi thông qua giao tiếp song song 8-bit hoặc 4-bit Vi điều khiển 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.
Hiển thị ký tự và số
Màn hình LCD 1602 có khả năng hiển thị tối đa 16 ký tự trên mỗi dòng và tổng cộng 2 dòng, cho phép hiển thị các ký tự, số, và ký hiệu đặc biệt Độ phân giải của màn hình là 16x2, tương ứng với 16 ký tự mỗi hàng và 2 hàng Ngoài ra, màn hình còn có chức năng điều khiển đèn nền.
LCD 1602 có khả năng điều khiển đèn nền để hiển thị thông tin trong điều kiện ánh sáng yếu.
Màn hình LCD 16x2 có góc nhìn rộng, có thể hiển thị rõ ràng từ nhiều góc độ khác nhau. Độ tin cậy
Màn hình LCD 16x2 rất đáng tin cậy và ít gây ra các sự cố về hiển thị
LCD 1602 được thiết kế để tiết kiệm điện năng, với mức tiêu thụ điện năng thấp hơn so với các màn hình hiển thị khác. Độ bền cao
LCD 1602 có độ bền cao và có thể hoạt động ở nhiều nhiệt độ và môi trường khác nhau, từ -20 đến 70 độ C
Bảng 2 6: Bảng đặt tính LCD 16x2
Thư viện LCD hiển thị đổi với Pic16F877A:
File LCD.h: là file header dùng để khai báo chân LCD sử dụng
File LCD_Functions.c: là file chưa các hàm LCD Điện áp cực đại ( Max) 7V Điện áp cực tiểu (Min) -0.3V
Hoạt động ổn định 2.7V – 5.5V Điện áp ra mức cao >2.4V Điện áp ra mức thấp