液晶モジュールの使い方
過去にPIC16F886とCCSコンパイラを使用してオーディオ用の液晶表示器を製作しました。
コンパイラが有料のCCSだったのでフリー版のXC8用に書き直しました。
回路図
部品表
IC1: PIC16F1938
R1: 10KΩ
R2〜R5: 無し
R6: 10KΩ
VR1: 半固定 10KΩ
C1: 電解コンデンサ 100μF
C2: セラミックコンデンサ 0.1μF
C3: セラミックコンデンサ 0.1μF
C4: セラミックコンデンサ 0.1μF
Q1 赤外線リモコンモジュール ”PL-IRM0101”
ターミナルブロック(小) 2ピン 1個
3ピン 3個
ヘッダーピン
使用する赤外線リモコン受信モジュールは、ピン配列が左からデータ出力、GND、+5V です。
同じ仕様であれば使う事ができます。
ここで使用する液晶モジュールは、”HD44780コンパチブル”
白色抜き文字表示器 16x2行 です。
入力ピンが左上 1列に並んでいる物です。
秋月電子・アマゾン・AliExpress にて購入できます。
PIN割り当て
LCD以外を先にすべて取りつけてください。
LCDにヘッダーピンを取りつけます。
基板と並行になるように取りつけてください。
写真のようにならないよう注意してください・・・・・
書き込み端子がありますので、L型ヘッダーピンを取りつければそのまま書き込みができます。
赤外線リモコン受信モジュールからの信号をPICで処理する場合は
JP1を接続していください。
端子内容
使用するマイコンは「PIC16F1938」です。
テストプログラムはここ、HEXはここ 。
LCDを制御するプログラム(lcd_lib.c:lcd_lib)は、
後閑 哲也 (著) 「電子工作のための PIC16F1ファミリ活用ガイドブック」
にて公開されているプログラムを利用しています。詳しくは書籍を買って確認してください。
テストプログラムを書き込み電源DC+5Vを入れるとこのような表示でます。
半固定ボリュームを調整しないと表示が見えませんので半固定ボリュームをどちらかに回して
文字が表示されるように調整してください。
LCDを表示するには初期化を行い、文字列の先頭位置を指定してprintf文で表示する事ができます。
ただし、printf文で表示できるのは英数だけですので、'円’などの文字やカタカナはコマンドを使って
書き込みする必要があります。
この基板はシリアル通信の送受信と赤外線受光モジュールが装着できますので、PCなどからのシリアル通信を使った制御、
赤外線リモコンでの制御を行う事ができます。
今回の基板のシリアルの送信はデバック用扱いとしましたので、写真のように基板に半田付けして接続します。
ボーレートは19200bpsです。
今回のサンプルプログラムは2秒間隔でシリアル送信で文字列を出力し続けます。
printf文をLCD表示とシリアル通信で使う場合1文字出力の"putch"にて振り分けています。
CS3310を使った電子ボリュームの時製作したUARTのデータをLCDで表示するプログラムも
XC8に書き直しました。
http://cat0048.my.coocan.jp/CS3310/LCD-MAIN.htm
プログラムはここ、HEXはここ。
動作確認は”Tera Term”を起動して、ボーレートは19200bpsに設定してください。
送信したデータをわかりやすくする為、”ローカールエコー”に設定してください。
送信の改行コードは「CR」か「LF」のどちらか片方だけ設定してください。
LCDの1行目を変更する場合は、”L1:1234567890123456” と入力してリターンキーを押してください。
LCDの2行目を変更する場合は、”L2:ABCDEFGHIJKLMNOP” と入力してリターンキーを押してください。
マイコンで制御する時は、
printf("L1:1234567890123456\n"); //一行目表示
__delay_ms(8);
printf("L2:ABCDEFGHIJKLMNOP\n"); // 二行目表示
と、書くだけで変更できます。
オリジナルのキャラクタも表示出来ます。プログラムを参考にしてください。
プログラムはここ。
XHコネクタを取り付けられるように基板を変更しました。
(XHコネクタ ベース付ポスト トップ型 8P B8B-XH-A)
別基板のマイコンで液晶を制御したい場合に使用します。
基板に取り付けるのはXHコネクタと半固定ボリュームとコンデンサだけとなります。
XHコネクタのハーネスの作り方はここに書いています。
JST XHコネクタを使う (coocan.jp)
XHコネクタのピン配列は
1:RS(RB2), 2:E(RB3), 3:DB4(RB4), 4:DB5(RB5),5:DB6(RB6), 6:DB7(RB7), 7:+5V, 8:GND
となっています。