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

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) 次のページへ
ArduinoによるS12232ZAの制御例
ArduinoによるS12232ZAの制御例

目次

1. はじめに … 1ページ
2. ハードウェアについて … 1ページ
3. MGLCDライブラリのインストール … 2ページ
4. 動作チェック … 2ページ
5. MGLCDライブラリの使い方(初期化編) … 2ページ
6. MGLCDライブラリの使い方(テキスト表示編) … 3ページ
6-1. 内蔵フォント … 3ページ
6-2. print関数およびprintln関数 … 3ページ
6-3. ClearScreen関数 … 3ページ
6-4. Locate関数 … 3ページ
7. MGLCDライブラリの使い方(グラフィック表示編) … 4ページ
7-1. グラフィック座標系 … 4ページ
7-2. SetPixel関数 … 4ページ
7-3. Line関数 … 4ページ
7-4. Rect関数 … 4ページ
7-5. FillRect関数 … 4ページ
7-6. Circle関数 … 4ページ
7-7. FillCircle関数 … 4ページ
7-8. Line関数を用いたデモスケッチ … 4ページ

1.はじめに

aitendoS12232ZAという、122X32ドット表示のモノクログラフィックLCDモジュールが販売されています。(今では、私が個人的に輸入したS12232ZAを、スイッチサイエンスで委託販売しています) バックライトはないものの、350円という価格は魅力的です。ただし、データシートがないので、手探りで使い方を調べる必要があり、ネットで検索しても、S12232ZAを使いこなしていらっしゃる人はなかなかいないようです。(aitendoのサイトに載っているデータシートは、よく似た別のLCDのデータシートなので当てにできない)

S12232ZA 商品名 S12232ZA
税抜き小売価格 400円
販売店 スイッチサイエンス
サポートページ

今回、S12232ZAの使い方を独自に調べ、動かすことに成功しましたので、報告します。

また、MGLCDというライブラリも作成しました。このライブラリを使うと、S12232ZAのハードウェアの詳細を知らなくても、簡単に文字や図形などを表示できます。

2.ハードウェアについて

aitendoのS12232ZAの販売サイトに記載されているピン接続と、データシートのピン接続が異なります。販売サイトに記載されているピン接続の方が正しいので、注意が必要です。S12232ZAのデータシートとして紹介されている文書は、別のLCDのデータシートなので、無視してください。

販売サイトには「VO(GNDに接続)」という記述がありますが、これは正確ではありません。VO端子はコントラストの調整端子です。負の電圧を印加します。半固定抵抗で印加電圧を調整することにより、コントラスト調整ができます。(詳細は後述)GNDに接続しても表示はできますが、表示が少し薄くなります。

2.54mmピッチで18の端子があります。この内実際に使うのは、1~16番端子です。17番端子と18番端子はバックライトの電源端子ですが、S12232ZAにはバックライトは内蔵されていませんので、これらの端子は内部に接続されていません。

写真1、S12232ZAの端子
↑ 画像をクリックすると拡大
写真1、S12232ZAの端子

S12232ZAのピン接続を次の表に示します。

表1、S12232ZAの端子説明
番号 名称 説明
1 GND GND
2 VCC 5V電源入力
3 VO コントラスト調節用入力端子。負の電圧を印加する。電圧が低いほど文字が濃く表示される。
4 A0 0 : CPUからのDB0~7が制御コマンドである事を示す。
1 : CPUからのDB0~7がデータである事を示す。
5 E1 画面の左半分の制御用イネーブル信号。68系インターフェースの場合、HLの遷移でDB0~7がリードまたはライトされる。
6 E2 画面の右半分の制御用イネーブル信号。68系インターフェースの場合、HLの遷移でDB0~7がリードまたはライトされる。
7 R/W 68系インターフェースの場合、この信号がHならリード。Lならライト。
8~15 DB0~DB7 データバス。(制御コマンドもこのバスで送る)
16 RST リセット信号。LからHに切り替えると、68系インターフェースになる。HからLに切り替えるとZ80系インターフェースになる。
17, 18 NC 未使用端子(何も接続しない)

以前に使用方法を解説したSG12232Cと同じく、SED1520というコントローラICを二個使用しているので、S12232ZAもSG12232Cと非常に良く似た使い方になります。ここではSG12232Cとの違いを説明しますので、以前の記事と読み合わせてください。

SG12232CではCL端子に2kHzのクロックを入力する必要がありましたが、S12232ZAではクロック入力は不要です。

一方でVO端子に関しては、SG12232Cでは正の電圧を入力できたので、VCCとGNDを抵抗分圧して電圧生成ができたのですが、Z12232ZAの場合は負の制御電圧を入力する必要があります。外部に負電圧電源を用意しなければならないのが、いやらしいところです。

2つのSED1520はそれぞれ画面の左半分と右半分の描画・表示を担当しています。データバス上の命令やデータがどちらのSED1520への物なのかを示す信号として、SG12232Cの場合は2つのチップセレクト信号(CS1とCS2)を使っていました。しかしS12232ZAの場合は、そもそもチップセレクト信号自体がありません。その代わりイネーブル端子が2つ(E1とE2)あります。どうやらチップセレクト信号はLCDモジュール内部で常にアサートされていて、イネーブル信号を、アクセスしたい側のSED1520のみに供給することで、チップの選択をしているようです。

RST端子に掛けるリセット電圧の極性で、バスモードを68系インターフェースとZ80系インターフェースに切り替えられるのですが、今回は68系インターフェースのみを使うので、表1では68系インターフェースを使うことを前提に説明が書いてあります。

ArduinoでS12232ZAを動かすために、次のような回路をブレッドボード上で作りました。

図1、S12232ZAをArduinoで使うための回路の回路図
↑ 画像をクリックするとPDFファイルで表示
図1、S12232ZAをArduinoで使うための回路の回路図

この回路で工夫している点は、コントラスト調整用の負電圧をR1、C1、C2、D1、D2からなるチャージポンプ回路で発生していることです。これにより、入手性の良い部品だけで、安価に負電源が得られます。ただし、その代償として、Arduinoのピンを1つ(3番ピン)消費します。

ブレッドボードに組んだ写真を次に示します。Arduino UnoからArduino Mega 2560に変更しても、同じ配線、同じソフトで液晶が動作します。ただし、ソフトの構造上の問題で、Arduino Mega 2560を使う場合は、表示速度が低下します。

写真2、Arduino Unoを使ったテスト回路
↑ 画像をクリックすると拡大
写真2、Arduino Unoを使ったテスト回路
写真3、Arduino Mega 2560を使ったテスト回路
↑ 画像をクリックすると拡大
写真3、Arduino Mega 2560を使ったテスト回路

Arduino Unoで組んだ場合、元々少ないI/Oピンを13本も使うのが、痛いところです。

広告

2014年8月8日追記:最新のライブラリ(MGCLDライブラリ Ver. 0.34では、更に対応Arduinoが増えています。Ver. 0.34で動作確認が取れているのは次のArduino(および)互換機です。

また、ブレッドボードに回路を組むのが面倒な人や、「ブレッドボードでは配線が不安定で使いにくい」という人のために、このページで紹介している回路をシールド基板化したもののキットを、販売しています。詳しくは、GLCD学習シールドキットサポートページ(1)をご覧ください。

GLCD学習シールドキット 商品名 GLCD学習シールドキット
税抜き小売価格 1410円
販売店 スイッチサイエンス
サポートページ
写真4、GLCD学習シールドキットの使用イメージ
写真4、GLCD学習シールドキットの使用イメージ

次のページでは、ソフトの解説をします。

目次へ  前のページへ (1) (2) (3) (4) 次のページへ

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

関連ページ

関連製品

S12232ZA 商品名 S12232ZA
税抜き小売価格 400円
販売店 スイッチサイエンス
サポートページ
GLCD学習シールドキット 商品名 GLCD学習シールドキット
税抜き小売価格 1410円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。