« 7MHz RFユニット | メイン | 低周波信号発生器 »

2016年1月 1日 (金)

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セグの数値を表示させるコードを調査し、下記のように解析しました。

Ts147_segmap

このコード表をベースに7ケタの整数を表示するプログラムを作りました。数値以外に文字やドットがありますが、今回は使っていません。

Lcd1250disp

この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;
       }
  }

INDEXに戻る