キャラクタLCDの シリアルインタフェース化 [電子工作]
キャラクタLCDのシリアルインタフェース化
LCD8812Kのシリアル化を真似して、以前購入していたAitendoのキャラクタLCD DV16284をシリアルインタフェース化した。
電源以外の信号は、データ、クロック、ラッチの3本。LCD8812KのHC595によるシリアル化と同じ方法をとった。
改造方法
・DV16284のプラスチックハウジングをニッパーで適度に切り取る。
・ユニバーサル基板を40mmx23mmにカットする。(LCD裏に貼り付け出来るサイズ)
・SOPタイプのHC595をシール基板に半田付けしユニバーサル基板に両面テープで取り付ける
・1mm_14Pのフラットケーブルコネクタを基板に取り付ける。この時、端子がランドに当たるので、 絶縁シートを挟んでコネクタを基板に取り付ける
・LCDのコントラスト端子Voの最適値電圧を事前に求めて、固定抵抗値を決定。可変抵抗のままでも良い。
・回路図に従い結線。
・部品とFCケーブルが当たるので念のためケーブルをカプトンテープで補強
HC595のQBをRS信号としたので、HC595の遅延時間だけ、LCDのE信号を遅らせるつもりで、1素子ゲートHC1G32を2段使った。しかしこのゲートによる遅れは20ns程度でほとんど遅延対策にならなかった。規格外で動作したのか、このLCDにマージンがあるのか?。E信号直結でも使えるかもしれないが試していない。
バックライト無しでも十分見える。
SPI規格ではないが、HC595によるシリアル化したLCDライブラリを公開。
lcd_SPIlib.c
lcd_SPIlib.h
LCD8812Ktest.zipに含まれる
----------------------------------
LCD8812Kのシリアル化を真似して、以前購入していたAitendoのキャラクタLCD DV16284をシリアルインタフェース化した。
電源以外の信号は、データ、クロック、ラッチの3本。LCD8812KのHC595によるシリアル化と同じ方法をとった。
改造方法
・DV16284のプラスチックハウジングをニッパーで適度に切り取る。
・ユニバーサル基板を40mmx23mmにカットする。(LCD裏に貼り付け出来るサイズ)
・SOPタイプのHC595をシール基板に半田付けしユニバーサル基板に両面テープで取り付ける
・1mm_14Pのフラットケーブルコネクタを基板に取り付ける。この時、端子がランドに当たるので、 絶縁シートを挟んでコネクタを基板に取り付ける
・LCDのコントラスト端子Voの最適値電圧を事前に求めて、固定抵抗値を決定。可変抵抗のままでも良い。
・回路図に従い結線。
・部品とFCケーブルが当たるので念のためケーブルをカプトンテープで補強
HC595のQBをRS信号としたので、HC595の遅延時間だけ、LCDのE信号を遅らせるつもりで、1素子ゲートHC1G32を2段使った。しかしこのゲートによる遅れは20ns程度でほとんど遅延対策にならなかった。規格外で動作したのか、このLCDにマージンがあるのか?。E信号直結でも使えるかもしれないが試していない。
バックライト無しでも十分見える。
SPI規格ではないが、HC595によるシリアル化したLCDライブラリを公開。
lcd_SPIlib.c
lcd_SPIlib.h
LCD8812Ktest.zipに含まれる
----------------------------------
LCD8812K4-01 解析 [LCD]
LCD8812K4-01 解析
Aitendoから安価な液晶モジュールLCD8812K4-01を購入した。(現在、在庫切れ)
コントローラはHT1621なので、セグメントの位置関係を解析した。7セグLCDとして使えそうなので、追加購入をしようとしたが、現在は在庫切れとなっており残念でした。解析結果をメモ代わりに記録する。
下部エリアには16文字5x7ドットのキャラクタLCDが付いている。HT1621がシリアルなので、キャラクタLCDもシリアルにすることにした。
LCD基板に片面ユニバーサル基板をカットして両面テープで貼り付け、手持ちのHC595(シフトレジスタ)をユニバーサル基板のランドに載せた。FCケーブルと同じ信号がサイドのスルーホールから出ている
回路図
HC595のリードは、ユニバーサル基板のランドに半田出来る程度にカットする。基板のホールは使わない。RS(コマンド/データ切り替え)信号もHC595経由にしたので、LCDのE信号を(RSセットアップ時間+HC595遅延時間)だけ遅らせるため、デジトラを2段使って時間を稼いだ。遅延を測定した所、1.5usと思いのほか遅いが特に問題無し。
LCD8812Kのセグメントを解析した。
表示例27-8 アドレス27番地、セグメントCOM0(8)
HT1621のインタフェースはアドレスはMSBから送るのに、データ部はCOM0から送る事になっている。PICによるシリアル化の制御の都合上、COM0を8,COM3を1とした。
Excelにアドレス/セグメントをまとめた。
7セグのアドレス関係がばらばらなので、アドレス対応表を作る必要があった。 5x7ドットのキャラクタLCDは8キャラx2列であった。
評価回路
見えにくいセグメントがある。 消費電流約40mA(ほとんどがバックライトLED)
PIC16F1827によるLCD8812Kデモプログラム
MPLABX v3.51 XC8 v1.40
下記4信号で、HT1621とキャラクタLCDを制御する。
#define RCK PORTAbits.RA7 //595 :RCK ,E
#define CS PORTAbits.RA6 //HT1621 :CS
#define WR PORTBbits.RB7
#define DT PORTBbits.RB6
デバック中の関数や未使用の関数が残っているが、PIC16F1827向けプログラムをそのまま公開。バグはごめんなさい。
"HTLCD_lib.c" HT1621関数
"lcd_SPIlib.c" HC595シリアル化キャラクタLCD関数
LCD8812Ktest.zip
------------------------------------
Aitendoから安価な液晶モジュールLCD8812K4-01を購入した。(現在、在庫切れ)
コントローラはHT1621なので、セグメントの位置関係を解析した。7セグLCDとして使えそうなので、追加購入をしようとしたが、現在は在庫切れとなっており残念でした。解析結果をメモ代わりに記録する。
下部エリアには16文字5x7ドットのキャラクタLCDが付いている。HT1621がシリアルなので、キャラクタLCDもシリアルにすることにした。
LCD基板に片面ユニバーサル基板をカットして両面テープで貼り付け、手持ちのHC595(シフトレジスタ)をユニバーサル基板のランドに載せた。FCケーブルと同じ信号がサイドのスルーホールから出ている
回路図
HC595のリードは、ユニバーサル基板のランドに半田出来る程度にカットする。基板のホールは使わない。RS(コマンド/データ切り替え)信号もHC595経由にしたので、LCDのE信号を(RSセットアップ時間+HC595遅延時間)だけ遅らせるため、デジトラを2段使って時間を稼いだ。遅延を測定した所、1.5usと思いのほか遅いが特に問題無し。
LCD8812Kのセグメントを解析した。
表示例27-8 アドレス27番地、セグメントCOM0(8)
HT1621のインタフェースはアドレスはMSBから送るのに、データ部はCOM0から送る事になっている。PICによるシリアル化の制御の都合上、COM0を8,COM3を1とした。
Excelにアドレス/セグメントをまとめた。
7セグのアドレス関係がばらばらなので、アドレス対応表を作る必要があった。 5x7ドットのキャラクタLCDは8キャラx2列であった。
評価回路
見えにくいセグメントがある。 消費電流約40mA(ほとんどがバックライトLED)
PIC16F1827によるLCD8812Kデモプログラム
ダウンロードは🎥こちら
MPLABX v3.51 XC8 v1.40
下記4信号で、HT1621とキャラクタLCDを制御する。
#define RCK PORTAbits.RA7 //595 :RCK ,E
#define CS PORTAbits.RA6 //HT1621 :CS
#define WR PORTBbits.RB7
#define DT PORTBbits.RB6
デバック中の関数や未使用の関数が残っているが、PIC16F1827向けプログラムをそのまま公開。バグはごめんなさい。
"HTLCD_lib.c" HT1621関数
"lcd_SPIlib.c" HC595シリアル化キャラクタLCD関数
LCD8812Ktest.zip
------------------------------------