電子プロジェクトで使用されるLCDには多くの種類があります。私たちはすでに多くのプロジェクトで16X2LCDを使用しており、ArduinoでTFTLCDも使用しています。このリンクをたどると、8051、AVR、Arduino などとのインターフェースを含む16X2LCD関連プロジェクト全体を見つけることができます 。
ST9720グラフィカルLCDは、普通の液晶ディスプレイとは全く異なるものです。通常のLCDは、固定サイズ内の単純なテキストまたは数字のみを印刷できます。ただし、グラフィカルLCDには、8192ドットまたは8192/8 = 1024ピクセルに等しい128 * 64があるため、文字を除いて、このGLCDに任意のグラフィカルイメージを表示できます。
すでにGLCDを8051とインターフェースしましたが、今日はグラフィカルLCDとArduinoをインターフェースして、テキストと画像を表示します。
必要な材料
- Arduino UNO
- 128 * 64グラフィカルLCDST9720
- ポテンショメータ-10k
- 接続線
- ブレッドボード
回路図
128 * 64グラフィックLCD
このグラフィカルLCDは低消費電力であり、バッテリー電源のポータブルデバイスにも適しています。動作電圧範囲は2.2v〜5.5vと広く、シリアル通信と8/4ビットパラレル通信の両方をサポートし、ST7290LCDコントローラー/ドライバーICが付属しています。インターフェイス通信モードは、PSB PIN 15を使用してパラレルとシリアルの間で切り替えることができます。このグラフィカルLCDには、自動電源オンリセット機能があり、8051、AVR、ARM、Arduino、RaspberryPiなどのMCUで簡単に制御できます。
ST7290 128 * 64グラフィカルLCDの詳細については、データシートを参照してください。
ピン配置
ピン番号 |
ピン名 |
説明 |
1 |
Gnd |
アース端子 |
2 |
Vcc |
入力電源電圧(2.7v〜5.5v) |
3 |
Vo |
LCDコントラスト |
4 |
RS |
レジスタ選択 RS = 0:命令レジスタ RS = 1:データレジスタ |
5 |
R / W |
読み取り/書き込み制御 |
6 |
E |
有効にする |
7,8,9,10,11,12,13,14 |
DB0、DB1、DB2、DB3、DB4、DB5、DB6、DB7 |
データピン(並列8/4ビット通信モードで使用) |
15 |
PSB |
インターフェースの選択: シリアル通信モードの場合はLow(0) 8/4ビットパラレルバスモードの場合はHigh(1)。 |
16 |
NC |
接続されていません |
17 |
RST |
ピンをリセット |
18 |
Vout |
LCD電圧ダブラ出力。VOUT≤7V。 |
19 |
BLA |
バックライト正電源 |
20 |
BLK |
バックライト負の供給 |
アプリケーション
- 産業用装置
- 組み込みシステム
- セキュリティ
- 医療
- ハンドヘルド機器
画像を16進コードに変換する:
グラフィカルLCDに画像を表示するには、その画像のHEXコードが必要なので、画像をHEXコードに変換する手順をいくつか示します。その前に、画像のサイズが128 * 64を超えないようにする必要があります。
ステップ-1:通常の画像のサイズを128 * 64以下に縮小します。これは、MSペイントなどの任意の画像編集ソフトウェアを使用して実行できます。
上の写真に示すように、画像の幅と高さを128 * 64に設定しています。
ステップ2:次に、あなたが「イメージ名で画像を保存する必要があります.BMP」形式。
上の画像に示されている形式を選択し、さらに処理するためにファイルを保存します。
ステップ-3:「。bmp」形式で保存した後、画像を印刷用の16進コードに変換する必要があります。このために、Bmpファイルを16進コードに変換するGIMP2という名前のソフトウェアを使用しています。
上の画像に示すように、GIMP2ソフトウェアで「.bmp」形式のファイルを開きました。
ステップ-4:ソフトウェアをダウンロードした後、印刷するBMP形式の画像ファイルを開き、「。 xbm 」(Xビットマップ)形式で 保存し ます。保存後、メモ帳を使用してそのファイルを開くと、画像の16進コードが表示されます。
次の図に示すように、[エクスポート]オプションを選択して、ファイルを xbm 形式で保存します。
下の図に示す形式を選択して、画像ファイルをエクスポートします。
ファイルをエクスポートすると、「。xbm」形式のファイルが取得されます。メモ帳を使用して xbm ファイルを開くと、 次の 図に示すようなHEXコードが表示されます。
Arduinoコードと動作説明
グラフィカルLCDをArduinoとインターフェースするには、最初にグラフィカルLCDに使用するライブラリを定義する必要があります。Arduinoにはこのライブラリがありません。このリンクからこのライブラリをダウンロードしてインストールする必要があります。次に、次のようにライブラリを含めることができます。
#include "U8glib.h"
ここで、「 u8g(10) 」は、グラフィカルLCDのRS(Register Select)ピンと ArduinoUNO の10番目のピンの接続を定義しています。シリアルモードとパラレルモードでそれぞれ使用する場合、「チップセレクト」と「レジスタセレクト」として使用されるRSピン。そのため、シリアルモードを使用しており、チップを有効にするにはRSピンをHigh(1)に設定し、チップを無効にするにはLow(0)に設定します。
U8GLIB_ST7920_128X64_4X u8g(10);
ここで、画像を印刷するには、画像の16進コードを次のコードに配置する必要があります。他の画像を印刷するだけで、画像の16進コードを貼り付けることができます。
const uint8_t rook_bitmap U8G_PROGMEM = { 画像の16進コードをここに貼り付けます };
この記事の最後にある完全なArduinoコードを確認してください。
以下の関数は画像の印刷に使用されます。印刷に使用されるコマンドは 「u8g.drawXBMP(x、y、画像の幅、画像の高さ)」 です。ここで、XとYはLCD上の画像の開始位置であり、128 * 64を超えてはならない画像のサイズも記述する必要があります。最後の引数では、画像のHEXコードを配置する関数を呼び出しました。
void picture(void){u8g.drawXBMP(0、0、128、64、rook_bitmap); }
「draw」 と 「next」 という2つの関数を作成しました。この関数では、コンテンツを印刷するためのコードがコマンド 「u8g.drawStr(x、y、” abcd”)」 を使用して記述されてい ます。 ここで、xとyはコンテンツが印刷されるLCD内の位置であり、「 abcd 」は印刷されるコンテンツです。
void draw(void){u8g.setFont(u8g_font_unifont); u8g.drawStr(07、35、 "CIRCUIT DIGEST"); } void next(void){u8g.setFont(u8g_font_unifont); u8g.drawStr(0、15、 "インターフェース"); u8g.drawStr(0、35、 "グラフィックLCD"); u8g.drawStr(0、55、 "with Arduino"); }
clearLCD() 関数は、関数にnull値を与えるだけでLCDをクリアするために作成されています。
void clearLCD(){u8g.firstPage(); do {} while(u8g.nextPage()); }
以下のコードを使用して、ピクセル、色、強度を設定します
void setup(void){if(u8g.getMode()== U8G_MODE_R3G3B2){u8g.setColorIndex(255); //白} else if(u8g.getMode()== U8G_MODE_GRAY2BIT){u8g.setColorIndex(3); //最大強度} else if(u8g.getMode()== U8G_MODE_BW){u8g.setColorIndex(1); //ピクセルオン} else if(u8g.getMode()== U8G_MODE_HICOLOR){u8g.setHiColorByRGB(255,255,255); }}
空ループは 続けて、テキストと画像の印刷指定した遅延の後に。まず、 ドロー 機能を使って2秒後に 「サーキットダイジェスト」 をプリントしました。遅延の場合、 clearLCD 機能を使用して画面をクリアしてから、 次の 機能を使用して「 Arduinoを使用したグラフィカルLCDのインターフェース 」を印刷しました。次に、画面に3秒間表示される picture() 関数を使用して画像を印刷しました。これは、電源がオンになるまで続きます。
void loop(void){u8g.firstPage(); do {draw(); } while(u8g.nextPage()); delay(2000); clearLCD(); u8g.firstPage(); do {next(); } while(u8g.nextPage()); delay(2000); clearLCD(); u8g.firstPage(); {picture();を実行します。} while(u8g.nextPage()); delay(3000); clearLCD(); delay(50); }
与えられたコードを使用してArduinoをプログラミングした後、回路図に従ってグラフィカルLCDをArduinoに接続し、アダプターまたはUSBを使用してArduinoを供給します。以下のビデオに示すように、コンテンツと画像がグラフィカルLCDに印刷されます。
また、Nokia5110グラフィカルLCDとArduinoのインターフェースも確認してください。