TOP>MPLAB XC8編(PIC16F887)> 液晶ディスプレイを使う(PIC16F887 XC8) 
液晶ディスプレイ(LCD)を使う
(PIC16F887 XC8)
| 更新日2012.5.20 | 
| 作成日2009.4.11 | 
	ここでは、MPLAB XC8で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桁目から再度表示します。
 
 
 
 | 
