ArduinoでグラフィックLCDを動かす(AQM1248A編)(1)

このページをスマートフォンなどでご覧になる場合は、画面を横長にする方が読みやすくなる事があります。
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ
2016年02月24日 公開。
AQM1248AをArduino Unoで動作させた例
↑ 画像をクリックすると拡大
AQM1248AをArduino Unoで動作させた例
AQM1248AをArduino Unoで動作させた時の動画

この動画では「近日中にライブラリを公開」としていますが、現在では既にMGLCDライブラリを公開しています。

この連載では、人気の小型グラフィックLCDモジュールのAQM1248Aを、Arduinoで制御する方法について、原理的な説明を含めて詳細に紹介しています。

原理的な事には興味がなく、とりあえず画面に思った通りの図形や文字列を表示できればいいと思われる方は、13ページから読み始めてください。MGLCDライブラリというグラフィックLCD用のライブラリを用いて、ハードウェア的な知識を使わずに画面表示を行う方法を説明しています。

また、AQM1248Aを搭載したシールドの組み立て方がAQM1248Aを使ったArduino用シールド2種という記事に載っていますので、そちらも是非ご覧ください。

目次

1. はじめに … 1ページ
2. AQM1248Aの概要 … 1ページ
3. マイコンとの接続方法 … 2ページ
3-1. 信号線の説明 … 2ページ
3-2. フレームバッファ(VRAM)の読み出しについて … 2ページ
3-3. 信号のタイミング … 2ページ
3-4. ハードウェアSPIとソフトウェアSPI … 3ページ
3-5. 3.3VのArduinoと接続する方法 … 3ページ
3-5-1. ハードウェアSPIで動作させる場合 … 3ページ
3-5-2. ソフトウェアSPIで動作させる場合 … 3ページ
3-6. 5VのArduinoと接続する方法 … 4ページ
3-6-1. 抵抗分圧方式のレベル変換回路を使う方法 … 4ページ
3-6-1-1. 抵抗分圧回路の動作原理 … 4ページ
3-6-1-2. ハードウェアSPIで動作させる場合 … 4ページ
3-6-1-3. ソフトウェアSPIで動作させる場合 … 4ページ
3-6-2. レベル変換用ICを使う方法 … 5ページ
3-6-2-1. 74AHC244を使う接続法 … 5ページ
3-6-2-2. HD74LVC541A/​HD74LV541A/​TC74VHC541FTを使う接続法 … 5ページ
3-6-2-3. 74HC4050を使う方法 … 6ページ
4. AQM1248Aを使うためのスケッチの作り方 … 7ページ
4-1. 直接液晶制御ICにコマンドやデータを送る方法 … 7ページ
4-1-1. コマンドとデータ … 7ページ
4-1-2. VRAMの構成 … 7ページ
4-1-3. コマンドの概要 … 8ページ
4-1-4. VRAMへのビットマップデータの書き方 … 8ページ
4-1-4-1. Page address setコマンド … 8ページ
4-1-4-2. Column address set (upper bit/lower bit)コマンド … 8ページ
4-1-5. AQM1248Aの初期化シーケンスとコントラスト調整 … 8ページ
4-1-5-1. コントラスト調整に使うコマンド … 8ページ
4-1-5-2. AQM1248Aの初期化シーケンス … 8ページ
4-1-5-3. コントラスト調整のオペランドの値と実際の画面表示の関係 … 8ページ
4-1-6. SPIバスを使ってコマンドやデータを送信する方法 … 9ページ
4-1-6-1. ソフトウェアSPIによるコマンドやデータの送信 … 9ページ
4-1-6-2. ハードウェアSPIによるコマンドやデータの送信 … 9ページ
4-1-7. AQM1248AでHello,World!(ビットマップ転送) … 10ページ
4-1-7-1. 転送するビットマップのデザイン … 10ページ
4-1-7-2. Hello, World!を表示するスケッチの作成 … 10ページ
4-1-8. 点を描画するSetPixel関数を作る … 11ページ
4-1-8-1. とにかく動作するSetPixel関数を作る(既知の問題点あり) … 11ページ
4-1-8-2. SetPixel関数の問題が表面化 … 12ページ
4-1-8-3. VRAMを二重化してSetPixel関数の不具合を修正する … 12ページ
4-1-8-4. SetPixel関数を拡張して白い点も描画できるようにする … 12ページ
5. MGLCDライブラリを使ってAQM1248Aを制御する方法 … 13ページ
5-1. MGLCDライブラリのインストール方法 … 13ページ
5-2. MGLCDライブラリを使ってHello, World! (ハードウェアSPI編) … 13ページ
5-2-1. ArduinoとAQM1248Aの配線 … 13ページ
5-2-1-1. 5VのArduinoの場合 … 13ページ
5-2-1-2. 3.3VのArduinoの場合 … 13ページ
5-2-2. Hello, World!のスケッチ … 13ページ
5-3. MGLCDライブラリを使ってHello, World! (ソフトウェアウェアSPI編) … 13ページ
5-3-1. ArduinoとAQM1248Aの配線 … 13ページ
5-3-1-1. 5VのArduinoの場合 … 13ページ
5-3-1-2. 3.3VのArduinoの場合 … 13ページ
5-3-2. Hello, World!のスケッチ … 13ページ
5-4. ヘッダファイルのインクルード … 14ページ
5-4-1. ハードウェアSPI接続の場合 … 14ページ
5-4-2. ソフトウェアSPI接続の場合 … 14ページ
5-5. オブジェクト変数の宣言 … 14ページ
5-5-1. ハードウェアSPI接続の場合 … 14ページ
5-5-2. ソフトウェアSPI接続の場合 … 14ページ
5-5-3. 変数名について … 14ページ
5-6. AQM1248Aの初期化方法 … 14ページ
5-7. スケッチのテンプレート … 14ページ
5-7-1. ハードウェアSPI接続の場合 … 14ページ
5-7-2. ソフトウェアSPI接続の場合 … 14ページ
5-8. MGLCDライブラリの主な関数(テキスト表示編) … 15ページ
5-8-1. 内蔵フォント … 15ページ
5-8-2. print関数およびprintln関数 … 15ページ
5-8-3. ClearScreen関数 … 15ページ
5-8-4. Locate関数 … 15ページ
5-9. MGLCDライブラリの主な関数(グラフィック表示編) … 16ページ
5-9-1. グラフィック座標系 … 16ページ
5-9-2. SetPixel関数 … 16ページ
5-9-3. Line関数 … 16ページ
5-9-4. Rect関数 … 16ページ
5-9-5. FillRect関数 … 16ページ
5-9-6. Circle関数 … 16ページ
5-9-7. FillCircle関数 … 16ページ
5-9-8. Line関数を用いたデモスケッチ … 16ページ
5-10. MGLCDライブラリの主な関数(AQM1248Aの固有機能編) … 17ページ
5-10-1. コントラスト調整機能に関する関数 … 17ページ
5-10-1-1. SetRegulatorVoltage関数 … 17ページ
5-10-1-2. SetVolumeResistor関数 … 17ページ
5-10-1-3. コントラスト調整のサンプルスケッチ … 17ページ
5-10-2. 画面の白黒反転に関する関数 … 17ページ
5-10-2-1. InvertDisplay関数 … 17ページ
5-10-2-2. InvertDisplay関数のサンプルスケッチ … 17ページ

1.はじめに

秋月電子AQM1248Aという、128X48ピクセルのモノクログラフィックLCDモジュールが販売されています。安価(2016年2月時点で400円)で小型の液晶なので、ちょっとした表示に重宝します。この記事では、このAQM1248AをArduinoで動作させる方法について説明します。

2.AQM1248Aの概要

AQM1248Aの写真を写真1~写真3に示します。

写真1、AQM1248A(表側)
↑ 画像をクリックすると拡大
写真1、AQM1248A(表側)
写真2、AQM1248A(裏側)
↑ 画像をクリックすると拡大
写真2、AQM1248A(裏側)
写真3、AQM1248A(端子部分)
↑ 画像をクリックすると拡大
写真3、AQM1248A(端子部分)

端子のピッチは1.27mm

広告

AQM1248Aは横34mm×縦20mmという小さなLCDモジュールで、表示部分は横28.1mm×9.1mmしかありませんが、128X48ピクセルの比較的高解像度の表示をします。そのため、小さなスペースに多くの情報を表示するのに向いている液晶だといえます。

例えば8X6ドットのフォントを使うと、21桁×6行もの文字を表示する事ができます。ただし、文字がとても小さくなるので、老眼の人にはきついかも知れません。

またAQM1248Aにはバックライトはないので、暗いところでは画面が見づらくなります。

マイコンとの接続インターフェースはSPIバスと、データ/コマンドの区別のための信号線1本となります。(詳しくは後述) SG12232CSG12864ASLB-GB などの様にパラレルインターフェースのLCDモジュールに比べ、信号線が少なくなる反面、動作速度を上げにくい欠点もあります。とはいえ、こんな小さな液晶に、高速で情報を表示させることは稀でしょうから、あまり動作速度は気にしなくてもいいかも知れません。

SG12232CやSG12864ASLB-GBはCOB型の液晶モジュールでした。COBというのはChip On Boardの略で、液晶を制御する制御ICが、プリント基板に実装されているタイプの液晶モジュールの事を指します。液晶と制御回路の基板が重なるため、厚みがあり、また面積的にも大型で、価格も高めになりやすいという特徴があります。

一方で、今回取り上げるAQM1248Aは、COG型の液晶モジュールです。COGというのはChip On Glassの略で、一枚のガラス上に液晶と制御ICの両方を形成するタイプの液晶モジュールです。COB型の液晶モジュールに比べ、小型かつ安価に作れるのが特長です。

COG型の液晶モジュールは、通常、FPCケーブル(フレキシブル基板でできたケーブル)で信号線が引き出されており、手作業で基板に実装するのが難しいという、電子工作ファンにはありがたくない性質もあるのですが、その点、AQM1248Aはリード端子で信号線が引き出されており(写真3参照)、手半田で実装しやすいのが良いところです。

ところで、液晶表示には数V~十数Vの、マイコンの電源電圧より高い電圧が必要です。そのため液晶モジュールには、マイコンと同じ電源電圧(3~5V程度)を与えると液晶表示に必要な高電圧を生成する電源回路が、通常内蔵されています。その昇圧回路(電圧を上げる回路)には、通常チャージポンプ回路という、コンデンサとMOSスイッチを組み合わせた回路が使われます。

COB型の液晶モジュールには、チャージポンプ回路用のコンデンサが内蔵されていますが、COG型の液晶モジュールにはコンデンサを外付けする必要があります。これは、チャージポンプ回路用のコンデンサとして通常μF級の容量の大きなコンデンサが使われるため、ガラス基板上に形成するには、形状が大きすぎるからです。

AQM1248Aの場合も、チャージポンプ回路用のコンデンサを何個も外付けする必要があります。(図1参照) 外付けのコンデンサやプルアップ抵抗の数が多い事と、ピンピッチが1.27mmと、ユニバーサル基板に挿入できない寸法であることから、ユニバーサル基板上に試作回路を組む場合は、別売の超小型グラフィックLCD用ピッチ変換基板(2016年2月時点で450円)を利用する方がいいでしょう。このピッチ変換は、ピンピッチを2.54mmに変換するだけでなく、図1の抵抗やコンデンサが全て含まれています。

LCDモジュールとピッチ変換基板は、セットで購入する事もできます。セットの価格は750円(2016年2月時点)と、LCDモジュールとピッチ変換基板を別々に購入するより100円安くなっています。

図1、AQM1248Aに必要な周辺回路
図1、AQM1248Aに必要な周辺回路

図中の部品番号(R1やC1など)は、ピッチ変換基板上の表記と対応しています。

写真4、超小型グラフィックLCD用ピッチ変換基板(表側)
↑ 画像をクリックすると拡大
写真4、超小型グラフィックLCD用ピッチ変換基板(表側)
写真5、超小型グラフィックLCD用ピッチ変換基板(裏側)
↑ 画像をクリックすると拡大
写真5、超小型グラフィックLCD用ピッチ変換基板(裏側)

電源電圧は、図1に示した通り、2.4~3.6Vの範囲に設定できます。3.3Vで動作するマイコンと接続する場合、電源回路の電圧誤差を考慮しても、余裕を持って2.4~3.6Vに入るので、使いやすいといえます。(COG型のグラフィックLCDモジュールで、電源電圧の上限が3.3Vの物もありますが、この場合、3.3V動作のマイコンと接続すると、設計余裕が取れません)

5V動作のマイコン(例えば8ビットのArduinoのほとんど)と接続する場合には、3V前後の電源回路(ただし、Arduinoの場合は3.3Vの電源回路が内蔵されており、それを使える)と信号電圧の変換回路を設ける必要があります。5Vの電源や信号線をAQM1248Aに直接接続すると、故障してしまいます。

コントラスト(表示するグラフィックの濃さ)を調整するには、SPIバスから調整用のコマンドを発行します。ソフトウェア的にコントラスト調整をするので、調整用の半固定抵抗は必要ありません。

次のページでは、AQM1248Aの信号線について説明します。

目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス
サポートページ
GLCD学習シールドキット 商品名 GLCD学習シールドキット
税抜き小売価格 1410円
販売店 スイッチサイエンス
サポートページ
PCBgogoのバナー
Arduino 電子工作
このサイトの記事が本になりました
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
電子工作で学ぶ論理回路入門
このサイトの中の人が書いた本です。
ISBN:978-4-7775-2280-4
工学社の書籍の内容の紹介ページ
この本の紹介記事
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。