TOP > MPLAB C18編(PIC18F2320) > 液晶ディスプレイ(LCD)を使う(C18)

液晶ディスプレイ(LCD)を使う
(PIC18F2320)

更新日2009.7.12

ここでは、C言語(C18コンパイラ)を使って液晶ディスプレイ(LCD)を操作して見ます。
使う機種は、28ピンのPIC18F2320です。

実験回路
今回の実験回路はLCDだけを使ったシンプルなものです。
クロックは内部クロックを使いますのでレゾネータもありません。
LCDは、SD1602を使いましたが、SC1602でも互換があります。

ブレッドボードに組んだ状態
左上のピンヘッダ周りは、回路図には有りませんがICSP(In-Circuit Serial Programming)用です。秋月のPICライタなどを使う場合は不要です。

また、回路図の可変抵抗は、5.1KΩの固定抵抗にしています。コントラスト調整が必要であれば回路図通りにして下さい。

仕様

LCDの1行目と2行目に以下のような固定文字列を表示します。

PIC18F2320
MPLAB C18

クロックは、内部8MHzを使います。

プログラム

今回のプログラムはこちらです。

LCDの使い方については、液晶ディスプレイを使う(PIC16F84A)を参考にして下さい。
4ビットモード動作とし、LCDの動作完了はビジーフラグは使わずに時間待ちとしました。

プログラムの概要を以下に記載します。

config
#pragma config OSC = INTIO2

この設定により内部クロック動作とし、ピン9,10はOSCでは無く入出力ピン(RA6,7)として使用できます。

OSCCON
OSCCON = 0x72;

この設定で、内部クロック(8MHz)動作になります。

内部クロック動作時の周波数は、OSCCONのビット6〜4(IRCF2-0)で以下のように設定します。
IRCF2-0周波数
1118MHz
1104MHz
1012MHz
1001MHz
011500KHz
010250KHz
001125KHz
00031KHz
main
メインルーチンでは以下を行います。

・PICの初期化(オシレータの設定など)
・LCDの初期化(LCD_init)
・LCDに固定文字列表示(LCD_str)

LCD用関数
今回は必要最低限の関数のみ作成しましたが、色々用意しておくとLCDが扱い易くなります。
必要に応じて充実させて行く方法が良いと思います。

関 数概 要
static void LCD_str(char *);パラメータで指定した文字列をLCDの現在位置から出力する(文字列の最後はNull)
static void LCD_data(unsigned char);パラメータで指定した1バイトのデータをLCDに送信する
static void LCD_cmd(unsigned char);パラメータで指定した1バイトのコマンドをLCDに送信する
static void LCD_init(void);LCDを初期化する
static void LCD_send4(unsigned char);パラメータで指定した1バイトの上位4ビットのデータをLCDに送信する(LCDの初期化で使用)



動作させた状態。