aitendoでS12232ZAという、122X32ドット表示のモノクログラフィックLCDモジュールが販売されています。(今では、私が個人的に輸入したS12232ZAを、スイッチサイエンスで委託販売しています) バックライトはないものの、350円という価格は魅力的です。ただし、データシートがないので、手探りで使い方を調べる必要があり、ネットで検索しても、S12232ZAを使いこなしていらっしゃる人はなかなかいないようです。(aitendoのサイトに載っているデータシートは、よく似た別のLCDのデータシートなので当てにできない)
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
今回、S12232ZAの使い方を独自に調べ、動かすことに成功しましたので、報告します。
また、MGLCDというライブラリも作成しました。このライブラリを使うと、S12232ZAのハードウェアの詳細を知らなくても、簡単に文字や図形などを表示できます。
aitendoのS12232ZAの販売サイトに記載されているピン接続と、データシートのピン接続が異なります。販売サイトに記載されているピン接続の方が正しいので、注意が必要です。S12232ZAのデータシートとして紹介されている文書は、別のLCDのデータシートなので、無視してください。
販売サイトには「VO(GNDに接続)」という記述がありますが、これは正確ではありません。VO端子はコントラストの調整端子です。負の電圧を印加します。半固定抵抗で印加電圧を調整することにより、コントラスト調整ができます。(詳細は後述)GNDに接続しても表示はできますが、表示が少し薄くなります。
2.54mmピッチで18の端子があります。この内実際に使うのは、1~16番端子です。17番端子と18番端子はバックライトの電源端子ですが、S12232ZAにはバックライトは内蔵されていませんので、これらの端子は内部に接続されていません。
S12232ZAのピン接続を次の表に示します。
番号 | 名称 | 説明 |
---|---|---|
1 | GND | GND |
2 | VCC | 5V電源入力 |
3 | VO | コントラスト調節用入力端子。負の電圧を印加する。電圧が低いほど文字が濃く表示される。 |
4 | A0 | 0 : CPUからのDB0~7が制御コマンドである事を示す。 1 : CPUからのDB0~7がデータである事を示す。 |
5 | E1 | 画面の左半分の制御用イネーブル信号。68系インターフェースの場合、H→Lの遷移でDB0~7がリードまたはライトされる。 |
6 | E2 | 画面の右半分の制御用イネーブル信号。68系インターフェースの場合、H→Lの遷移で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を動かすために、次のような回路をブレッドボード上で作りました。
この回路で工夫している点は、コントラスト調整用の負電圧をR1、C1、C2、D1、D2からなるチャージポンプ回路で発生していることです。これにより、入手性の良い部品だけで、安価に負電源が得られます。ただし、その代償として、Arduinoのピンを1つ(3番ピン)消費します。
ブレッドボードに組んだ写真を次に示します。Arduino UnoからArduino Mega 2560に変更しても、同じ配線、同じソフトで液晶が動作します。ただし、ソフトの構造上の問題で、Arduino Mega 2560を使う場合は、表示速度が低下します。
Arduino Unoで組んだ場合、元々少ないI/Oピンを13本も使うのが、痛いところです。
2014年8月8日追記:最新のライブラリ(MGCLDライブラリ Ver. 0.34では、更に対応Arduinoが増えています。Ver. 0.34で動作確認が取れているのは次のArduino(および)互換機です。
また、ブレッドボードに回路を組むのが面倒な人や、「ブレッドボードでは配線が不安定で使いにくい」という人のために、このページで紹介している回路をシールド基板化したもののキットを、販売しています。詳しくは、GLCD学習シールドキットサポートページ(1)をご覧ください。
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |
次のページでは、ソフトの解説をします。
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
商品名 | GLCD学習シールドキット | |
税抜き小売価格 | 1410円 | |
販売店 | スイッチサイエンス | |
サポートページ | GLCD学習シールドキットサポートページ |