PIC16F84 で液晶表示器 SC1602BS*B の制御

■目次


■回路図

■使用部品

■プログラム

LCDモジュールには 8bit 通信モード 4bit通信モードがあるとのこと。
今回のプログラムは 4bit 通信モードです。
ピン位置を間違えると全然動かないのでご注意を。

さすがにコードが長いです・・・。
なるべくサブルーチン化してあるので、実はそんなに複雑ではないと思います。

ポートI/O設定
 ↓
LCD初期化
 ↓
「Hello」「World」交互表示ループ

流れとしてはこれだけです。 使い回しも結構簡単のはず。

16f84lcd.asm 5KB

 

■結果

Hello
  World(^_^)      ←こんな感じの表示になります

Hello と World(^_^) が交互に点滅します。
ちゃんと+5Vが配給できてないとうまく動かないようですな。

busyチェックは結局40μ秒待つだけなので、wait に置き換えても動きました。

開発に10時間くらいかかったような・・。
MOVWFと書くべきところ MOVF と書いていたり。
こういうバグなかなか見つからないんですよね。
でも勉強になりました。

 

■あとがき

今回は色々なHPを参考にさせていただきました。
特に
   JA1HHF  の4bit通信ソース
   PICな日曜日 の8bit通信ソース
に大変お世話になりました。補足説明多くて素晴らすぃ〜


さて、今回のプログラムのあちこちに

MOVLW	B'00100000' 	;4bit通信に
MOVWF PORTB
BSF E ;Eトグル ←ココ
BCF E ←ココ
CALL DLYS ;100usec Wait

このように E をトグルしてる場所があります。
データシート見た感じ
   「Eは周期的クロックかな?面倒・・」
と思っていたんですが 、ネット上のソースみても最後にEをトグルしてるだけ。
  「書き込みしたから反映してね」
という意味でEを立ち上げるだけで良さそうです。
自信ありませんが・・

今回は秋月電子で貰ったデータシートをとことん読みました。
ほんの些細なことでも、とても重要。
しかも英語。困った。
データシートの隅っこに書いてあったりします。
う〜ん・・・・理工系のマニュアルはこれだから怖い。


ま、これで液晶表示ができるようになったわけで。
書き込む文字もASCIIコードがそのまま使えるので、パソコンとRS232C通信して色々制御できそうです。
サーバ作ったときモニター代わりに液晶表示装置にしようかな、とか企んでます。

でもサーバ立ち上げる必要性があまりないんだよなー

戻る