- 16x2英数字LCDディスプレイ
- MSP430用の16x2LCDCCSライブラリ
- MSP430の16x2LCDディスプレイのLCD機能
- LCDをMSP430とインターフェースするための回路図
- LCDディスプレイ用のCodeComposerStudioを使用したMSP430のプログラミング
この記事は、Code ComposerStudioを使用したMSP430のプログラミングに関するチュートリアルシリーズの続きです。最後のチュートリアルは 、GPIOピンを使用したMSP430の外部割り込みに基づいていました 。このチュートリアルでは、についてです MSP430とディスプレイをインタフェースすることが表示するようになると、 16 * 2液晶ディスプレイを、 それはあらゆる電子愛好家のための最初の選択肢です。以前は、Arduino IDEを使用してLCDとMSP430をインターフェースしていましたが、このチュートリアルでは、Arduino IDEを使用する代わりに、ネイティブのCode Composerスタジオプラットフォームを使用します。これにより、デザイナーとしての柔軟性が向上します。
16x2 LCDディスプレイと他のマイクロコントローラーでの使用の詳細については、以下のチュートリアルを参照してください。
- LCDとATmega16のインターフェース
- LCDとRaspberryPiのインターフェース
- LCDとPICマイクロコントローラーのインターフェース
- LCDとARM7-LPC2148のインターフェース
- LCDとNodeMCUのインターフェース
- LCDとSTM32のインターフェース
- LCDとMSP430G2のインターフェース
- LCDとSTM8のインターフェース
渡されたコマンドとデータを保存できるIChd44780が組み込まれています。LCDモジュールには約16ピンがあります。8本はデータピン、4本はバックライトLEDとLCDモジュール全体の電源ピン、3本は動作制御用、1本はコントラスト調整用です。このチュートリアルは、DennisEichmannによって作成されたライブラリに基づいています。個別の関数を備えたライブラリを使用して、さまざまなデータ型を印刷するのは非常に簡単です。また、先頭、空白、および削除されたゼロを使用して、さまざまな形式でデータを表示するためのプロビジョニングもあります。これは非常に拡張性が高く包括的なライブラリであり、さまざまな接続に合わせて構成できます。ここで、ヘッダーファイルは、データ通信用の8ピン並列構成に対応するように変更されています。
16x2英数字LCDディスプレイ
一般的な16x2ディスプレイにはhd44780IC(下の赤丸で囲んだ部分)が組み込まれ ており、 渡されたコマンドとデータを保存できます。LCDモジュールには約16ピンがあります。8本はデータピン、4本はバックライトLEDとLCDモジュール全体の電源ピン、3本は動作制御用、1本はコントラスト調整用です。
このLCDモジュールは、用途が広く、他のセグメント化されたLCDと比較して最小限のピンを使用しています。これらすべてがどのように正確に機能するかを知りたい場合は、LCDがどのように機能するかについてすでに詳しく説明した16x2LCDディスプレイの機能を確認する必要があります。
RSピン: RS = 1 は、LCDのデータレジスタを有効にします。これは、LCDのデータレジスタに値を書き込むために使用されます。 RS = 0 は、LCDの命令レジスタを有効にします。
イネーブルピン: ネガティブエッジトリガー。ピンがHIGH状態からLOW状態に変わると、LCDはデータピンへの書き込みを要求されます。ポジティブエッジトリガー; ピンがLOW状態からHIGH状態に変わると、LCDはデータピンから読み取るように求められます。
R / Wピン: R / W = 0 は、RSピンの選択に従って命令レジスタまたはデータレジスタに書き込みます。 R / W = 1 は、RSピンの選択に従ってIRまたはDRから読み取ります。
RS R / W操作
0 0内部操作としてのIR書き込み(表示クリアなど)
0 1ビジーフラグ(DB7)とアドレスカウンタ(DB0〜DB6)の読み取り
1 0内部操作としてのDR書き込み(DRからDDRAMまたはCGRAM)
1 1 DRは内部操作として読み取られます(DDRAMまたはCGRAMからDR)
D0〜D7ピン: データは、これらのピンを介してコマンドレジスタおよびデータレジスタとの間で転送されます。
供給ピン: V ss、V dd ピンは、LCDモジュールに電力を供給するために使用されます。A、KピンはLEDバックライトに電力を供給します。V 0 ピンは、コントラストを制御するために使用されます。
MSP430用の16x2LCDCCSライブラリ
このチュートリアルは、DennisEichmannによって作成されたライブラリに基づいています。個別の関数を備えたライブラリを使用して、さまざまなデータ型を印刷するのは非常に簡単です。また、先頭、空白、および削除されたゼロを使用して、さまざまな形式でデータを表示するためのプロビジョニングもあります。これは非常に拡張性が高く包括的なライブラリであり、さまざまな接続に合わせて構成できます。ここで、ヘッダーファイルは、データ通信用の8ピン並列構成に対応するように変更されています。ライブラリは以下のリンクからダウンロードできます。ダウンロード後、以下の手順に従ってライブラリをCCSに追加します。
MSP430用の16x2ライブラリをダウンロード– Code Composer Studio
ステップ1:ファイルとプロジェクトを作成する
デフォルトのCCSプロジェクトは、ファイルメニューを使用して作成されます。[プロジェクトの作成]ダイアログボックスで、デバイスを選択し、プロジェクト名としてhd44780を指定します。[プロジェクトの種類とツールチェーン]で、出力の種類を静的ライブラリとして選択し、プロジェクトを作成します。
プロジェクトエクスプローラーレーン(左側)で、インクルードフォルダー内にヘッダーファイルを作成し、 hd44780.h という名前を 付け ます。次に、ダウンロードした hd44780.hファイルの 内容 をこの新しく作成した ファイル にコピーし ます 。
次に、出力タイプを実行可能ファイルに変更してメインプロジェクトを作成し、 CCS_LCD という名前のプロジェクトを作成します 。
ステップ2:メインプロジェクトへの検索パスを含める
hd44780プロジェクトのプロパティダイアログボックスとMSP430コンパイラのインクルードオプション内で、ファイル内のインクルードフォルダを検索パスに追加します。
次に、 このプロジェクト をビルドして、 .libファイル などの必要なリンカーファイルを作成し ます 。これをビルドすると 、デバッグフォルダ内に hd44780.lib ファイルが作成され ます。
ステップ3:リンカーの検索パスを含める
プロパティ]ダイアログボックスで CCS_LCDの プロジェクトとMSP430リンカ]タブの[ファイルの検索パスに含ま hd44780.lib 内に位置し 、デバッグフォルダ HD44780プロジェクトのを。デバッグフォルダもファイル検索パスに含まれています。
インクルードフォルダは、 CCS_LCD プロジェクトのMSP430コンパイラのインクルードオプションに再び追加されます 。
ライブラリは正常にコンパイルされ、メインプロジェクトのリンカーに追加されます。
MSP430の16x2LCDディスプレイのLCD機能
void hd44780_timer_isr(void): これはタイマーAのISRで定期的に呼び出されます。タイマーAは、画面のクリア、カーソルの設定、データの表示などのLCD機能を定期的に実行するために使用されます。この関数はISRで使用されます。何も返しません。
uint8_t hd44780_write_string(char * ch__string、uint8_t u8__row、uint8_t u8__column、uint8_t u8__cr_lf): 最初の引数で指定された文字列を書き込みます。
char * ch__string: データバッファ(hd44780_timer_isr 関数内)に書き込まれる文字列 。 hd44780_timer_isr が定期的に呼び出されると、 データ は LCDIC のデータレジスタと命令レジスタにコピーさ れます。
uint8_t u8__row: 文字列が書き込まれる行を定義します。
uint8_t u8__column: 文字列が書き込まれる列を定義します。
uint8_t u8__cr_lf: 1に設定されている場合、その行は次の行に引き継がれます。0の場合、同じ行で印刷が停止します。
void hd44780_clear_screen(void): この関数は画面全体をクリアします。何も返しません。
uint8_t hd44780_output_unsigned_16bit_value(uint16_t u16__value、uint8_t u8__leading_zero_handling、uint8_t u8__row、uint8_t u8__column、uint8_t u8__cr_lf): この関数は、LCDの符号なし16ビット値を表示します。
uint16_t u16__value: 表示される整数は最初の引数で指定されます。
uint8_t u8__leading_zero_handling: 0が渡されると、先行ゼロが表示され、整数値が表示されます。1が渡されると、ゼロは空白になります。2をパラメーターとして渡すと、有効数字のみが表示されます。
uint8_t u8__row: 整数が表示されている行が選択されています。
uint8_t u8__column:出力 する列は引数を使用して選択されます。
uint8_t u8__cr_lf: 1に設定されている場合、その行は次の行に引き継がれます。0の場合、同じ行で印刷が停止します。
LCDをMSP430とインターフェースするための回路図
完全な回路図を下の画像に示します。ご覧のとおり、ハードウェア接続は非常にシンプルで、5Vアダプターを使用してボード全体に電力を供給しています。
上記のスケッチに従って接続が行われます。詳細な接続については、以下の表をご覧ください。
対 | 5V電源のアース |
Vdd | 5V |
V0 | ポテンショメータ出力 |
RS | P2.1 |
R / W | 接地 |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
A | 220オーム抵抗器 |
K | 接地 |
LEDバックライトのアノードを5V電源に直接接続することはできません。LCDモジュールを流れる電流を最小限に抑えるために、抵抗に接続する必要があります。パフォーマンスボードを使用してLCDをはんだ付けし、ジャンパー線を使用してLCDをMSP430ボードに接続しました。セットアップは次のようになりますが、ブレッドボードを使用して接続することもできます。
LCDディスプレイ用のCodeComposerStudioを使用したMSP430のプログラミング
このプロジェクトで使用される完全なコードは、このページの下部にあります。コードの使用方法は以下のとおりです。まず、ヘッダーファイル(hd44780.h)を開き、ファイルの最初の部分にマイクロコントローラーの部品番号を含めます。
#include "msp430g2553.h"
ウォッチドッグタイマーを最初に停止する必要があります。 DCOCTLおよびBCSCTL1 制御レジスタは、マイクロコントローラの発振器を構成するために使用されます。以下の行は、MCLKを1MHZに設定します 。
WDTCTL =(WDTPW-WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
ポート1ピンは、データピンに使用される出力として言及する必要があります。ピン0とピン1は、ポート2の出力としても言及する必要があり、RSピンとR / Wピンに使用されます。
P1DIR = 0xFF; P2DIR =(0x01-0x02);
内蔵タイマーは、値を定期的に表示するために使用されています。タイマーAは、クロックソースとしてSMCLK(1MHZ)を使用し、動作モードを連続モードとして選択されます。
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL =(TASSEL_2-MC_2-TACLR);
比較チャネル1と2の割り込みとタイマーオーバーフロー割り込みは、異なる開始アドレスを持つ同じ割り込みベクトル( TIMER0_A1_VECTOR )を共有します。キャプチャ比較チャネル1(CCR1) は 、スイッチケースで使用されているアドレスとして2を使用します。
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr(void) { switch(TA0IV) { case 2: { hd44780_timer_isr(); ブレーク; } } }
コードをコンパイルしたら、MSP430チュートリアルの開始で説明したように、コードをMSP430ボードにアップロードできます。すべてが期待どおりに進んだ場合、以下に示すようにLCDディスプレイにコントラストが表示されるはずです。
テストが非常に暗い場合は、ポテンショメータを調整してコントラストを向上させることができます。プロジェクトの完全な作業は、以下にリンクされているビデオでも見ることができます。あなたがプロジェクトを楽しんで、あなた自身のものを作るのが面白いと思ったことを願っています。ご不明な点がございましたら、下のコメント欄にご記入ください。また、フォーラムにすべての技術的な質問を書き込んで、回答を得たり、ディスカッションを開始したりすることもできます。