16文字2行のLCDを使った表示器の回路図・部品表


CS3310より送られる音量データの表示を行うLCDと、
赤外線リモコン用の受光モジュールを搭載した基板です。






                                                  回路図




部品表
IC1      PIC16F886
R1      カーボン抵抗      10KΩ
R2      カーボン抵抗      100Ω
R3〜R5     NC              
R6      カーボン抵抗     10KΩ
C1      電解コンデンサ__100μF
C2〜C4   フィルムコンデンサ 0.1μF
VR1      半固定抵抗     10KΩ
Q1 赤外線リモコン受光モジュール   
X1 3Pターミナルブロック         
X2 3Pターミナルブロック         




LCDは秋月電子で販売されている、16文字2行 バックライト付白抜き を使用します。
ソケットは使用しません。
バックライトの電源供給用にヘッダーピンを2本をつけます。



まず基板には抵抗やコンデンサを先に取り付けてください。LCDを先に取り付けると抵抗やコンデンサを取り付けられなくなります。
100ΩはR2・R3のどちらでも構いません。



電解コンデンサ、赤外線受光モジュールを取り付けます。




LCDにヘッダーピンを付けてください。これを基板に取り付けます。



これで完成です。
ターミナルブロックは配線の取り外しを行わないのであれば付ける必要はありません。
端子に直接半田付けすればOKです。



ターミナルブロックを使用する場合は使用し易い面に取り付けてください。





マイコンを差込み電源をつなぎます。電源は+5Vの安定したものを供給してください、
電圧を間違えるとマイコン・LCDは簡単に壊れます


通電しても何も表示されませんので、精密ドライバーで半固定抵抗をどちらかに回してみてください。


以下のような表示が現れるはずです。ここまで出来ましたらCS3310の表示器としての作業は終了です。(写真がはめ込み合成みたいですが違います。)


この表示器は汎用性を持たせるため、マイコンもしくはPCからのシリアル信号(テキスト)を表示します。
パソコンに接続して動作させてみます。
接続には秋月電子で販売されている、「FT232RL USBシリアル変換モジュール」を使用します。
写真のモジュールは自作したプリント基板に載せて使いやすくしています。(基板がほしい人います?)





ハイパーターミナルで動作確認を行ってみます。(そろそろ他の通信ソフトに変えないと・・・・)
通信速度は'19200bps'です。フロー制御も無しにしてください。
そのままの設定では入力した内容が表示されませんので、プロパティで「ローカルエコーする」にしてください。




1行目を変更したいときは、’L1:xxxxxxxx’
2行目を変更したいときは、’L2:xxxxxxxxxxx'
と入力してエンターキー(改行コード)を押すと変更されます。




マイコンで使用するときは通信速度を’19200bps’にしてください。

プログラムでシリアル通信が出来る状態にして、

printf("L1: 1 gyoume \r\n");    一行目表示
delay_ms(8);
printf("L2: 2 gyoume \r\n");    二行目表示

(注:次の表示をすぐ行う時は、8ms程度のウエイトを入れてください。改行コードも忘れずに)

と書くだけでLCDに表示されます。

シリアル通信の使い方だけ知っていれば良いわけで、
数値などの面倒な変換もソフトの方が自動的にやってくれます。
桁あわせも、BCD→HEX、HEX→BCD、少数点以下の表示など簡単にできます。

CS3310制御での例

printf("L1: LEFT %3.1f dB \r\n",l_dbdata);
delay_ms(8);
printf("L2:*RIGHT %3.1f dB \r\n",r_dbdata);

プログラムはここ、HEXはここ

コンパイルにはCCSが必要です。あと、LCD表示のライブラリは
技術評論社 後閑 哲也著 「C言語によるPICプログラミング入門」で使用している、
”lcd_lib.c”も用意する必要があります。(CCS使っている人は持っていると思うけど)

UARTのプログラムもこの本に載っているソースを少し書き換えただけですけど・・・・、(作成に30分かかっていないような)
シリアル通信の場合、送信は簡単です。printf(”xxxx”);と書くだけですみます。
問題は受信でして、受信の場合2バイト程度なら特に問題はありませんが、長い文字列や他の処理を行っている途中での
シリアルからのデータ受信があった場合は少し面倒です、この場合は割り込みを使用します。
データ受信があると割り込みが入り、割り込み処理内で別のバッファに受信したデータを移します。
今回は改行コードがあった場合はフラグを立てて、メイン処理でLCDに文字列を表示しバッファのデータを消し次のデータを受け取ります。

プログラムの書き換えが出来るようにISP端子を付けておきました。
あと・・・、最初はキーボードや制御端子、20文字4行LCDを装備した基板を作成するつもりで「PIC16F886」を採用しました。
その基板を書き換えて今回の基板を作成したため、「PIC16F88」等でも十分なのに「PIC16F886」のままにしてしまいました・・・・。

基板の穴とLCDが少し重なる部分がありますので、ニッパーでLCDの基板をカットした方がいいかもしれません。


海外では信号端子が左上にあるタイプが良く使われているようなので、このタイプのLCDが使える基板の設計を行いました。


基板の変更といっても信号の並びが変わるだけです。


これもLCDを取り付ける前にすべての部品を取り付けます。


最後にLCDを取り付けて完成です。


LCDを固定するビス用の穴が開いていますが特別強度が必要でないなら、固定はヘッダーピンだけで十分です。
LCDが基板に僅かにあたらない程度の高さで半田付けを行います。



ソフトの変更はありません。


メインへ。