LCD-TS174をPICによりドライブ
<カテゴリー:PICマイコン>
「aitendo」という通販ショップで99円のLCDが売られていました。 その他の部品を含めてこのLCDを2個購入したのですが、仕様書はなし、有るのは、使用されているICの品名と、ATMELのチップ用デモソフトのみという物でした。
今、PICマイコンで正弦波発生器を作っていますが、この周波数表示にちょうど良さそうですので、このデモソフトをPIC用に書き換え、WEB上からダウンロードしたICの仕様書を基に周波数を表示させてみる事にしました。
使用するマイコンはPIC16F1827という8bitのマイコンです。 周波数表示ですので、マイコンのクロックは7.2MHzの水晶発振で、これをPLLで4倍とした28.8MHzのメインクロックとしてあります。
回路図 LCD_demo_schema.pdfをダウンロード
オリジナルのデモソフトをこの配線図に合わせてi/o変更をした上で、XC8でコンパイルできるように書き換えました。 オリジナルの仕様では、一旦LCD全画面をクリアーした後、左側から順番に各セグメントが点灯していきます。 これをヒントに7セグの数値を表示させるコードを調査し、下記のように解析しました。
このコード表をベースに7ケタの整数を表示するプログラムを作りました。数値以外に文字やドットがありますが、今回は使っていません。
このLCD用のICのクロックは3.3uS以上を要求していますので、余裕を見て約6uSくらいのクロックになるようディレーを入れてあります。 また、メイン関数の170行目にwhileで無限ループを作り、以下のプログラムは実行されないようにしてあります。 この170行目のwhile文をコメントアウトすると、オリジナルデモソフトが動作します。
また、プログラム上にはLEDが出てきますが、デバッグ用です。 さらに、RB0からの外部割込みの記述もありますが、このLCD表示については不要です。
PICkit3からHEXファイルを書き込もうとするとき、このICもVDDを5Vを指定するとエラーになります。4.875Vに設定すると問題無しです。
99円のLCDでも十分実用になります。 周波数のLCD表示が可能になりましたので、正弦波発生器のコントローラーを作る事にします。
ソースコード LCD_TS174BNLdemo.cをダウンロード
このオリジナルソースをベースにXC16でコンパイルしたところ、LCDのデータラインに信号が出ません。 色々調べた結果、下のLCD_Wr_Data()の関数の中で、
B=B>>7; の処理を追加しないと、現状のままでは、データをi/oポートへ送る事が出来ない事が判りました。 判ってしまえば当たり前の事で、いままで動いていたのが不思議なくらいです。
void LCD_Wr_Data(unsigned char Data,unsigned char cnt) {
unsigned char i,d,B;
d = Data; //Dataを一度ローカル変数に置き換える
for (i=0;i<cnt;i++) {
LCD_WR=0;
delayNop();
B=d & 0x80; //Dataと0x80とアンドを取った値を一度ローカル変数に置く
B=B>>7;
LCD_DA =B; //LCD_DA=Data & 0x80 ではうまくいかない
delayNop();
LCD_WR=1;
delayNop();
d = d<<1;
}
}