フレームバッファ入りSTN液晶 CMW72NS46Pをマイコン制御に・・・ (Page 1 / ?) |
フレームバッファ入りSTN液晶
|
■ とりあえず、適当なマイコンをつなぐべく応用開始・・・![]() |
元々が RGBモニタだった液晶パネルを改造、8Bitラッチが 2発付いたインターフェースを通して PC-9801互換機のプリンタインターフェースに接続して
色々遊んできたのだが、N88BASICインタプリタという環境は試行錯誤には適しているものの、実用的なアプリを作成するのには
あまりに貧弱である。 そこで、適当なワンチップマイコンを接続して、本格的な応用を開始して行きたいと思う。
2009年2月初旬までに、既に解析工程は大半が完了していたのだが、工作のネタを考えながら、制御ソフトなんかもいぢくっていると そこそこ時間がかかるというのが実感である (^^; とりあえず、一通りの基本ルーチンが動き始めたので、ここらあたりでお披露目しておきたいと思う次第だ。 一応お断りしておくが、まだ ハード・ソフトとも最終形ではない ので、私の気分次第で 変な展開になるかも知れない。 今後、製作過程を少しずつこの後に追加していきたいと思うので、お付き合いいただける方は、 どうか気長にネ・・・ |
|
|
![]() |
・・・ということで、2009/03/08現在の状況は、上のイメージのような感じになっている。
この液晶ユニットの解析と具体的な改造方法については、↓下記のページ↓ も併せて参照いただければ幸いだ。 |
![]() |
一本行っとく?! フレームバッファ入りSTN液晶! |
・ ・ ・ ・
■ ワンチップマイコンの選定とI/Fの組み立て・・・![]() |
まずは、これから作成する I/Fとワンチップマイコンに盛り込む機能について、少し考えておくことにする。 ざっと
書き出してみると・・・
ビデオメモリの構造上、ランダムアクセスはできない ことや、読み出しの機能はない という制限があるので、矩形以外の複雑な図形を描画しようとしたり、閉じた領域のペイントなど、今ある画面のドットを読み取らなければいけない処理を組み込むことは考えない方が賢明だ。 ということで、ハード上の制限を考えつつ、表示データを作成するためのマイコンの選定ね。 たとえば、ワンチップマイコンだけで描画するという応用でよくあるパターンだが、映像信号を直接操作することで描画することを考えてみよう。 このテのアプリは プログラムのステップ数でタイミングを取るような構造になるため、そのタイミングは常に正確でなければならない。 内部処理が重い、 軽い等で処理ステップ(クロック)数が変わると表示位置がズレてしまうため、このテのプログラムはものすごく作りにくい。 今回の液晶ユニット内にはフレームメモリが装着されているため、液晶パネルへのデータ転送は完全分離されている。 ウラで行われている 処理のタイミングを考慮する必要はなく、自分の都合が良いタイミングでデータを書き込むことが可能 なので、上記の制限にかからなければ処理はすこぶる簡単だ。 一方、描画すべきデータの量はそれなりである。 横 1ラインあたり 480Byte、それが縦 240Lineの空間を持っているため、まじめにアクセス すると総量は 112KByteにもなる。 横 2ライン毎に同一データを書き込むというサボリを行ったとしても、56KByteになる。 画面の領域を 適当な色で埋める程度の作業なら 8Bitの PICマイコンでも問題ないのだろうが、文字フォントやグラフィックデータを表示させることを考えると、 もう少し高機能なマイコンを選んでおく方が賢明だろう。 てな訳で、今回は安直に、大阪日本橋徘徊中目に留まった AVRマイコン ATmega168 のキットを使ってみることにした。 ROM 16KByte、 RAM 1KByteの容量を持ち、プログラミングにC言語が使えるというメリットもある。 トータルで考えて、Flash書き込み用ハードウェアなども含めて フリーのツールのみ でもそこそこの環境が構築できるのがありがたい。 |
|
|
![]() |
上のイメージは、購入した ATmega168キットの外観と内容物。
マイコンの各 Pinが MILボックス型プラグに出してあるほか、20MHzのクリスタル、6Pin ISP端子、TL431によるアナログ基準電源、 三端子レギュレータ、それに電源極性を気にしなくても良いように考えてか、ダイオードブリッジまで入っていた。 今回の応用では、I/Fボードを作った上に載せてドッキングさせようと考えているため、小変更を行って使っている。 変更箇所を列挙しておくと・・・
|
|
|
![]() |
変更箇所を反映しつつ組み立てたのが、上のイメージ。
この程度の規模でキットを使うメリットはそれほど大きくないのかも知れないが、アナログのリファレンスや ISP端子なんかも ひとまとめにされているため、ワンタッチで別の環境と差し替えられるのはありがたいと思う。 それほど高くないしネ・・・ |
|
|
![]() |
別途作成した I/Fボードとドッキングしてみた。
当初は そのまま液晶ユニットに結線 すれば良いかと考えていたのだが、結局のところ 8Bitラッチを一つ 追加した。 その他には、RS-232C用コネクタとレベルコンバーター (ICはまだ取り付けていない)、タクトスイッチなどを基板上に実装している。 必要なI/Oポートについて、少しコメントしておこう。 液晶のフレームメモリは 8Bit幅なので、効率の良いアクセスには 8Bit幅のポートが必要 だ。 しかし、 ATmega168をはじめ、主要なマイコンはほとんどのピンに 兼用機能が割り当て られており、無用な選択を迫られる場合が多々ある。 今回は、フレームメモリへのデータバスが 8Bit、制御信号 IE1、WE1、RSTW1、IE2、WE2、RSTW2、SWCKで 7Bitと、全15Bitなら楽勝・・・ と 思っていたのだが、RS-232C (USART)を使う ためには PD0と1を明け渡さないといけない ので、8Bit幅のポートはなくなってしまう。 そこで今回は、PORT-CとPORT-Dを各4Bitずつ組み合わせる という妥協を入れてみた。 使用するポートの組み合わせとして ビット操作 が必要になると 速度低下に直結 するため、 同じデータをPORT-CとPORT-Dに書き込む(2度書き) だけで完結するようにしている。 ここで余ったポートは、入力として設定しておくと、無駄なく使用することが可能だ。 しかし、入力ポートに備わっているプルアップ機能は、 出力レジスタが ON/OFF制御と兼用で使われているため使用に制限が発生する。 別途ポート毎に抵抗の外付けをするのが無難な選択だろう。 |
|
![]()
結局、ポートの割り当てはこんな感じにしてみた。
PORT-CとPORT-Dの組み合わせを行ったおかげで 出力ポートの総数が不足する ため、8Bitラッチ 74VHC273を増設し、アクセス頻度の低い制御信号 IE1、WE1、IE2、WE2を追い出し している。 さらに 出力ポートが必要なら、RSTW1、RSTW2を追い出すという選択もアリだろう。 また、後々 A/D変換が使いたくなった場合は、PORT-Cの Bit4、5あたりをつなぎ替えて対応することを考えておく。 |
|
![]()
ということで、ポートの割り当てを盛り込んだ回路図はこちら。
|
|
|
![]() |
とりあえず、こんな感じでパーツをマウントしている。 ウラ面の配線は、今回も例によって UEWネ (^^;
あと、写真では少々判別しにくいが、液晶ユニットに接続されるピンヘッダの根本には 100Ωのチップ抵抗、タクトスイッチの根本には 4.7KΩのチップ抵抗を それぞれ取り付けている。 |
|
|
![]() | ||||||
基板の一端には RS-232C接続用の D-SUB 9Pinコネクタを装着している。
このコネクタは端子が千鳥配列でユニバーサル基板にはそのまま実装できないため、穴のエッジを削り、コネクタのピンを曲げることで うまく 2.54mmピッチの基板に収まるように工夫している。 と、ここまで作ったところで日本橋をうろついていると、レベルコンバーター付きコネクタが販売されているのを 発見してしまった。 もちろん レベルコンバーターICは 9Pinコネクタ内に内蔵 である (^^; 次に作るときには、コレ使おうかな・・・ その他、ツール類について記しておこう。
| ||||||
2009/03/08 Yutaka Kyotani (暫定公開)
2009/03/15 Yutaka Kyotani (追記) 2009/03/22 Yutaka Kyotani (追記) | ||||||
|