○
入 力
Dポートの下位4ビットを入力とし、PD0にトグルスイッチを接続する。
入力は、
0 or 1 だが、0と1の間の中間の電圧が入力しないよう、入力端子はプルアップする。
基本的な操作は「出力」で説明したように
ポートC方向レジスタ(DDRC) の入力にしたいビットを「0」に、出力にするビットを「1」にする。
入力データはI/Oレジス
タの ポートC入力データレジスタ(PINC) から読み出す
<例>
PC0
= 0 の時 右側7セグメントLEDに ”L” と表示する
PC0 = 1
の時 左側7セグメントLEDに ”H” と表示する
右・左セグメントの切り替えはPNPトランジスタで行う
説明: 各LEDのアノードに接続されているトランジスタはPNPなので、
ベースが「0」のとき
エミッタ-ベース間にベース電流 I B が流れ、I C = h fe * I B
のコレクタ電流が流れる。
表示されるLEDはつながったPNP型トランジスタ2SA1015のベースが「0(ゼロ)」のもののみ。
PC06とPC1を交互に一方のみを「0」とすることで、左右のLEDに別の表示をさせることができる。
切り替えを高速に行えば、2つのLEDが同時に表示しているように見える。
7セグメントLEDのDatasheet
回路図 (次の回路図は入力部分に問題があります。詳しくは黒板で。正解は1つ下の回路図です)
正解はこちら
プ
ログラム
input.asm
(入力データにより分岐して処理)
input2.asm
input3.asm
○ チャ
タリング
入力として機械的スイッチを用いる場合の注意点としてチャタリングがあります。
機械接点が「OFF から ON」 あるいは 「ON から OFF」 に移行する時、機械的なバウンドを伴い
数回のON/OFF
を繰り返しながら移行する。
チャタリングを生じる時間は、授業で使用しているような
小型トグルスイッチ
や タクトスイッチ では 1 m sec. 以下といわれています。
この時間は人間にとっては一瞬であり、
チャタリングがあると
は認識できないが、1クロック125 n sec.
で動いているmega88では充分永い時間であり、何回もスイッチ操作があったと認
識することになります。
これがチャタリングです。
チャタリングの回避方法の詳細は、黒板で説明しますが、ソ
フトで行う方法の1つは、入力に変化が
あったときは、しばらくおいて再び入力を見て同じ入力の値だったらその値を「真」とする と
いうやり方。
○
7セグメントLED2個の同時表示
授業用に7セグメントLEDを2個用意しました。2個の同時表示の
方法は
1.Bポート 7ビット と Cポート 7ビット を出力に設定し 別々に駆動する
か
2.Bポート 7ビット を表示の駆動用に共通で使い、Cポートの2ビットを使って
表示するLEDをダイナミックに切り替える
でしょう。 ここでは、後者のダイナミック切り替えの方法を説明します。
回路図は上記と同じ
プログラム
outw7seg.asm 左のLEDに”H” を
右のLEDに”L” を表示する
説明: 各LEDのアノードに接続されているトランジスタはPNPなので、
ベースが「0」のとき
エミッタ-ベース間にベース電流 I B が流れ、I C = h fe * I B
のコレクタ電流が流れる。
表示されるLEDはつながったPNP型トランジスタ2SA1015のベースが「0(ゼロ)」のもののみ。
PC0とPC1を交互に一方のみを「0」とすることで、左右のLEDに別の表示をさせることができる。
切り替えを高速に
行うことで、2つのLEDが同時に表示しているように見える。
[課題2]