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桁目から再度表示します。 
	
 
  |