39ギター

35年ぶりに弾き始めたクラシックギター
神経痛と戦いながら
どこまでバッハに迫れるか
蝶も花もアーチェリーもあるよ

2to4ラインデコーダと8ビットシフトレジスタで4桁7セグメントの表示

2019-06-14 22:21:32 | 日記

こんばんは

 

カープ惨敗

情けないったらありゃしない・・・

だいたいカープ打線は波が大きいですよね

最近5試合の打率を見てもこれが1軍かというような惨めな状態です

10何連勝のしていた時の打率とは雲泥の差

ピッチャーが打たれ始めると途端に野手陣がはぶてだす、とは思いたくないんですが

いちど覇気のトーンが落ちるとどんどんドツボにはまってなかなか抜け出せない

プロだからそうは思いたくないんですが、人間ですからね・・・

色々と原因を並べてもパリーグが強いのは事実ですね

昨日の日ハムとの延長戦で疲れていたんでしょうが、日ハムか今日も勝っているしね

やはり投手力でしょう

ホームランを6人で7本も打たれているのは球に威力がないから、一本調子でタイミングが合わせやすい

コーナーを攻めればボールになるし、ストライクを取りに行けば真ん中に入りそれを打たれる

全部わかりきったことですよね

まあ、何度も言うようですが明日からまた気持ちを切り替えて頑張りましょう

 

 

電子工作

アマゾンで注文した中国製のLEDはまだ来ません

それが届いたら今のLEDと入れ替えてとりあえず点灯させてみようと、今の回路はそのまま温存しています

そのため新しい回路を組み立てようにも場所がなく我慢していましたが、今日は予備のブレッドボードの上でなんとか回路を組んで見ました

また4桁7セグメントですが、今回は2to4ラインデコーダ(TC74HC139)と8ビットシフトレジスタ(SN74HC595)を使っています

見た目では何もわかりませんが、左側がラインデコーダで右側がシフトレジスタ

シフトレジスタで1桁分のデータを流し、ラインデコーダでどの桁に表示するか決めています

ラインデコーダは2ビットの信号で4個のユニットのカソードの一つをLOWにします

シフトレジスタは8ビットのシリアルデータを流すとそれを8ビットパラレル信号を出します

プログラムはこんな感じ

各セグメントのON・OFFは二次元の配列にしてあります

最初の関数(sendSEGdata)でセグメントの信号を出力していますが、信号のHIGH・LOWは各配列の1または0と言うことなのでGPIOへは直接「data[i]==1」の真偽値を出しています

(いま気がつきましたが、data[i]だけでいいですね)

初めはif文を使ってごちゃごちゃしていたんですが、少しずつシェイプアップして効率良くなりました

ラインデコーダへの出力関数(sendDecorder)はユニット番号0〜3の1ビット目と2ビット目をアンドで抽出してこれをAとBの端子に直接出力しています

このラインデコーダは2ビット入力で4ビット出力なので4桁までですが、3to8を使うと3ビット入力で8ユニットまで使えます

さらにこのデコーダーをツリー状に重ねて使うとかなり多くのユニットを扱うことができます

シフトレジスタも芋づる式に並べると8ビット単位で何ビットでもパラレル信号を出せます

7セグメントでは8ビットあれば十分ですが、ドットマトリクスでは戦力になります

 

明日はちょっと泊まりがけで仕事をしてくるので次のブログ更新は日曜日の夜になります


次はセグメント専用のデコーダTC4511を使って見ます

SPIを使わずに直接ピンに信号を送るのでこっちの方がいいかもしれません

SPIを使う方がプログラムとしては面白いですけどね

できたらまた報告します