TOP>PICC Lite編(PIC16F887)> 液晶ディスプレイを使う(PIC16F887 PICC-Lite)
液晶ディスプレイ(LCD)を使う
(PIC16F887 PICC-Lite)
更新日2009.4.11
ここでは、PICC−LiteでLCD(液晶ディスプレイ)を使って見ます。
使用するPICは、40ピンのPIC16F887です。
実験回路
|
・ |
|
|
今回の実験回路です。
クロックは内部クロックで8MHzです。
LEDと直列の抵抗は、300〜800Ω程度の範囲で選択可能です。
-
-
| | これだけであれば、40ピンのPICを使う必要はありませんが、別目的の回路を作成する途中段階のためこのようになりました。
|
- ブレッドボードに組んだ状態
-
左上の6ピンヘッダ周りは、回路図には有りませんがICSP(In-Circuit Serial Programming)用です。秋月のPICライタなどを使う場合は不要です。
|
プログラム
|
|
LCDの使い方については、「液晶ディスプレイを使う」を参照して下さい。
LCDは4ビット動作とし、ビジーフラグは使わないで時間待ちにより動作完了を待ちます。
プログラムの各ブロックで行っている処理は以下通りです。
- main()
- PICの初期化(pic_init)とLCDの初期化(LCD_init)を行った後、LCDの1行目と2行目にそれぞれ16文字を0.5秒間隔で表示します。
同時に、RA0のLEDを0.5秒間隔で点滅させます。
- pic_init()
- PICの初期化処理を行います。
クロックを内部8MHzに設定し、使わないA/D変換を無効にして、RA0,RD2-7を出力に設定します。
- LCD_init()
- LCDの初期化を行います。
- LCD_cmd(unsigned char)
- LCDにコマンドを送ります。
コマンドは、引数で与えます。
- LCD_data(unsigned char)
- LCDに1バイトのデータを送ります。
データは、引数で与えます。
- LCD_send4(unsigned char)
- LCDに4ビットを送ります。
送るデータは引数で与え、上位4ビットを送信します。
- wait_50us()
- 50μS(マイクロ秒)待ちます。
LCD出力時の待ち時間として使います。
- wait_ms(unsigned char)
- 1mS(ミリ秒)×指定値だけ待ちます。
指定値は引数で与え、指定値の数だけwait_1msを呼び出します。
- 例えば、20mS待つ場合は、
- wait_ms(20);
と言うように使います。
- wait_1ms()
- 1mS(ミリ秒)待ちます。
wait_msで使用します。
逆アセンブルリストを参考にして、NOPの数とループ回数を決めています。
|
動作確認
|
|
- 動作させた状態です。
-
この写真は、2行16桁全て表示した瞬間です。
電源を投入すると、LCDはクリア状態からスタートし、1行目の1桁目から1文字ずつ0.5秒毎に順に表示し、2行目の16桁目まで表示すると(写真の状態)クリアして1行1桁目から再度表示します。
|