普段、マイコンとキャラクタディスプレイを接続するときには、配線数の少ない4-bit modeを採用しているので、4-bit modeでの初期化方法を書く。 8-bit modeでも2回に分けているのを1回で送信するだけでほとんど同じだが。。。
まず、このOLEDディスプレイを使うにあたって、一般のバックライト付きキャラクタディスプレイよりも電源ラインのノイズが多いことに注意しないといけない。ディスプレイの裏面を見ると昇圧用のDC-DCっぽいものが見える。ここでDC12V程度を発生させている。
電源ラインにはこのDC-DCからのノイズが混入してくるので、ディスプレイ基板のVss-Vdd間に追加で10uFのコンデンサを入れておいた。
Eピンはプルダウンしておいたほうがよいかも(内部でプルダウンされている?)
マイコンにはATtiny2313を使用し、ディスプレイの端子割り当ては以下のようになってる。
<LCD: AVR>
Vss: GND
Vdd: +5V
RS: PB5
R/W: GND
E: PB4
DB0-DB3: NC
DB4: PB0
DB5: PB1
DB6: PB2
DB7: PB3
ディスプレイにデータ、コマンドを送信するときは、DB4-DB7にデータをセットしてからEを立ちあげ250ns以上待ってからEを下げる。下げた後も250ns以上待つ。
データシートのRead/Write Characteristicsを見ると、Eの立下りエッジでDB0-DB7が読み込まれるようだ。
RSピンは文字データを送受信するときは1、コマンドを送信するときは0にする。
コマンドによっては実行するのに10ms近く掛かるものもあるので、ビジーフラグを使わない場合は注意する必要がある。
4-bit mode初期化手順は以下のとおり。
この中で幾つか記号が出てくるが、意味は次のようになっている。
N: 表示行数の設定。 0を設定すると1行、1を設定すると2行になる。今回は2行なので1。
F: 文字フォント設定。 通常は0にしておくらしい。。
FT1, FT0: フォントテーブルを選択する。 今回は00にした。
D: ディスプレイ表示のON/OFF設定。 1で表示ON、0で表示OFF。 1を設定。
C: カーソル設定。 1でカーソル表示あり、0でカーソル表示なし。 0を設定。
B: ブリンク設定。 1でカーソル点滅あり、0でカーソル点滅なし。 0を設定。
I/D: 文字の表示方向を設定。 1で左から右、0で右から左。 1を設定。
S/H: 文字書き込み時のシフト設定。 1でシフトあり、0でシフトなし。 0を設定。
マイコンの代わりにスイッチで初期化してみる動画を撮った。
バスの状態が目に見えるので分かりやすいかな?
以上。
0 件のコメント:
コメントを投稿