昨日の課題の32ビットバイナリ表示 を何とかしようと試してみました。20桁のキャラクタLCDに32ビット分のバイナリ値を表示します。キースイッチで上位16ビットと下位16ビットを切り替えるとか、32ビットバイナル表示のときは2行に表示するとかが一般的かと思います。
でも、ちょっと思いついたトリッキーな方法で表示してみたら、それっぽく見えたのでこれにします。
普通の10進数表示です。まだ、符号付32ビット演算のみ。
16進数表示にするとこんな感じ。上位2バイトがゼロのときは非表示ですが、演算バイト数(byte, word, doubleword)を指定できるようにしたら、すべてのバイトを表示するようにするつもり。
そして、これが2進数の32ビット表示です。16ビットのときは通常の0/1文字を使いますが、32ビット表示時は一文字に2ビットを詰め込んでいます。
このLCDモジュールは、ユーザが表示文字を定義できる機能があるので一文字分に、バイナリ値2文字を定義したら行けるのでは? と思い試してみました。定義できるフォントサイズは8x5ドットなので、'01', '10', '11' はなんとかなりますが、'00'はドットが足りません。無理やり'00'間の縦棒を共有にして以下のように定義してみました。
byte bin00[8] = {
0b00000,
0b00000,
0b11111,
0b10101,
0b10101,
0b10101,
0b11111,
0b00000
};
これでもなんとか読めますね。
今日のところはここまで。
明日から連休なので多少は進捗するかと期待しています。台風が心配ですね。
0 件のコメント:
コメントを投稿