在本教程中,我們將通過RTC模塊DS3231與MSP430連接來制作數(shù)字時(shí)鐘,并在16x2 LCD上顯示時(shí)間和日期。MSP-EXP430G2 是德州儀器提供的開發(fā)工具,又名 LaunchPad,用于學(xué)習(xí)和練習(xí)如何使用其微控制器。該板屬于 MSP430 超值系列類別,我們可以在其中對所有 MSP430 系列微控制器進(jìn)行編程。
所需材料:
MSP430
DS3231 RTC 模塊
鍋 -10k
液晶模塊 16*2
連接線
面包板
什么是 RTC??
DS3231是RTC(實(shí)時(shí)時(shí)鐘)模塊。它用于維護(hù)大多數(shù)電子項(xiàng)目的日期和時(shí)間。該模塊有自己的紐扣電池電源,即使主電源被移除或MCU經(jīng)過硬復(fù)位,它也能保持日期和時(shí)間。因此,一旦我們在此模塊中設(shè)置了日期和時(shí)間,它將始終跟蹤它。RTC IC有幾種類型可供選擇,如DS1307、DS3231等。
將DS3231 RTC與MSP430連接:
下面給出了基于MSP430微控制器的數(shù)字時(shí)鐘的電路圖。如前所述,DS3231在I2C通信的幫助下工作,因此它將有一個(gè)串行時(shí)鐘(SCL)和一個(gè)串行數(shù)據(jù)(SDA)引腳,必須連接到MSP430上的I2C引腳,即引腳9(引腳2.1,SCL)和引腳10(引腳2.2,SDA)。
MSP430 提供 3.3V Vcc,但我們需要 5V 才能將其與 LCD 和 RTC 模塊連接。因此,我們將使用一個(gè)技巧,在USB電纜連接器附近有一個(gè)名為TP1的跳線可用。您可以從那里獲取 5V。
電路圖:
用于 RTC 模塊的 MSP430 編程:
在這里,我們使用Energia IDE進(jìn)行編程。它與Arduino IDE相同,易于使用。如果您不熟悉MSP和energia,請使用Energia IDE開始使用MSP。為了連接RTC模塊,我們需要該板的庫。從此鏈接下載 RTC 庫并安裝它。
我們還需要預(yù)裝在Energia IDE中的Wire(用于I2C通信)和液晶庫。
本文末尾給出了此 MSP430 數(shù)字時(shí)鐘的完整代碼。代碼簡單易懂。在這里,我們將解釋其中的幾個(gè)部分。
首先,我們必須包含必要的庫。
以下庫用于 RTC 模塊和 MSP430 之間的 I2C 通信。SDA 和 SCK 引腳已在此庫中定義,因此我們不必單獨(dú)聲明這些引腳。
#include
然后,我們包括用于RTC時(shí)鐘的RTClib.h庫和用于LCD功能的LiquidCrystal.h。
#include "RTClib.h"
#include
在此之后,我們必須創(chuàng)建一個(gè)實(shí)例來初始化我們的 RTC 模塊。
RTC_DS3231 rtc;
然后制作一個(gè)大小為 7 的數(shù)組,并存儲所有七天的名稱。
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
以下是液晶顯示器使用的MSP430的引腳聲明:(RS(P2.0),EN(P1.4),D4(P1.5),D5(P2.3),D6(P2.4),D7(P2.5))
LiquidCrystal lcd(8 ,6, 7,11,12,13);
在void setup()中,我們已經(jīng)初始化了LCD屏幕和RTC的接口,并指定了顯示器的尺寸(寬度和高度),begin()需要在任何其他庫命令之前調(diào)用。
void setup () {
lcd.begin(16, 2);
lcd.setCursor(3,0);
lcd.print("RTC Clock");
delay(3000);
lcd.clear();
rtc.begin();
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
注意:在上述函數(shù)中,注釋行很重要。如果未設(shè)置時(shí)間和日期,請取消注釋該行并上傳程序。此函數(shù)存儲編譯時(shí)計(jì)算機(jī)的時(shí)間,因此請確保計(jì)算機(jī)的時(shí)間正確。
現(xiàn)在,顯示的時(shí)間是正確的,但存在一個(gè)問題,每次重新啟動(dòng)/重置微控制器時(shí),LCD都會顯示您上傳代碼的時(shí)間。這是因?yàn)?rtc.adjust() 函數(shù)已經(jīng)存儲了您計(jì)算機(jī)的時(shí)間,因此當(dāng)您重置時(shí),它會從該時(shí)間開始。
要解決此問題,請先上傳帶有 rtc.adjust() 函數(shù)未注釋的程序。然后,立即評論同一行并再次上傳程序。現(xiàn)在,您的日期和時(shí)間已設(shè)置,不會受到重置微控制器的影響。
在循環(huán)函數(shù)中,我們從RTC模塊中獲取日期和時(shí)間,并存儲在現(xiàn)在調(diào)用的預(yù)定義變量中,并使用lcd.print()函數(shù)將其顯示在LCD上。
void loop () {
DateTime now = rtc.now();
lcd.clear();
lcd.setCursor(3,0);
lcd.print(now.day(), DEC);
lcd.print("/");….
-
msp430
+關(guān)注
關(guān)注
181文章
2406瀏覽量
230941 -
DS3231
+關(guān)注
關(guān)注
2文章
51瀏覽量
24084 -
數(shù)字時(shí)鐘
+關(guān)注
關(guān)注
2文章
153瀏覽量
20833
發(fā)布評論請先 登錄
如何利用DS3231構(gòu)建一個(gè)基于Atmega16的數(shù)字掛鐘

基于DS3231的高精度時(shí)鐘接口設(shè)計(jì)
實(shí)時(shí)時(shí)鐘芯片DS3231應(yīng)用筆記,使用指南,F(xiàn)AQ全集
DS3231時(shí)鐘星期不對
DS3231時(shí)鐘芯片結(jié)構(gòu)
DS3231時(shí)鐘芯片讀寫程序分享
如何將DS3231 RTC模塊與NodeMCU連接
DS3231高精度I2C實(shí)時(shí)時(shí)鐘(RTC)

DS3231 AT24C32 高精度時(shí)鐘模塊 IIC模塊 存儲模
ds3231時(shí)鐘模塊怎么用_DS3231的操作與使用

nodemcu引腳_了解DS3231 RTC模塊與NodeMCU的接口

基于DS3231時(shí)鐘模塊的stm32 程序,源碼

IIC實(shí)時(shí)時(shí)鐘模塊DS3231 EEPROM開源

采用DS3231實(shí)時(shí)時(shí)鐘模塊制作的LCD時(shí)鐘

評論