パッシブカラー液晶モジュールLM32C041の実験

はじめに

以前実験したRGB液晶モニターロジック用に5V、インバータ内臓のバックライト用に9Vの電源が必要なアナログ入力のモニターでした。アナログ入力のモニタは同期信号や画像信号の入力タイミングをモニターに依存した時間で送る必要があり、マイコンでモニターに表示する画像の処理を、表示の合間や、無表示期間を利用するしかありませんでした。ゲームなどは操作入力や演算もありプログラムがとっても大変です。
また、表示データによって向き不向きがあります。入力データがビデオ信号などのアナログ信号だったらアナログ入力の方が楽でしょう。しかし、モニターの表示データをマイコンの演算結果にするならデジタル入力のほうがずっと楽なはずです。

私の場合、画像データをデジタル信号で扱う機会の方が多いので今回は、デジタルLCDのパッシブカラー液晶モジュールLM32C041を試してみてその実用性を確認します。
・・・といえば実験レポートみたいでカッコよいのですが、LCDの教材を買出しした時、秋月電子通商でアナログなLCDとデジタルなLCDが2種類売られていたので、迷った挙句、結局両方買ったっていのがオチです。

デジタル液晶モジュールLM32C041

デジタル入力の液晶は入力をDCK(ドットクロック)をトリガにして取り込みます。画像データは1ドット単位で入力します。こういう入力方法はDCKを動かす手間がかかる反面、DCKを止ると表示は固定されるので、画面が動かない場合、アナログのように同じ画像を何度も表示する必要はありません。また、画面の表示途中にいったんDCKを止めてモニター以外の処理をするという事もできます。画像データはデジタルデータなので、RGB入力端子をマイコンと直結すればOKです。

LM32C041を使うために必要なもの。
LM32C041はデジタル入力なのでマイコンで扱いやすくて便利なのですが、実際に表示するまでは結構面倒です。

液晶駆動電圧+30V 

液晶を駆動するためには30V、20mA必要です・・・といってもマージンがあるので、コレに近い値なら問題ないみたいです。30Vの電源を探すっというのもテですが、液晶駆動電流が20mA程度なので昇圧回路をつくったほうが後々利用する上でも楽になります。ざっとWebで調べると、同じようにLM32C041を取り上げているサイトでは、5.5VからDC-DCコンバータのMAX629+28Vを得る方法と、12Vから8段のコッククロフト・ウォルトン回路で約30Vを得る方法がありました。今回はコッククロフト・ウォルトン回路をマネして液晶駆動電圧+30Vをつくっています。

バックライト用インバータ回路

RGB液晶モニターはインバータ回路が内蔵されていたのでそのまま+9Vを入力すればOKだったのですが、LM32C041は上下2つバックライトがあり、それぞれにインバータ回路を自分で用意しなければなりません。バックライトの冷陰極管駆動インバータは秋月のキットに冷陰極蛍光灯用インバータキット(\400)があるのでそれを購入しました。これは9〜12V入力の場合冷陰極管2本を駆動できるので1つでバックライトをまかなえます。

・・・まぁ、自分で全部考えたのではなくて人真似ばかりなのはいつものこと、まずはマネして理解することから始めてマス。

まずは電源の確保から。

液晶駆動電圧+30V
LM32C041の液晶駆動電圧は+30Vです。今回はコッククロフト・ウォルトン回路という昇圧回路で+30Vを得ます。

↓回路図


タイマIC555の3番ピンから出る方形波がHiのとき上の各コンデンサはダイオードで整流され、各ダイオードのすぐ右下のコンデンサを充電します。
Lowのときは下の各コンデンサがすぐ右上のコンデンサを充電します。
そういう動作みたいです。
上のコンデンサ同士と下のコンデンサ同士は直列につながっているので、
+30V−GND間
C7間の4倍になります。
タイマIC555が出力する方形波の周波数はVR1とRの比で決まります。
電圧の調整はLM32C041に繋いだ状態で調整しました。

ホントに30Vでるの?
さて、みたいじゃワカリズライので試しに、CircuitMaker 6 Student Versionでシミュレーションして動作を確認してみました。 
↓コッククロフト・ウォルトン回路だけ。

40V近くまで上がっています。
このままではわかりずらいので、C9(上記回路図ではC11)を取り払って↓のようにしてみました。

↓昇圧していく段階

黄色をNJM555のOutput波形に見立てた0-12Vの方形波で、黄色がHiの時は水色ピンクの左のコンデンサを充電する。黄色がLowになるとピンク水色と一緒に0V近くまで下がらないのがミソで、ピンクが上がると紺色も押し上げられて、22V付近が最大になる。黄色の2倍近くだ。これが段数分だけ増えてでは3倍近くで安定するというわけだ。

なるほど、こういうのは実際の波形を見るのがシンドイのでシミュレータは便利さがわかりますねぇ。
もうチョット詳しく理解したかったけど、今はこんなもんかなぁ・・・。

確認できたところで製作
↓作成した回路

ピンヘッダが電源の入出力です。
右が入力+12V、中央下のがロジック用の出力+5V、左が出力+30Vです。
+12Vは秋月のスイッチングACアダプタを使用しています。


バックライト用インバータ回路
秋月の冷陰極蛍光灯用インバータキットを購入しました。
この回路は冷陰極管2本をドライブできるのですが、入力電圧を12VにするとFETに放熱器が必要になるので、9Vにしています。
液晶駆動電源&ロジック電源の入力が12Vなのでコレとは別に9VのスイッチングACアダプタを使いました。
↓冷陰極蛍光灯用インバータキット

右の2つの積層セラミックコンデンサが3kV耐圧なのがちょっと怖かった。
ちゃんとした基板に接続したほうが良いです。

何か表示してみよう。

何か適当なものということで、AVRマイコンと直結してテストしました。

↓回路図

X1はセラロック10MHzです。AVRはかなり最高動作クロックのマージンがあるらしく、20MHzでも余裕で動作します。

ブレッドボード上で適当に繋いで実験してみました。
↓実験風景、生花状態の上をいく

LM32C041のテストランドが結構小さいのでラッピングワイヤーをつかったのですが、
案の定スパゲッティーに・・・。
まぁ、動いたから良いけど。
あとでフラットケーブルで繋ぎ直します。

とりあえず、4色表示。
まずは動作確認用に何らかのカラーパターンが必要です。適当にを表示するパターンを作りました。

サンプル:
lm32c041.asm :アセンブラソース
レジスタ定義ファイルを流用しているので、AVR Studio 3をインストールすると
C:\Program Files\Atmel\AVR Studio\Appnotes\2313def.inc
というファイルがあるので、それをソースと同じ場所にコピーしてください。

↓動作風景

立ち上げには苦労しましたが、処理自体は簡単なのでカラーパターンは一発OKでした。
・・・まぁアナログ入力と違って1ドット単位まで簡単に扱えるものなので当然なのですが・・・。

ちょっと凝ってみる。
RGB液晶モニターはカラーパターンと文字表示で終わったのですが、今度は動きのあるものをやってみます。
MSXのBASICなんかでお馴染みのグラフィックパターンです。
LINEとかCIRCLEとかよくやったなぁ。

サンプル:
m32c041_demo.asm :アセンブラソース
レジスタ定義ファイルを流用しているので、AVR Studio 3をインストールすると
C:\Program Files\Atmel\AVR Studio\Appnotes\2313def.inc
というファイルがあるので、それをソースと同じ場所にコピーしてください。

↓バックライトのせいで写真写りが悪いです。

左上と右下は見ての通りのパターンで、右上は青の線、左下は赤い点が移動しています。
・・・現物はかなりきれいに映っているんですよ(涙)。

まぁ、立ち上がったのでマイコン等の表示用にどんどん活用しようと思います。

今回学んだこと

・データシートをなめるように読むべし、しかし、全てを信じることなかれ。
 フレーム周期20ms以上でも大丈夫だった。
・スタックポインタの初期化を忘れずに。
 PIC16F84やAT90S1200には不要だったのでついうっかり忘れて苦労しました。
・回路シミュレータは便利。
 実際の波形を見るのがシンドイ場合だけでなく、気軽に回路を変えて試せるので楽しい。