CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

表示データデコード

7セグメントLEDのダイナミックドライブだと1個の7セグメントデコーダを各桁で使い回しできますがこのLCDパネルは桁によってアサインされているバックプレーンとセグメントがバラバラでLEDのように単純ではありません。
またLCDパネルからPICへの配線引き回しもジャンパが出ないよう最適化した結果、セグメントの物理位置と内部処理のビット位置の関係がぐちゃぐちゃになってしまっています。
そのためこれらの間の変換を行い、任意の桁に任意の数字を出すためにはちょっと処理が必要です。
 
先ず、全桁に同じ数字「00000000」、「11111111」・・・・を表示するためにはどのセグメントをONにするかを以下のようなテーブルから参照します
 
イメージ 1
 
次にその数字を点灯させたい桁だけ選択されるように以下のマスクを掛け合わせます
 
イメージ 2
 
この作業を全8桁分繰り返し、それらを全て論理和すると出力すべきセグメントデータが出来上がるのでこれをセグメントデータレジスタにセットします。
 
こうして表示させた例が以下で、これが制御可能な全セグメントになります。
 
イメージ 3
 
 
 
左端に妙な余裕がありますがここには制御不能で常時OFF状態のセグメントがあります。
一方、アラームとタイマーのアイコンは制御可能で、これが出るからブザーとリレーのハードウェアを用意したわけです。