nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

ピポパ電話機用押しボタン(その3)

先駆者のコメントいただき、進行中です。

早速回路図と思って書き始めたが、先日作ったPIC16F1827
基板を流用したいという邪心が芽生えた。でどうなのかと
いうと、LCD接続をそのままにして、キーパッドを追加し
ようというのである。

現行の回路図です。

Wオンリーの現行LCDのスレーブにRはキー入力にしてしまお
うと言う計画です。(LCDのフル機能だとLCDからの読み出し
も必要だが、ここは割り切って)

イデアはこうです。D-G列はLCDのDB4-7につなぐ。A-Cはタ
クトスイッチのポートにつなぐという具合なんですが、うま
くいくのでしょうか。

D-Gを1ビットづつ下げて(0にして)、A-Cに0が現れるかを
センスする。
0がでないとキー入力は無し。
あったら、D-GとA-Cからキーコードを算出。
LCDへ制御信号を出しているときにキー押されるとどうするか。
D-Gを0にしたとき、A-Cのいずかが0ならば、押されている
からLCD制御が乱れちゃうため、EN出しやめ。

i2cのMSSP割り込みをどうハンドリングするか。LCD表示の
コマンドは2バイトペアでやってくる。キーポーリングはR
があったら、返すことにする。コードは0x30-0x39,0x2A
(米印はアスタリスクにする)、0x23として、長押しはビッ
ト7を立てる。上位でキーコードの変化無しを見ていても
良いのかもしれないが。

レジスタ指定の/Wがあった後、該当レジスタ内容を読み出
すためのリオープンでRになることを心配したが、そうい
うシーケンスはやめ、Wでレジスタ選択はやめて、Rであれ
ば無条件にキー状態返すという事にしたい。

この項続く(はず)