TỔNG QUAN
GIỚI THIỆU
Xã hội ngày càng tiến bộ cùng với sự phát triển không ngừng của khoa học – kỹ thuật, thì ngành điện tử đã đem lại những thành tựu to lớn Ngày càng có nhiều sản phẩm phát triển vượt bậc ra đời, đáp ứng được nhu cầu thiết yếu của con người. Trong đó, vi điều khiển đã khẳng định được vị thế của mình trong nhiều ứng dụng, điển hình là đồng hồ điện tử hiển thị giờ lên LCD với mức độ chính xác gần như tuyệt đối thay thế cho đồng hồ cơ Với những ứng dụng của vi điề khiển PIC 16F877A, 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ế ).
Ngoài ra khi nghiên cứu đề tài em muốn tạo ra sản phẩm có ích trong một số lĩnh vực trong đời sống Có thể đạ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 cơ sở lý thuyết về mạch hiển thị tên, ngày giờ, … trên LCD 1602. Mục đích của đề tài là lựa chọn thuật toán, phương pháp có độ chính xác tương đối để nhận diện remote và tăng độ 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 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.
CƠ SỞ LÝ THUYẾT
KHỐI XỬ LÝ TRUNG TÂM
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.
Hình 2 4 Vi điều khiển PIC16F877A
Kiến trúc vi điều khiển RISC(ReducedInstructionSet
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,
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
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
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
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
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
Chân thứ 7 của POCTB hoặc kết nối với
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 : 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.
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.
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.
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.
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ó có thể hiển thị các ký tự và số trong các kiểu chữ khác nhau, bao gồm cả số, chữ cái, ký tự đặc biệt và các ký hiệu đặc số biệt khác. Độ phân giải của màn hình là 16x2, nghĩa là nó có thể hiển Độ phân giải thị tối đa 16 ký tự trên mỗi hàng và có 2 hàng. Điều khiể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. nền
Màn hình LCD 16x2 có góc nhìn rộng, có thể hiển thị rõ Góc nhìn ràng từ nhiều góc độ khác nhau.
Màn hình LCD 16x2 rất đáng tin cậy và ít gây ra các sự Độ tin cậy cố về hiển thị.
LCD 1602 được thiết kế để tiết kiệm điện năng, với mức Tiết kiệm điện tiêu thụ điện năng thấp hơn so với các màn hình hiển thị năng khác.
LCD 1602 có độ bền cao và có thể hoạt động ở nhiều nhiệt Độ bền cao độ 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 6 Đ GHI THỜI GIAN SAU KHI CHỈNH VÀO RTC
Hình 2 10: Lưu đồ hoạt động khối thời gian
3.4.3 Lưu đồ hàm chỉnh báo thức chinh_bt ();
HIỂN THỊ NỘI DUNG BÁO CHỈNH BÁO THỨC
HIỂN THỊ CHỌN GIÁ TRỊ BÁO THỨC CHỈNH
TĂNG GIÁ TRỊ BÁO THỨC ĐƯỢC CHỌN TRONG
GIẢM GIÁ TRỊ BÁO THỨC ĐƯỢC CHỌN TRONG
TĂNG GIÁ TRỊ CHỌN CHỈNH (MODE++)
Hình 2 14: Lưu đồ hoạt động khối thời gian
KẾT QUẢ THỰC HIỆN
Kết quả hoạt động toàn hệ thống
Qua quá trình thiết kế phần cứng, chọn lựa linh kiện, em đã tiến hành kiểm tra các kết nối các module của các khối và cho ra kết quả như các hình bên dưới.
Sau khi kiểm tra các module hoạt động ổn định Em tiến hành kết nối các module và linh kiện lại với nhau và thu được sản phẩm.
Hình 4 1 Mô hình sản phẩm
Hoạt động của sản phẩm:
- Khi chúng ta nhấn nút nhấn 1 (trái qua phải), đồng hồ chuyển trạng thái điều chỉnh thời gian thực, ngày tháng, năm.
Hình 4.5: Đồng hồ đang ở trạng thái điều chỉnh thời gian thực
- Nhấn nút nhấn 2 để chỉnh giờ tăng và nhấn nút nhấn 3 để chỉnh giờ giảm.
- Khi nhấn nút nhấn 4, chuyển sang chế đồ hẹn giờ có hiển thị giờ, phút, giây Để tùy chỉnh thì ta vẫn nhấn 2 nút tăng, giảm, sau đó nhấn 1 lần nữa nút số 4 để cập nhận quá trình điều chỉnh và thoát để chờ Buzzer báo.
Điều chỉnh báo thức
Hình 4 2 Đồng hồ ở chế độ cài đặt báo thức
- Reset toàn bộ mạch bằng cách nhấn nút nhấn 0 cạnh Pic 16F877A. Để mô tả rõ hơn hoạt động của sản phẩm em có đính kèm video clip được đính kèm link sau: https://youtu.be/QMMKXmNqABs
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
KẾT LUẬN
Với sự hỗ trợ tận tình từ giáo viên hướng dẫn về cơ bản đã hoàn thành được những mục tiêu đề ra là thiết kế mạch hiển thị thời gian thực lên lcd thông qua PIC16F877A Trong quá trình thực hiện, tuy gặp không ít khó khăn từ phần cứng đến phần mềm Mặc dù gặp không ít khó khăn như thế nhưng em đã cố gắng nghiên cứu vượt qua và tích lũy cho mình một số kinh nghiệm mới, kiến thức mới để hoàn thành đề tài.
HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN
- Chi phí phần cứng khá cao.
- Còn ảnh hưởng nhiều bởi nhiễu.
- Chỉ chạy được trên môi trường lý tưởng.
- Mắt thu nhận tín hiệu chưa nhanh.
- Phần cứng tự tạo nên chưa đạt độ chính xác cao.
- Thu thập nhiều dữ liệu để tăng tính chính xác
- Cải thiện thuật toán để cũng cố mô hình hoàn thiện
- Dự định phát triển lên thêm cảm biến đo nhiệt độ, nhưng chưa thực hiện được
- Trang bị thêm cảm biến, đọc đồng hồ để thu thập dữ liệu.