TG-40 用液晶表示キット (Model Num. TG-40221012)

  • ブルーバックライト・白文字液晶
  • 消費電流 8mA (typ.)
  • I2C 伝送なのでリード線4本で接続可能
lcd_for_tg-40








 税込価格 \4,300      ご購入はこちらから
製作資料を見る:    製作マニュアル        回路図       

キットの概要

本キットは、7MHz QRP CW トランシーバ・キット TG-40 に接続して周波数を表示する液晶表示器のキットです。
低消費電流でありながら、ブルーの美しいバックライトにより TG-40 の運用周波数を白文字できれいに表示します。
本体の TG-40 との接続は、I2C 伝送方式なので接続線はわずか4本だけです。

仕様:

通信方式:I2C (スレーブとして動作。スレーブアドレス 0xA0 )
電源電圧:5.0 V ± 0.3 V
消費電流:typ. 8 mA (バックライト用電源含む )

技術解説

本キットは、PIC マイコン PIC16F1827 を使用し、内蔵の MSSP (Master Syncronous Serial Port) モジュールで I2C スレーブとして動作します。
pic16f1827








   PIC16F1827
I2C の接続ケーブルは、長さ概ね1メートル以下であればデータの伝送が可能ですが、ケーブルからはデジタルノイズが発生しますので TG-40 に組み込む場合は、出来るだけ最短距離となるように、また受信部のフロントエンドを避けて配線します。
なお、受信部へのノイズの飛び込みを極力抑えるため、周波数を可変させたときだけ I2C ラインにデータが流れるようになっています。

tg-40_lcd_wiring







   液晶表示キットの接続線は、
                   出来るだけ最短距離で配線する

液晶表示器のコントラスト電圧 Vo は、PIC マイコン PIC16F1827 の #15pin クロックアウト (2MHz) を整流して CNT 端子に与えています。
schematic-diagram
wave-form









PIC16F1827 #15pin CLKOUT
液晶表示器のコントラスト端子に印可する電圧 Vo をボリューム VR0A0 で調整し、液晶画面の文字の濃さを合わせます。


I2C 仕様の詳細
本キットの通信仕様は一般的なI2C プロトコルに準拠しています。

液晶表示器に対する初期化は、電源オン時に PIC マイコン PIC16F1827 が自動的に行いますので、I2C マスター側 (TG-40 )からは特に初期化コマンドを発行していません。

下図は、I2C マスター側からスレーブ側(液晶表示器)に送信するプロトコルです。
コマンド 0xC0 を送る場合とテキスト文字 "8" (アスキーコード 0x38) を送る場合を示しています。

マスター側からスタートコンディションSを発行し、続いてスレーブアドレス (0xA0) 、コントロールバイト、データバイトの順に送信して最後にストップコンディションPを発行して送信終了となります。
スタートコンディションは、SCL が High のときに SDA が Low になることによってスレーブ側に今からI2Cでデータを送ることを通知します。
ストップコンディションは、SCL が High のときに SDA が High になることによってスレーブ側がI2C通信の終了を検知します。



データは正論理で MSB から送信され、SCL の立上りでスレーブ側にラッチされます。
スレーブアドレス、コントロールバイト、データバイト ともに 8bit ですが、8bitづつの送信の終わりのたびにスレーブ側から ACK(Acknowledgement) または NACK (Not acknowlegement)が返ってきますので、マスター側は ACK / NACK の分も含めて SCL を9クロックづつ発生させる必要があります。
ACK は負論理なので 0 で ACK、1で NACK です。
スレーブは、正常に 8bit が受信できれば、ACK を返し、なんらかの理由で正常に 8bit 受信できなければマスターへ NACK を返します。

コントロールバイトが 0x00 の場合、次に続くデータバイトはコマンドを表し、コントロールバイトが 0x80 の場合は、
次に続くデータバイトはデータを表しますので、このデータをアスキー文字データとして扱えば、液晶に文字を表示することができます。

本キットで使用しているコマンドは以下の通りです。

0x8n:文字の表示位置は1行目 (上の行) の左から n+1 番目
0xCn:文字の表示位置は2行目 (下の行) の左から n+1 番目
0x01:文字を全消去、カーソルは一番左上に戻る

例えば、1行目の2文字目に文字を表示させたい場合は、0x81、16文字目に文字を表示させたい場合は、0x8F を送ります。
2行目も同様に2文字目なら 0xC1、16文字目なら 0xCF となります。

例:2行目の2文字目に8 (アスキー文字データ 0x38) を表示させたい場合

マスター側から

S 0xA0 0x00 0xC1 P

と送ってから続いて

S 0xA0 0x80 0x38 P

と送ります。

この状態で次にコマンドを送らずに文字データのみ送ると8の右側に文字が追加されます。
例えば2行目の2文字目から89と表示させたい場合は、(9はアスキー文字データ 0x39)

S 0xA0 0x00 0xC1 P S 0xA0 0x80 0x38 P S 0xA0 0x80 0x39 P

なお、マスター側のプログラムでこの「S 0xA0 0x80 文字データ P」の部分を1文字送信関数としてプログラムし、この関数を標準関数 putch として定義しておけば printf("89"); とするだけで液晶に表示出来るようになります。

実際の I2C 波形を示します。
最初の図は、マスター側から液晶表示キットのスレーブアドレス 0xA0 に対してコマンド 0xC0 を送ったときの波形です。

wave-form

データ (SDA High で 1, Low で 0 ) は MSB から送信され、スレーブはクロックの立上りでデータをラッチします。
最初、スタートコンディション S が発行され、続いてアドレス0xA0 (10100000)、次のデータがコマンドであることを示す 0x00、そしてコマンド 0xC0 (11000000) が送られてストップコンディション P で終わっています。
スレーブである液晶表示キットは正常にコマンドを受取り、マスターに対して ACK 応答 (9クロック目の SDA が Low) しています。

次の図は、マスターが液晶表示キットへスレーブアドレス 0xB0 を送ってからコマンド 0xC0 を送ったときの波形です。

wave-form

この場合は、アドレスが不一致となり液晶表示キットは、データを受信でないためマスターへ NACK (9クロック目の SDA が High) 返送しています。