LCDのコントロール
液晶コントロールは2行16文字表示が最も普及しています。このタイプは安価で手に入り易く、消費電力もわずかでアマチュアにとってすこぶる便利なデバイス(モジュール)です。
秋葉原で最も安価な物は1000円程度で売られており、ジャンク屋をのぞくと驚きの値段で出回っています。ただ半田付けを外した物で、古い物は視野角度の狭い物もあるのであまり安いのはどうかと思います。
消費電流はノーマル5V動作で0.35mA程度です。PICの節電効果と組み合わせるとかなり使い道の広いデバイスです。
このLCDをコントロールするプログラムは定番化され出回っていますが、モジュールからDATAを読み出さなければI/O線を1本節約出来ます。下のプログラムがR/W線を常時[L]として動作させている物です。
ビジー信号は通常40μSの待ち時間なので、これを入れれば動作します(クリアなど1.64mSecと多いので注意)。
PICの18ピン系
I/Oが少ないので使い難いのですが、LCDのコントロールで1本でも減ればその分余裕が出来ます(わずか一本ですが!)。
[Enable]をLにすればDATAの4本は使え、また[RS]さえ共用出来ます。他に、LCDのDATA入力線のインピーダンスが高いのを利用すると、併用して別の事にも利用可能です。あまり複合的に利用すると後で解り難くなるので、28ピンや40ピンを考えた方がベターかも知れません。
テクニックに頼るのよりメモリの量で処理した方がFBな時代になっています。特定の人以外は解らないプログラムはあっても使えません・・・。
ここで使った考え方はavrでも同じように作動しています、今回の物はそちらから移植しました。
当初このプログラムは動かず慌てました。後でわかったことですが「LCDへの結線ミス」と単純ミスが原因でした。2007/FEB/7
LCDのE信号は220nSの幅が必要です。10MHzでは1サイクル400nSで問題はないのですが、20MHzのICでは1サイクル200nSになるのでWAITが必要です、このパルスの間にNOPコマンドの追加が必要になります。
当然4MHz・1MHzでも時間調整すれば作動するはずです、念の為。2007/FEB/10----- プログラム -----
;---------------------------------------- ; 液晶表示器 ; PORTA=LCD_RS,LCD_E ; PORTB=B4-B7 ; sub: TIME100=100mSec ; TIME1M=1mSec TIME5M=5mSec ;---------------------------------------- ;**** データ表示 **** LCD_DATA MOVWF TEMP ; ANDLW 0F0H ;上位4ビット取出し MOVWF PORTB BSF PORTA,LCD_RS ;RS GOTO LCD_C2 ;**** コマンド ***** LCD_CMD MOVWF TEMP ANDLW 0F0H ;上位4ビット MOVWF PORTB BCF PORTA,LCD_RS LCD_C2 BSF PORTA,LCD_E BCF PORTA,LCD_E SWAPF TEMP,W ;下位4ビット ANDLW 0F0H MOVWF PORTB ;出力 BSF PORTA,LCD_E BCF PORTA,LCD_E CALL TIME100 ;Wait 40uS over BCF PORTA,LCD_RS RETURN ;**** 表示クリア **** LCD_CLR MOVLW 0x01 ;clear command CALL LCD_CMD call TIME1M ;*1.64mS over call TIME1M ; RETURN ;**** LCD 初期化 ***** LCD_INI CALL TIME5M ;5m sec*3 CALL TIME5M CALL TIME5M MOVLW 030H ;Function set 8bits mode MOVWF PORTB BCF PORTA,LCD_RS BSF PORTA,LCD_E ;E 220nSec over BCF PORTA,LCD_E CALL TIME5M MOVLW 020H ;Function set 4bits mode MOVWF PORTB ; BCF PORTA,LCD_RS ;RS BSF PORTA,LCD_E BCF PORTA,LCD_E CALL TIME100 MOVLW 28H ;*2 Lines CALL LCD_CMD MOVLW 0CH ;Display on D=1 C=B=0 CALL LCD_CMD MOVLW 06H ;Entry I/D=1 S=0 CALL LCD_CMD RETURN
もどる [MAIN MENU]