詳細準備中(2003/07/31)
PIC16F628と(Morphy Oneで使われる筈だった液晶モジュール)EPSON EG7014C-ASとの簡易接続
640*200ライン表示したあと、セルフリフレッシュモードへ入る。
(そうしないとチラついてよく見えない)
回路図
PICとの接続。半田付けヘタ:欝
PICはRAMが小さいのでとりあえず「2」だけ繰り返し表示。写真ヘタ:欝
プログラムの考え方:
基本的には
xscl , lp , yd をPORTAへ
xd[0..7]をPORTBへ定義しておく
MAIN_LOOP:
nline = 0 ;( 0〜199の縦ライン数 )
LOP0:
nchar = 0 ;( 0-79の横バイト数。これで8*80=640ドットになる。)
nline == 1 なら
xd[0..7]=0をPORTBへ出力
yd=1 , lp=0 , xscl=0 で PORTAへ出力
yd=1 , lp=1 , xscl=0 で PORTAへ出力
yd=1 , lp=0 , xscl=0 で PORTAへ出力
yd=0 , lp=0 , xscl=0 で PORTAへ出力
nline != 1 なら
xd[0..7]=0をPORTBへ出力
yd=0 , lp=1 , xscl=0 で PORTAへ出力
yd=0 , lp=0 , xscl=0 で PORTAへ出力
LOP1:
xd[0..7]にデータをセットして
yd=0 , lp=0 , xscl=1 で PORTAへ出力
yd=0 , lp=0 , xscl=0 で PORTAへ出力
nchar++ >= 80 までLOP1を繰り返す。
nline++ >= 200 までLOP0を繰り返す。
これで画面描写が終わったので以降はセルフリフレッシュモードに移る。
これは、上記ループのLOP1中のPORTA出力を行わないだけである。
(xsclのレベルをLで維持し、XSCLのパルスを止める。)
これでMAIN_LOOP:を繰り返す。
これにより、LCDは内部のデータで表示を保つ。(LPとYDのパルス出力は通常通り行わないと、表示がすぐ消える。)
なお、PIC16F628を20MHzで駆動しても、50μs<LP<125μsという条件をクリアするのは困難である。(一定の8ビットパターンだけを表示するだけ(=xd[0..7]を固定する)ならともかく。)が、1画面作ってセルフリフレッシュモードに入れば大丈夫の様である。
従って高速にリアルタイムで画面を変化させるのはPICの20MHzでは困難と思われる。