Trong hướng dẫn này, chúng ta sẽ tạo Đồng hồ kỹ thuật số bằng cách kết nối mô-đun RTC DS3231 với MSP430 và hiển thị ngày giờ trên màn hình LCD 16x2. MSP-EXP430G2 là Công cụ phát triển hay còn gọi là LaunchPad được cung cấp bởi Texas Instruments để học và thực hành cách sử dụng Bộ vi điều khiển của họ. Bo mạch này thuộc danh mục Dòng giá trị MSP430 nơi chúng tôi có thể lập trình tất cả các Bộ vi điều khiển dòng MSP430. Nếu bạn chưa quen với MSP thì hãy xem hướng dẫn bắt đầu với MSP430 của chúng tôi.
Vật liệu thiết yếu:
- MSP430
- Mô-đun RTC DS3231
- POT -10k
- Mô-đun LCD 16 * 2
- Kết nối dây
- Breadboard
RTC là gì ??
DS3231 là một mô-đun RTC (Đồng hồ thời gian thực). Nó được sử dụng để duy trì ngày và giờ cho hầu hết các dự án Điện tử. Mô-đun này có nguồn điện di động đồng xu của riêng nó, sử dụng nó để duy trì ngày và giờ ngay cả khi nguồn điện chính bị ngắt hoặc MCU đã trải qua quá trình khôi phục cài đặt gốc. Vì vậy, một khi chúng tôi đặt ngày và giờ trong mô-đun này, nó sẽ luôn theo dõi. Có một số loại IC RTC có sẵn như DS1307, DS3231, v.v.
Trước đây chúng tôi đã sử dụng RTC với các bộ vi điều khiển khác trong các dự án dưới đây:
Lưu ý: Khi sử dụng mô-đun này lần đầu tiên, bạn phải đặt ngày và giờ. Bạn cũng có thể sử dụng IC RTC DS1307, trước đây chúng tôi đã sử dụng DS1307 với Arduino.
Kết nối DS3231 RTC với MSP430:
Sơ đồ mạch cho Đồng hồ kỹ thuật số dựa trên vi điều khiển MSP430 được đưa ra dưới đây. Như đã nói trước đó, DS3231 hoạt động với sự trợ giúp của giao tiếp I2C vì vậy nó sẽ có Đồng hồ nối tiếp (SCL) và chân Dữ liệu nối tiếp (SDA) phải được kết nối với chân I2C trên MSP430 của chúng tôi là chân 9 (PIN 2.1, SCL) và chân 10 (PIN 2.2, SDA).
MSP430 cung cấp 3.3V Vcc nhưng chúng tôi cần 5V để kết nối nó với LCD và mô-đun RTC. Vì vậy, chúng tôi sẽ sử dụng một bản hack, có sẵn một jumper có tên là TP1 gần đầu nối cáp USB. Bạn có thể lấy 5V từ đó.
Sơ đồ mạch:
Lập trình MSP430 cho Mô-đun RTC:
Ở đây chúng tôi đang sử dụng Energia IDE để lập trình. Nó giống như Arduino IDE và dễ sử dụng. Nếu bạn chưa quen với MSP và năng lượng, thì hãy bắt đầu với MSP bằng Energia IDE. Để giao diện mô-đun RTC, chúng tôi cần thư viện cho bảng này. Tải xuống thư viện RTC từ liên kết này và cài đặt nó.
Chúng tôi cũng cần thư viện Wire (được sử dụng cho giao tiếp I2C) và thư viện tinh thể lỏng được cài đặt sẵn trong Energia IDE.
Mã hoàn chỉnh cho đồng hồ kỹ thuật số MSP430 này được đưa ra ở cuối bài viết này. Mã đơn giản và dễ hiểu. Ở đây chúng tôi đang giải thích một vài phần của nó.
Đầu tiên, chúng ta phải bao gồm các thư viện cần thiết.
Thư viện bên dưới dành cho giao tiếp I2C giữa mô-đun RTC và MSP430. Các chân SDA và SCK đã được định nghĩa trong thư viện này, vì vậy chúng ta không cần phải khai báo các chân này một cách riêng biệt.
#include
Sau đó, chúng tôi đã bao gồm thư viện RTClib.h cho đồng hồ RTC và LiquidCrystal.h cho các chức năng LCD.
#include "RTClib.h" #include
Sau đó, chúng ta phải tạo một thể hiện để khởi tạo mô-đun RTC của chúng ta.
RTC_DS3231 rtc;
Sau đó, tạo một mảng có kích thước 7 và lưu trữ tất cả bảy ngày với tên trong đó.
char daysOfTheWeek = {"Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"};
Đây là khai báo Pins của MSP430 sẽ được sử dụng bởi màn hình LCD: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
Màn hình LCD LiquidCrystal (8, 6, 7,11,12,13);
Trong void setup () , chúng tôi đã khởi tạo giao diện cho màn hình LCD và RTC và chỉ định kích thước (chiều rộng và chiều cao) của màn hình, begin ()
cần được gọi trước bất kỳ lệnh thư viện nào khác.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("Đồng hồ RTC"); chậm trễ (3000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Bây giờ, Thời gian hiển thị trên màn hình là chính xác nhưng có một vấn đề, mỗi khi bạn khởi động lại / đặt lại bộ vi điều khiển, màn hình LCD sẽ hiển thị Thời gian mà bạn đã tải mã lên. Điều này là do hàm rtc.adjust () đã lưu trữ thời gian của máy tính của bạn, vì vậy khi bạn đặt lại, nó sẽ bắt đầu với thời gian đó.
Để khắc phục sự cố này, trước tiên hãy tải lên chương trình có chức năng rtc.adjust () không được ghi chú. Sau đó, ngay lập tức bình luận cùng một dòng và tải lên chương trình một lần nữa. Bây giờ, ngày và giờ của bạn đã được đặt và sẽ không bị ảnh hưởng bởi việc đặt lại bộ vi điều khiển.
Trong hàm vòng lặp, chúng tôi lấy ngày và giờ từ mô-đun RTC và lưu trữ trong biến xác định trước được gọi là now và hiển thị nó trên màn hình LCD bằng cách sử dụng hàm lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Mã hoàn chỉnh và Video được cung cấp bên dưới.