FT232Rモジュール活用 #2 ビットバンモードでLCDモジュールを制御する
2011年9月 LCDモジュールを制御するのに必ずしもマイコンは必要ありません。 この記事ではFT232Rモジュール(USB-シリアル変換モジュール)のビットバンモードを利用し、マイコンなしでPCからLCDモジュールを制御する方法を紹介します。 PCアプリで簡単にLCDモジュールが使えるC#用ライブラリ「FT232LcdLib」を公開しています。 シリーズ記事 #1 ドライバのインストールからソフト開発まで #2 ビットバンモードでLCDモジュールを制御する #3 FT232-AVRライター とにかく導入が簡単 #4 ビットバンモードで7セグを制御する
|
LCDモジュールをPCにつなぐまで |
マイコン電子工作でお馴染みのLCDモジュール。PCで制御するにはどのようなシステムにすればよいでしょうか。 STEP1 センサーの反応やボタン操作をマイコンで処理し、結果をLCDモジュールに表示する電子工作は一般的です。 このシステムに、センサーやボタンではなくPCから入力を与えることを考えてみます。 STEP2 PCに機器を接続するには通常、USBを使います。マイコン側は、AVRにしろPICにしろ趣味の電子工作でよく使う品種のうち、USBの機能を内蔵したものはほとんどありません。マイコン内にソフトウェアでUSBの機能を実装する技術はありますが(例えばAVRのV-USB)、マイコン側のアプリ作りが複雑になります。処理速度の問題もあります。 【参考】 AVR-CDCの技術を使ったLCDモジュール操作の例。 (1)「LCDモジュール SC162シリーズ」…PCでマイコンのポートを制御してLCDモジュールを操作する。処理が遅い。 (2)「AVR-CDCにLCD/EEPROM操作機能を組み込む」…マイコン内に用意しておいたLCD操作コマンドをPCから呼び出す。処理が複雑。 逆に、大抵のマイコンはシリアルポートとの通信手段を内蔵しています(TXD/RXDによる通信)。ところが今時のPCにはシリアルポート(COMポート)は基本的に付いていません。ノートPCやネットブックにはまず付いていません。 従って、いずれにしてもPCとマイコンの接続は難しいと言えます。※【参考】の通りできることはできるが、不利な点が目立つ。 STEP3 そこでUSB-シリアル変換ICの登場です。このシリーズ記事ではFT232Rモジュールを取り上げています。 これによりPCとマイコンの仲介が上手く行き、PCからLCDモジュールまでがつながります。 このシステムでは、あらかじめマイコン内にLCD操作のコマンドをいくつも用意しておき、PCからそのコマンドを指定することで、LCDモジュールに文字を表示したり消去したりといった動作をさせることになります。※先述の【参考】(2)と同様。 結構複雑なシステムです。もう少し簡単にならないでしょうか? そもそもLCDモジュールは、マイコンでないと制御できない、というものではありません。LCDモジュールの制御に最低限必要な信号線は、データ線4本+制御線2本です(もちろん電源は必要)。要するに、マイコンでもPCでも何でも、6本の線を自由に制御できる機器ならLCDモジュールを制御できることになります。 STEP4 FT232Rの動作モードの一つ、ビットバンモードは8本のI/O線を自由に制御できる機能です。 これを利用すれば、マイコンなしでLCDモジュールを制御できるようになります。 このシステムはコマンド呼び出し方式ではなく、ソフトウェアの内容はLCDモジュールのI/O線6本を操作する記述になるので、何をしているのか(どんな制御をしているのか)が分かりやすくなります。 |
動作の様子 | ||
|
FT232LcdLib (C#ライブラリ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FT232Rモジュールを使ってLCDモジュールを操作するC#ライブラリを用意しました。自由に使ってください。 【お約束】利用に際して何か不都合が起ころうとも当方は一切の責任を負わないものとします。
リファレンス
|
デモプログラム | ||||||||||||||||||||
FT232LcdLibを使ったデモプログラムです。LCD画面に「Hallo world!」を表示します。デモ動画と同内容です。 ビットバンモードでのソフト開発の詳細についてはシリーズ#1の記事を読んでください。
デバイス(FT232Rモジュール)を操作するためのFTDIオブジェクトを生成し、デバイスをオープンします。 PCにデバイスが1つしか接続されていない場合はインデックス0番が確定しています。 13-14行目 非同期制御(Asynchronous Bit Bang mode)でビットバンモードを設定します。8bit I/Oは全て出力方向です。 ボーレートは9600bpsで十分な表示速度が得られます。38400bpsなど大きな値を設定すると表示は速くなりますが、LCDの表示特性上、一定以上のボーレートになると見た目の表示速度はほとんど変わりません。 17行目 LCDライブラリを使用するためにLcdCtrlクラスのオブジェクトを生成します。 第1引数には、FTDIオブジェクトを指定します。 第2引数には、LCDモジュールのデータ線4bitの割り当てを指定します。連続した4bitの最下位ビットを指定します。 第3引数には、LCDモジュールの制御線のうち、RS線の割り当てを指定します。 第4引数には、LCDモジュールの制御線のうち、E線の割り当てを指定します。 18行目 LCDモジュールを初期化します。 Init()は、いかなるLCD操作にも先駆けて実行してください。プログラム動作中、1回実行すれば十分です。 21-22行目 文字列を表示しています。 接続したLCDモジュールが16桁x2行タイプなので、PutStr()の引数は16文字までにします。 17文字以上の文字列を指定してもエラーではなく、17文字目以降は無視されます。 改行操作はないので、開発者がその都度表示位置を指定する必要があります。 25行目 後始末として、デバイスの8bit I/OのうちLCDモジュールの操作に使用した線をリセットします('0':Lowを出力)。 26行目 デバイスをクローズします。 |
Is8x2to16x1プロパティを設定する例 | ||
LcdCtrlクラスのIs8x2to16x1プロパティをtrueに設定し、「16x1(内部8x2)」タイプのLCDモジュールを操作する例です。
Is8x2to16x1プロパティをtrueに設定します。 true/falseどちらでも、設定すると表示位置は(0行, 0桁)にリセットされます。 23行目 連続で2行分の文字列を表示すると1行目の表示が確認できないので、キー入力待ちを入れています。 24行目 2回目の文字列表示です。LCDモジュールに2行目はないので、表示位置も1行目を指定します。 引数としては(0行, 0桁)の指定となります。 |
アプリ製作例 リソースモニタ | |||
「AVR-CDCにLCD/EEPROM操作機能を組み込む」で公開しているリソースモニタを移植しました。
|
◆ ◆ ◆ |
FT232Rモジュールの活用例として、マイコンなしでLCDモジュールを制御する方法を 紹介し、デモプログラムを示しました。また、その制御ライブラリを公開しました。 次回はビットバンモードを活用したAVRライターソフトを紹介します。 AVRマイコン、始めてみませんか? |
(C) 『昼夜逆転』工作室 | [トップページへ戻る] |