このチュートリアルでは、RTCモジュールDS3231をMSP430に接続してデジタル時計を作成し、16x2LCDに時刻と日付を表示します。MSP-EXP430G2は、Texas Instrumentsが提供するLaunchPadとも呼ばれる開発ツールであり、マイクロコントローラーの使用方法を学習および実践します。このボードは、すべてのMSP430シリーズマイクロコントローラーをプログラムできるMSP430バリューラインカテゴリに分類されます。MSPを初めて使用する場合は、MSP430チュートリアルの開始を確認してください。
必要な材料:
- MSP430
- DS3231RTCモジュール
- ポット-10k
- LCDモジュール16 * 2
- 接続線
- ブレッドボード
RTCとは??
DS3231はRTC (リアルタイムクロック)モジュールです。これは、ほとんどのエレクトロニクスプロジェクトの日付と時刻を維持するために使用されます。このモジュールには独自のコイン型電源があり、主電源が切断された場合やMCUがハードリセットされた場合でも日付と時刻を維持します。したがって、このモジュールで日付と時刻を設定すると、常にそれを追跡します。DS1307、DS3231などのRTCICにはいくつかの種類があります。
以前 、以下のプロジェクトで他のマイクロコントローラーとともにRTCを使用し ました。
注: このモジュールを初めて使用するときは、日付と時刻を設定する必要があります。RTC IC DS1307を使用することもできます。これまで、ArduinoでDS1307を使用していました。
DS3231 RTCとMSP430の接続:
MSP430マイクロコントローラベースのデジタル時計の 回路図を以下に示します。前に述べたように、DS3231はI2C通信の助けを借りて動作するため、シリアルクロック(SCL)とシリアルデータ(SDA)ピンがあり、MSP430のピン9(PIN 2.1)のI2Cピンに接続する必要があります。 、SCL)およびピン10(PIN 2.2、SDA)。
MSP430は3.3VVccを提供しますが、LCDおよびRTCモジュールと接続するには5Vが必要です。したがって、ハックを使用します。USBケーブルコネクタの近くにTP1という名前のジャンパーがあります。そこから5Vを取ることができます。
回路図:
RTCモジュール用のMSP430のプログラミング:
ここでは、プログラミングにEnergiaIDEを使用しています。Arduino IDEと同じで、使いやすいです。MSPとenergiaを初めて使用する場合は、EnergiaIDEを使用してMSPの使用を開始してください。RTCモジュールをインターフェースするには、このボード用のライブラリが必要です。このリンクからRTCライブラリをダウンロードしてインストールします。
また、Energia IDEにプリインストールされている Wire (I2C通信に使用)と 液晶 ライブラリも必要です。
このMSP430デジタル時計の完全なコードは、この記事の最後に記載されています。コードはシンプルで簡単に理解できます。ここでは、そのいくつかの部分について説明します。
まず、必要なライブラリを含める必要があります。
以下のライブラリは、RTCモジュールとMSP430間のI2C通信用です。SDAピンとSCKピンはこのライブラリですでに定義されているため、これらのピンを個別に宣言する必要はありません。
#include
次に、RTCクロック用の RTClib.h ライブラリとLCD機能用の LiquidCrystal.h を 含め ました。
#include "RTClib.h" #include
この後、RTCモジュールを初期化するためのインスタンスを作成する必要があります。
RTC_DS3231 rtc;
次に、サイズ7の配列を作成し、名前を入れて7日間すべて保存します。
char daysOfTheWeek = {"Sunday"、 "Monday"、 "Tuesday"、 "Wednesday"、 "Thursday"、 "Friday"、 "Saturday"};
LCDディスプレイで使用される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);
で 無効設定() 、 私たちは、LCD画面とRTCへのインターフェイスを初期化すると、ディスプレイの大きさ(幅と高さ)を指定した 開始()
他のライブラリのコマンドの前に呼び出される必要があります。
void setup(){ lcd.begin(16、2); lcd.setCursor(3,0); lcd.print( "RTCクロック"); delay(3000); lcd.clear(); rtc.begin(); // rtc.adjust(DateTime(F(__ DATE __)、F(__ TIME__))); }
これで、ディスプレイに表示される時刻は正しいですが、問題があります。マイクロコントローラーを再起動/リセットするたびに、LCDにコードをアップロードした時刻が表示されます。これは、 rtc.adjust() 関数がコンピューターの時刻を保存しているため、リセットすると、その時刻から開始されるためです。
この問題を修正するには、最初に rtc.adjust() 関数のコメントを 外し てプログラムをアップロードします。次に、すぐに同じ行にコメントを付けて、プログラムを再度アップロードします。これで、日付と時刻が設定され、マイクロコントローラーをリセットしても影響を受けません。
内 ループ 機能我々は、呼び出された事前定義された変数にRTCモジュールとストアから日付と時間がかかり 、今 そして使用LCD上に表示 lcd.print() 関数。
void loop(){ DateTime now = rtc.now(); lcd.clear(); lcd.setCursor(3,0); lcd.print(now.day()、DEC); lcd.print( "/");…。 ……。
完全なコードとビデオを以下に示します。