DDS VFO 用液晶表示キット (Model Num. TG-15060008)

  • ロータリーエンコーダが附属します
  • 消費電流 3mA
  • 電源は本体の DDS VFO から供給されます
  • 液晶のバックライト付き
バックライトの電源は別途配線が必要です (5V 30mA)
lcd_for_dds_vfo








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

特長:

低消費電流 3mA ( 電源は本体の DDS VFO キットから供給されます)
液晶のバックライト付き (別途 5V 30mA の電源が必要です)
本体の DDS VFO キットとの接続線は4本だけ (I2C通信)
本体の DDS VFO キットで使用するロータリーエンコーダと周波数可変ステップ切換スイッチなどが附属

キットの概要

本キットは、 DDS-VFO キットの拡張機能としてロータリーエンコーダを使用した場合の周波数を表示する液晶表示器のキットです。
DDS-VFO キットで使用するロータリーエンコーダと周波数可変ステップ切換用のスイッチと抵抗が附属します。

仕様:

通信方式:I2C (スレーブとして動作。スレーブアドレス 0xA0 )
電源電圧:3.2 V - 5.2 V の範囲で動作 (バックライト用電源は 5 V ± 0.2 V)
消費電流:typ. 3 mA (バックライト用電源は typ. 30 mA )

技術解説

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








   PIC16F1827
I2C の接続ケーブルは、長さ概ね1メートル以下であればデータの伝送が可能ですが、ケーブルからはデジタルノイズが発生しますので無線機などに組み込む場合は、出来るだけ最短距離となるように、また受信部のフロントエンドを避けて配線します。

電源電圧は、3.2V ~ 5.2V の範囲で動作します。(DDS VFO キットに接続する場合は 3.3 V で動作します)
3.2V 動作の場合、液晶表示器のコントラスト端子 (CNT) に対して負電位が必要となりますので、PIC マイコン PIC16F1827 の #15pin クロックアウト (2MHz) を利用して負側へ整流することにより、負の電圧を得ています。
schematic-diagram
wave-form









PIC16F1827 #15pin CLKOUT
液晶表示器のコントラスト端子に印可する電圧 Vo をボリューム VR0A0 で調整し、液晶画面の文字の濃さを合わせます。
本キットに3.3V を供給した場合、Vo は、約 -1.0V、5.0V を供給した場合は 約 +0.6V で文字の濃さが適正になります。

I2C 仕様の詳細
本キットの通信仕様は一般的なI2C プロトコルに準拠していますので、以下の仕様に従ってデータを伝送すれば本キット以外の機器でも使用することができます。

液晶表示器に対する初期化は、電源オン時に PIC マイコン PIC16F1827 が自動的に行いますので、I2C マスター側(DDS VFO キット)からは特に初期化コマンドを発行する必要はありません。
ただし、初期化が完了するまでに 200mSec 必要なので、I2C マスター側からのコマンド送信は 200mSec 以上待ってから行わないとコマンドの取りこぼしが発生します。

下図は、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 波形を示します。
最初の図は、DDS VFO キット (マスター側)から DDS VFO 用液晶表示キットのスレーブアドレス 0xA0 に対してコマンド 0xC0 を送ったときの波形です。

wave-form

マスター側はソフトウェアで I2C を構成し、クロック約 40 kHz でスレーブの液晶表示キットにデータを送っています。
データ (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) 返送しています。

(本キットのソフトウェアは非公開です)