- Chân số 25 cũng hoạt động như TX vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để gửi dữ liệu nối tiếp.. - Chân 26 cũng hoạt động như RX, vì vậy nếu bạn muốn
GIỚI THIỆU NỘI DUNG ĐỀ TÀI
Thời gian thực ở đây được hiểu như thời gian tuyệt đối mà con người đang sử dụng Điểm đặc biệt của đồng hồ đếm thời gian thực là khả năng cho biết thời gian hiện tại một cách chính xác, ngay cả khi nguồn điện bị ngắt Khi cấp nguồn trở lại, đồng hồ vẫn chạy đúng nhờ IC đếm thời gian thực được cấp nguồn bằng pin, giúp thiết bị hoạt động liên tục và ổn định dù nguồn điện không liên tục.
NHIỆM VỤ VÀ PHÂN TÍCH NHIỆM VỤ
N HIỆM VỤ
Đề tài báo cáo môn Kỹ thuật vi điều khiển 1 tập trung thiết kế một mạch đồng hồ thời gian thực, có khả năng hiển thị đầy đủ giờ, phút, giây và ngày tháng năm trên màn hình LCD Nhiệm vụ chính là tích hợp bộ đếm thời gian, quản lý tín hiệu thời gian và đảm bảo cập nhật liên tục lên LCD, đồng thời tối ưu độ chính xác và ổn định của đồng hồ Báo cáo sẽ trình bày nguyên lý hoạt động, sơ đồ khối, lựa chọn linh kiện, cách thức kiểm tra và hiệu chỉnh để đảm bảo đồng hồ thời gian thực hoạt động đúng với yêu cầu đề bài.
P HÂN TÍCH NHIỆM VỤ
Các nội dung cần nắm bắt:
- Hiểu và vận dụng được các linh kiện có trong mạch, từ đó tìm ra nguyên lí hoạt động của mạch.
- Biết các nguyên lí hoạt động của PIC 16F877A, thời gian thực
DS1307, và màn hình hiển thị LCD.
TỔNG QUAN SƠ LƯỢC LÝ THUYẾT
PIC 16F877A
PIC16F877A là một vi điều khiển PIC 40 chân được sử dụng rộng rãi trong các dự án và ứng dụng nhúng nhờ độ ổn định và khả năng mở rộng Nó có năm cổng I/O từ Port A đến Port E, cho phép kết nối đa dạng với cảm biến, động cơ và các thiết bị ngoại vi Vi xử lý này tích hợp nhiều tính năng như bộ nhớ Flash để lưu chương trình, RAM cho dữ liệu vận hành và EEPROM cho lưu trữ dữ liệu dài hạn, cùng với các timer, PWM, ADC và các giao diện UART, SPI, I2C Nhờ cấu hình I/O linh hoạt và các giao thức truyền thông phổ biến, PIC16F877A phù hợp cho các dự án từ điều khiển servo tới hệ thống đo lường và điều khiển tự động.
E Nó có ba bộ định thời trong đó có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit Nó hỗ trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức song song, giao thức I2C PIC16F877A hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời. b) Các thông số kỹ thuật:
Kích thước bộ nhớ chương trình (Kbyte) 14
Tốc độ CPU tối đa (MHz) 20
Chọn chân ngoại vi (PPS) 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 (bit) 10
ADC với tính toán Không
Số bộ chuyển đổi DAC 0 Độ phân giải DAC tối đa 0
Tham chiếu điện áp nội bộ Có
Số bộ định thời 8 bit 2
Số bộ định thời 16 bit 1
Bộ định thời đo tín hiệu 0
Bộ định thời giới hạn phần cứng 0
Số đầu ra PWM 0 Độ phân giải PWM tối đa 10
Bộ định thời góc Không
Bộ tăng tốc toán học Không
Bộ định thời giám sát có cửa sổ (WWDT) Không
Bộ tạo dao động được điều khiển bằng số 0
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 c) Trình phiên dịch của PIC16F877A:
- Trình biên dịch chính thức của vi điều khiển PIC là trình biên dịch
MPLAB C18, có trên trang web chính thức của Microchip.
Chúng ta viết mã cho vi điều khiển PIC bằng trình biên dịch PIC và tiến hành biên dịch để sinh ra file hex; file hex này được tải lên bộ vi điều khiển PIC để nạp chương trình và chạy trên thiết bị Với dòng vi điều khiển PIC16F877A, cổng nối tiếp (serial port) đóng vai trò quan trọng trong giao tiếp giữa máy tính và MCU, hỗ trợ nạp chương trình và truyền nhận dữ liệu một cách hiệu quả.
- PIC16F877a có một cổng nối tiếp trong đó được sử dụng để giao tiếp dữ liệu.
Chân số 25 cũng hoạt động như TX, vì vậy khi bạn muốn thực hiện giao tiếp nối tiếp thì chân này sẽ được dùng để gửi dữ liệu nối tiếp Điều này giúp đơn giản hóa cấu hình giao tiếp giữa các thiết bị và cho phép truyền dữ liệu serial một cách liên tục với độ tin cậy cao Trong các ứng dụng giao tiếp nối tiếp, chân 25 đóng vai trò là cổng xuất dữ liệu, đảm bảo tín hiệu được phát ra đúng chuẩn và tăng khả năng tương thích của hệ thống.
Chân 26 cũng hoạt động như RX, vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để nhận dữ liệu nối tiếp Phần e) Giao tiếp I2C của PIC16F877A sẽ được trình bày để giúp bạn hiểu cách thiết lập và vận hành giao tiếp I2C trên vi điều khiển PIC16F877A nhằm kết nối với các thiết bị ngoại vi và cảm biến bằng chuẩn I2C.
PIC16F877A tích hợp sẵn cổng I2C để thực hiện giao tiếp I2C một cách dễ dàng Chân số 18 đóng vai trò là SCL (Serial Clock Line) và chân số 23 đóng vai trò là SDA (Serial Data Line), giúp thiết kế hệ thống với các thiết bị I2C ngoại vi thuận tiện và hiệu quả.
Port C trên PIC16F877A tích hợp cả cổng nối tiếp và cổng I2C, cho phép sử dụng Port C như một cổng giao tiếp đơn giản hoặc thực hiện hai giao tiếp đồng thời qua các chân RC6/RC7 ( UART ) và RC4/RC3 ( I2C ) tùy thuộc vào cách lập trình viên triển khai Thiết kế này mang lại sự linh hoạt tối ưu cho các ứng dụng nhúng, cho phép tiết kiệm tài nguyên và đơn giản hoá mạch f) Ngắt PIC16F877A được cấu hình để phản hồi nhanh các sự kiện từ hai giao tiếp này, đảm bảo dữ liệu được xử lý một cách liên tục và ổn định.
PIC16F877A có tổng cộng 8 nguồn ngắt, mỗi nguồn ngắt ứng với một sự kiện kích hoạt ngắt trong hệ thống Nguồn ngắt có thể là bộ đếm thời gian, ví dụ các ngắt được tạo sau mỗi 1 giây, hoặc có thể đến từ sự kiện thay đổi trạng thái chân, ví dụ khi trạng thái chân thay đổi ngắt sẽ được tạo ra Hiểu rõ các nguồn ngắt này giúp tối ưu hóa xử lý ngắt và thiết kế phần mềm cho PIC16F877A.
Vì vậy, ngắt PIC16F877a có thể được tạo ra bằng 8 cách sau:
Ngắt bộ định thời (Timer0 / Timer1).
Thay đổi trạng thái cổng B.
Cổng Slave Song song Đọc / Ghi.
REAL TIME CLOCK DS1307
Module DS1307 là một trong những module RTC giá rẻ được sử dụng phổ biến nhất trong các dự án nhúng Đây là một IC tích hợp cho thời gian, cho phép lưu trữ và theo dõi thời gian tuyệt đối với độ chính xác cho thứ, ngày, tháng, năm, giờ, phút và giây Nhờ giao diện I2C đơn giản, DS1307 dễ tích hợp với vi điều khiển và có thể hoạt động như một đồng hồ thực khi được cấp nguồn và có pin dự phòng Với tính phổ biến, độ tin cậy và giá thành hợp lý, DS1307 là lựa chọn phổ biến cho các hệ thống cần đồng hồ thời gian thực đáng tin cậy.
DS1307 là sản phẩm do Dallas sản xuất, là một vi mạch đồng hồ thực thời gian (RTC) dùng để theo dõi ngày giờ cho hệ thống nhúng Chip có 7 thanh ghi 8 bit, mỗi thanh ghi chứa Thứ, ngày, tháng, năm, giờ, phút và giây, cho phép lưu trữ và đọc lịch trình thời gian một cách dễ dàng Một số tính năng quan trọng của DS1307 bao gồm giao tiếp I2C hai dây chuẩn, khả năng hoạt động với nguồn pin dự phòng VBAT để bảo toàn thời gian khi mất nguồn, cùng với 56 byte RAM dùng cho dữ liệu người dùng và đầu ra SQW/OUT cho tín hiệu xung đồng hồ.
- Khả năng tạo sóng vuông có thể lập trình.
- Dòng điện thấp, dưới 500mA trong chế độ sao lưu pin.
- Khả năng thiết lập ngày đến năm 2100.
- Sử dụng chuẩn giao tiếp I2C.
- Module DS1307 sử dụng pin CR2023 3 volt Bộ nhớ EEPROM 24c32 nhúng trên mô-đun này có thể tiết kiệm 32kb dữ liệu.
- Ngoài ra, các bạn có thể đo nhiệt độ môi trường bằng cách sử dụng cảm biến DS18B20 đã được tích hợp sẵn trên board mạch.
DS1307 là một IC thời gian thực tiêu thụ điện năng thấp, dùng để cập nhật thời gian và ngày tháng và có 56 byte SRAM Dữ liệu và địa chỉ được truyền nối tiếp qua hai đường bus serial hai dây (I2C) Nó cung cấp đầy đủ thông tin giờ, phút, giây, thứ, ngày, tháng và năm, trong đó ngày cuối tháng được tự động điều chỉnh cho các tháng có ít hơn 31 ngày và có khả năng nhảy năm tự động Đồng hồ có thể hoạt động ở chế độ 24 giờ hoặc 12 giờ kèm chỉ thị AM/PM DS1307 còn tích hợp mạch cảm biến điện áp để dò các điện áp lỗi và tự động chuyển nguồn giữa nguồn cấp và nguồn pin VBAT nhằm duy trì thời gian khi nguồn chính bị ngắt.
DS1307 hoạt động ở vai trò slave trên đường bus nối tiếp (I2C); việc truy cập được thực hiện bằng chỉ thị START và một mã địa chỉ thiết bị được kết hợp với địa chỉ các thanh ghi, sau đó các thanh ghi sẽ được truy cập liên tục cho đến khi chỉ thị STOP được thực thi c) Các chân chức năng của DS1307 được mô tả ở phần tiếp theo.
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip.
- V BAT : cực dương của một nguồn pin 3V nuôi chip.
- GND: chân mass chung cho cả pin 3V và Vcc.
Vcc là nguồn cấp cho giao diện I2C của DS1307, thường là 5V và được dùng chung với vi điều khiển Nếu Vcc không được cấp nguồn nhưng VBAT vẫn có nguồn, DS1307 vẫn hoạt động như nguồn dự phòng, nhưng không thể ghi và đọc dữ liệu.
SQW/OUT là ngõ phụ tạo xung vuông (Square Wave / Output Driver) cho DS1307 Tần số của xung vuông này có thể được lập trình, nên chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực Vì vậy, khi nối mạch, ta có thể bỏ trống chân SQW/OUT.
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C mà chúng ta đã tìm hiểu trong bài TWI của AVR.
LCD LMD16L
LCD (Liquid Crystal Display) là màn hình tinh thể lỏng, một loại mô-đun hiển thị điện tử được tích hợp trong nhiều thiết bị như điện thoại di động, máy tính và TV, cũng như các thiết bị điện tử khác Cấu tạo của LCD gồm ba thành phần chính: lớp phân cực, lớp tinh thể lỏng và nguồn sáng nền, cho phép điều khiển hình ảnh bằng cách thay đổi mức quay của tinh thể lỏng dưới tác động của điện trường Chức năng của LCD là chuyển tín hiệu điện thành hình ảnh bằng cách điều chỉnh ánh sáng đi qua tinh thể lỏng, mang lại khả năng hiển thị ký tự và đồ họa với độ tương phản và độ sáng phù hợp, đồng thời đảm bảo thiết kế mỏng nhẹ và tiêu thụ điện năng thấp.
- Điện áp hoạt động của màn hình LCD này là 4.7V-5.3V Nó bao gồm hai hàng trong đó mỗi hàng có thể tạo ra 16 ký tự.
- Việc sử dụng dòng điện là 1mA không có đèn nền.
- Mọi nhân vật đều có thể được tạo bằng hộp 5 × 8 pixel.
- Bảng chữ cái & số trên màn hình LCD chữ và số.
- Là màn hình có thể hoạt động trên hai chế độ như 4-bit & 8-bit.
- Chúng có thể đạt được với Đèn nền xanh lam & xanh lục.
- Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển.
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển.
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD.
Chân RS (chân số 4) là tín hiệu chọn thanh ghi của LCD, được nối với mức logic 0 hoặc 1 Khi RS ở mức logic 0, bus DB0-DB7 sẽ nối với thanh ghi lệnh (Instruction Register – IR) của LCD ở chế độ ghi, hoặc nối với bộ đếm địa chỉ của LCD ở chế độ đọc.
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
- Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi hoặc nối với logic “1” đọc.
Chân số 6 - E (Enable) là chân cho phép Sau khi các tín hiệu được đặt trên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có một xung kích hoạt từ chân E Trong chế độ ghi, dữ liệu trên bus sẽ được LCD ghi vào thanh ghi nội bộ khi phát hiện một chuyển tiếp từ mức cao xuống mức thấp (high-to-low transition) của tín hiệu chân E.
Trong chế độ đọc, LCD phát ra dữ liệu trên các đường DB0–DB7 khi nhận thấy sự chuyển cạnh lên (low-to-high transition) trên chân E và dữ liệu này được LCD giữ trên bus cho đến khi chân E xuống mức thấp.
Chân số 7 đến 14 - D0 đến D7 là 8 đường của bus dữ liệu dùng để trao đổi thông tin với MPU, và có hai chế độ sử dụng 8 đường bus này: chế độ 8 bit (dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7) và chế độ 4 bit (dữ liệu được truyền trên các đường D4 đến D7, mỗi byte được ghép từ hai lần truyền 4 bit).
4 đường từ DB4 tới DB7, bit MSB là DB7).
- Chân số 15 - A : nguồn dương cho đèn nền.
- Chân số 16 - K : nguồn âm cho đèn nền. c) Nguyên lý hoạt động
Mô-đun LCD 16x2 tích hợp bộ hướng dẫn lệnh đặt trước cho việc điều khiển màn hình Mỗi lệnh được thiết kế để thực hiện một nhiệm vụ cụ thể, từ khởi động và thiết lập chế độ hiển thị cho đến di chuyển con trỏ, ghi văn bản và điều chỉnh thời gian hiển thị Các lệnh thường dùng và chức năng của chúng được liệt kê trong bảng tham khảo phía dưới, giúp người dùng dễ dàng xác định lệnh phù hợp cho dự án Hiểu rõ các lệnh này sẽ tối ưu hóa giao tiếp giữa vi điều khiển và LCD 16x2, nâng cao hiệu suất hiển thị và rút ngắn thời gian lập trình.
0F LCD bật, con trỏ bật, con trỏ nhấp nháy bật
2 Quay về màn hình chính
0E Màn hình bật, con trỏ nhấp nháy tắt
80 Bật con trỏ trở về vị trí đầu tiên của hàng 1
C0 Bắt con trỏ trở về vị trí đầu tiên của hàng 2
38 Sử dụng 2 hàng và ma trận 5x7
83 Con trỏ hàng 1 vị trí 3
8 Tắt màn hình hiển thị và con trỏ
C1 Nhảy đến dòng 2 vị trí 1
OC Bật màn hình hiển thị, tắt con trỏ
C2 Nhảy đến hàng 2, vị trí 2
Các bước cần thiết để khởi tạo màn hình LCD được trình bày dưới đây và chúng là các bước phổ biến cho hầu hết các ứng dụng: bắt đầu bằng kiểm tra nguồn cấp và kết nối vật lý giữa vi điều khiển và LCD, thiết lập chế độ giao tiếp (như SPI hoặc I2C), cấu hình các tham số khởi động như chế độ hiển thị, độ sáng nền và độ tương phản, cấp phát bộ nhớ và gửi các lệnh khởi động để LCD vào trạng thái sẵn sàng, cuối cùng đồng bộ dữ liệu và kiểm tra bằng cách hiển thị các ký tự hoặc hình ảnh thử nghiệm để xác nhận màn hình hoạt động đúng.
- B1: Gửi 38H đến dòng dữ liệu 8 bit để khởi tạo
- B2: Gửi 0FH để bật LCD, con trỏ BẬT và con trỏ nhấp nháy ON.
- B3:Gửi 06H để tăng vị trí con trỏ.
- B4: Gửi 01H để xóa màn hình và trả về con trỏ. Đưa dữ liệu vào LCD
Quy trình gửi dữ liệu đến mô-đun LCD được mô tả ở dưới đây Mô-đun LCD có các chân RS, R / W và E, và trạng thái logic của các chân này quyết định xem đầu vào dữ liệu được gửi là lệnh hay dữ liệu để hiển thị.
- Đặt RS = 0 nếu byte dữ liệu là lệnh và tạo RS = 1 nếu byte dữ liệu là dữ liệu sẽ được hiển thị.
- Đặt byte dữ liệu trên thanh ghi dữ liệu.
- Xung E từ cao xuống thấp.
- Lặp lại các bước trên để gửi dữ liệu khác. d) Ứng dụng
Công nghệ màn hình tinh thể lỏng (LCD) được ứng dụng rộng rãi ngày nay, phổ biến nhất mà người dùng có thể thấy là trên những chiếc smartphone, máy vi tính, laptop hay TV màn hình siêu mỏng; đặc biệt trong lĩnh vực quảng cáo và trình chiếu chuyên dụng, LCD được sử dụng trong sản xuất màn hình quảng cáo chuyên dụng, mang lại hình ảnh sắc nét, màu sắc sống động và hiệu quả truyền thông cao.
Mặc dù các công nghệ màn hình cao cấp như OLED, AMOLED và Super AMOLED đang phát triển mạnh, LCD vẫn giữ vai trò quan trọng nhất trên thị trường nhờ chi phí sản xuất thấp và độ bền tối ưu Vì vậy, LCD tiếp tục là lựa chọn lý tưởng cho người dùng tìm giải pháp kinh tế mà vẫn đảm bảo hiệu suất và tuổi thọ màn hình.
T HẠCH ANH
Trong mạch ta sẽ sử dụng hai thạch anh, một loại 12Mhz để tạo dao động cho AT89C51, một loại 32,768 Mhz để tạo dao động cho DS1307.
Thạch anh 12 Mhz Thạch anh 32,768 Mhz
Đ IỆN TRỞ
Trong thiết bị điện tử, điện trở là một linh kiện quan trọng được làm từ hợp chất cacbon và kim loại Tỷ lệ pha trộn giữa các thành phần quyết định trị số của điện trở, từ đó tạo ra nhiều loại điện trở với các giá trị khác nhau để phù hợp với từng mạch điện Nhờ vậy, điện trở đóng vai trò điều chỉnh dòng điện và ổn định hiệu suất của các thiết kế điện tử.
THIẾT KẾ PHẦN THIẾT BỊ
M ẠCH VI ĐIỀU KHIỂN VÀ MẠCH THỜI GIAN THỰC
Về mạch vi điều khiển, ta thấy:
- Được kích bởi thạch anh 32,768 KHz, các Port D được sử dụng để kết nối LCD.
- Các Port A kết nối với mạch thời gian thực.
Trong mạch thời gian thực, hai chân SDA và SCL được nối lần lượt vào hai chân SDA và SCL của DS1307, đồng thời chung với mặt đất (ground) của mạch và cực âm của pin 3V.
Cổng Slave Song song Đọc / Ghi.
2 REAL TIME CLOCK DS1307 a) Định nghĩa:
Module DS1307 là một trong những module RTC giá cả phải chăng và được sử dụng phổ biến nhất hiện nay Đây là một IC tích hợp dành cho thời gian, có khả năng duy trì thời gian với độ chính xác tuyệt đối và cung cấp đầy đủ các trường thời gian: thứ, ngày, tháng, năm, giờ, phút và giây Với mức giá hợp lý và độ ổn định cao, DS1307 là lựa chọn phổ biến cho các dự án yêu cầu đồng hồ thực tế đáng tin cậy.
DS1307 là một bộ đồng hồ thực thời gian (RTC) do Dallas Semiconductor sản xuất Chip này có 7 thanh ghi 8 bit, mỗi thanh ghi lưu giữ các thành phần thời gian gồm thứ, ngày, tháng, năm, giờ, phút và giây Nó giao tiếp qua giao thức I2C, tiết kiệm điện năng và có khả năng hoạt động với nguồn dự phòng để duy trì thời gian khi nguồn chính bị mất Các tính năng quan trọng khác của DS1307 bao gồm khả năng giữ thời gian với pin dự phòng, khả năng xuất xung SQW/OUT để đồng bộ hệ thống và dễ tích hợp với các vi điều khiển để quản lý thời gian một cách chính xác.
- Khả năng tạo sóng vuông có thể lập trình.
- Dòng điện thấp, dưới 500mA trong chế độ sao lưu pin.
- Khả năng thiết lập ngày đến năm 2100.
- Sử dụng chuẩn giao tiếp I2C.
- Module DS1307 sử dụng pin CR2023 3 volt Bộ nhớ EEPROM 24c32 nhúng trên mô-đun này có thể tiết kiệm 32kb dữ liệu.
- Ngoài ra, các bạn có thể đo nhiệt độ môi trường bằng cách sử dụng cảm biến DS18B20 đã được tích hợp sẵn trên board mạch.
DS1307 là một IC thời gian thực (RTC) có tiêu thụ điện năng thấp, dùng để cập nhật thời gian và ngày tháng đồng thời lưu trữ 56 bytes SRAM Dữ liệu và địa chỉ được truyền nối tiếp qua hai dây bus I2C (hai đường bus hai chiều) Thiết bị cung cấp thông tin về giờ, phút, giây, thứ, ngày, tháng và năm; ngày cuối tháng sẽ tự động được điều chỉnh cho các tháng có ít hơn 31 ngày và có thể nhảy năm Đồng hồ có thể hoạt động ở chế độ 24 giờ hoặc 12 giờ kèm theo chỉ thị AM/PM DS1307 còn được trang bị mạch dò điện áp để phát hiện lỗi nguồn và tự động chuyển đổi với nguồn pin dự phòng, đảm bảo thời gian được duy trì ngay cả khi nguồn chính bị ngắt.
DS1307 hoạt động với vai trò slave trên đường bus nối tiếp I2C Việc truy cập được thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi; tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOP được thi hành DS1307 cho phép đọc và ghi thời gian cùng các dữ liệu liên quan thông qua chu trình START–STOP, giúp quản lý thời gian trên hệ thống nhúng hiệu quả c) Các chân chức năng của DS1307 đóng vai trò quan trọng trong giao tiếp: SDA và SCL cho đường truyền dữ liệu và đồng hồ, cùng với các chân cấp nguồn và GND, đảm bảo vận hành ổn định của toàn bộ hệ thống.
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động cho chip.
- V BAT : cực dương của một nguồn pin 3V nuôi chip.
- GND: chân mass chung cho cả pin 3V và Vcc.
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được).
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output
Driver), tần số của xung được tạo có thể được lập trình Như vậy chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch.
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C mà chúng ta đã tìm hiểu trong bài TWI của AVR.
LCD ( Liquid Crystal Dislay) viết tắt của màn hình tinh thể lỏng Nó là một loại mô-đun màn hình điện tử được sử dụng trong một loạt các ứng dụng như các mạch các thiết bị khác nhau như điện thoại di động, máy tính, tv b) Cấu tạo, chức năng
- Điện áp hoạt động của màn hình LCD này là 4.7V-5.3V Nó bao gồm hai hàng trong đó mỗi hàng có thể tạo ra 16 ký tự.
- Việc sử dụng dòng điện là 1mA không có đèn nền.
- Mọi nhân vật đều có thể được tạo bằng hộp 5 × 8 pixel.
- Bảng chữ cái & số trên màn hình LCD chữ và số.
- Là màn hình có thể hoạt động trên hai chế độ như 4-bit & 8-bit.
- Chúng có thể đạt được với Đèn nền xanh lam & xanh lục.
- Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển.
- Chân số 2 - VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển.
- Chân số 3 - VE : điều chỉnh độ tương phản của LCD.
Chân số 4 (RS) trên LCD là chân chọn thanh ghi, được nối với mức logic 0 hoặc 1 để xác định chế độ hoạt động Khi RS ở mức 0, bus DB0-DB7 sẽ kết nối với thanh ghi lệnh (IR) của LCD ở chế độ ghi hoặc với bộ đếm địa chỉ của LCD ở chế độ đọc.
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
- Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi hoặc nối với logic “1” đọc.
Chân số 6 - E (Enable) là chân cho phép trên giao tiếp LCD Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có một xung Enable trên chân E Trong chế độ ghi, dữ liệu trên bus sẽ được LCD chuyển vào thanh ghi nội bộ ngay khi phát hiện một xung chuyển từ mức cao xuống thấp (high-to-low transition) của tín hiệu chân E.
Ở chế độ đọc, LCD sẽ xuất dữ liệu trên DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E, và dữ liệu này được LCD giữ trên bus cho đến khi chân E xuống mức thấp.
Chân số 7 đến 14 - D0 đến D7 là 8 đường của bus dữ liệu dùng để trao đổi thông tin với MPU Có 2 chế độ sử dụng 8 đường bus này là: Chế độ 8 bit, dữ liệu được truyền trên cả 8 đường với bit MSB là bit DB7; và Chế độ 4 bit, dữ liệu được truyền trên 4 đường dữ liệu (thường là DB7 đến DB4), cho phép truyền nhận dữ liệu ở mức nibble.
4 đường từ DB4 tới DB7, bit MSB là DB7).
- Chân số 15 - A : nguồn dương cho đèn nền.
- Chân số 16 - K : nguồn âm cho đèn nền. c) Nguyên lý hoạt động
Mô-đun LCD 16x2 được điều khiển bằng một bộ lệnh đặt trước, mỗi lệnh đảm nhận một nhiệm vụ cụ thể để điều khiển hiển thị trên màn hình Các lệnh phổ biến giúp thiết lập chế độ hiển thị, định vị con trỏ, xóa màn hình và quản lý trạng thái hiển thị, trong khi bảng hướng dẫn ở phần sau liệt kê chi tiết chức năng của từng lệnh này.
0F LCD bật, con trỏ bật, con trỏ nhấp nháy bật
2 Quay về màn hình chính
0E Màn hình bật, con trỏ nhấp nháy tắt
80 Bật con trỏ trở về vị trí đầu tiên của hàng 1
C0 Bắt con trỏ trở về vị trí đầu tiên của hàng 2
38 S ử d ụ ng 2 hàng và ma tr ậ n 5x7
83 Con trỏ hàng 1 vị trí 3
8 Tắt màn hình hiển thị và con trỏ
C1 Nhảy đến dòng 2 vị trí 1
OC B ậ t màn hình hi ể n th ị , t ắ t con tr ỏ
C2 Nhảy đến hàng 2, vị trí 2
Các bước cần thiết để khởi tạo màn hình LCD được trình bày dưới đây và chúng phổ biến cho hầu hết các ứng dụng Quá trình khởi động bắt đầu bằng kiểm tra nguồn và các kết nối để đảm bảo cấp điện ổn định, tiếp đến thiết lập giao tiếp giữa LCD và vi điều khiển (ví dụ SPI hoặc I2C), sau đó cấu hình các tham số khởi động như chế độ hiển thị, độ sáng và độ tương phản Tiếp theo là gửi chu kỳ lệnh khởi động và xác nhận trạng thái hoạt động của màn hình, đồng thời kiểm tra lại màn hình để phát hiện các lỗi có thể phát sinh Việc làm đúng theo trình tự các bước khởi tạo LCD sẽ giúp đảm bảo màn hình hoạt động ổn định, tối ưu hiệu suất và giảm thiểu lỗi trong quá trình vận hành Bài viết sẽ đi qua từng bước một cách chi tiết và cung cấp lưu ý về an toàn nguồn cũng như cách xử lý các lỗi phổ biến.
- B1: Gửi 38H đến dòng dữ liệu 8 bit để khởi tạo
- B2: Gửi 0FH để bật LCD, con trỏ BẬT và con trỏ nhấp nháy ON.
- B3:Gửi 06H để tăng vị trí con trỏ.
- B4: Gửi 01H để xóa màn hình và trả về con trỏ. Đưa dữ liệu vào LCD
Để gửi dữ liệu tới mô-đun LCD, người dùng điều khiển ba chân chính là RS, R/W và E Mô-đun LCD quyết định xem nội dung nhận được là lệnh hay dữ liệu hiển thị dựa trên trạng thái logic của các chân này: RS chỉ định loại nội dung (lệnh khi RS = 0, dữ liệu khi RS = 1), R/W thiết lập chế độ ghi dữ liệu (thường ghi với R/W = 0), và E được kích hoạt để truyền dữ liệu từ bus vào LCD khi các tín hiệu đã ổn định Các bước này cho phép bạn gửi đúng lệnh và dữ liệu hiển thị lên màn hình theo yêu cầu.
- Đặt RS = 0 nếu byte dữ liệu là lệnh và tạo RS = 1 nếu byte dữ liệu là dữ liệu sẽ được hiển thị.
- Đặt byte dữ liệu trên thanh ghi dữ liệu.
- Xung E từ cao xuống thấp.
- Lặp lại các bước trên để gửi dữ liệu khác. d) Ứng dụng