LCD4×20をH8BASICで制御
LCD2×16をH8BASICで制御 電子工作
H83048BASIC(i2cの制御) H83052BASIC
この度BASIC言語の繁栄を願い、できれば使いたいLCD4×20をAKI・H8/3052Fを3048F専用BASICコンパイラで作ってみました。
BASIC言語で駆動する SC2004CSLB 4行20列のLCDモジュールの表示ソフトを開発
H8/3052FでLCD4X20を駆動 | LCD2×16 Pin1カソード Pin2アノード LCD4×20 Pin1アノード Pin2カソード |
LCD接続回路はAKIH8のマザーボードと同じ、よって、R/Wは0V固定で、データは4ビットです。
LCDモジュールは何故だか、LCD2*16とLCD4*20は電源極性が違うので注意!!
私の場合おっちょこちょいな性格と分かっているので、転ばぬ先の杖でLCDモジュールの1番ピンと2番ピンに(+極にカソード
−極にアノード)LCDの表側にダイオードをハンダ付けしてLCDを保護して置きました、うっかり極性を間違えてもダイオードが
ショートしてLCDモジュールを破損から守ってくれます。
マザーボドにLCD2×16とLCD4×20の切り替えスイッチを付けているので、案の定LCD2×16とLCD4×20を差し替えたとき、
助かりました。
先ずは、単純に表示させる目的で作成したプログラムですが、文字表示だけでは、寂しいのでカウンターを表示させました。
カウンターリセット兼LCDクリアーをマザーボードのS1で行います。
特徴
LCDモジュールのインターフェイスを他のポートに移してもソフトでポートアドレスを合わせるだけで駆動できます。
GOSUB !INITLCDを実行すればLCDモジュールをコネクターから引っこ抜いて、再度差し込んでもちゃんと表示をすることです。
H8/3048F用BASICコンパイラーの CONSOLE と PRINT 命令ではできません、電源を入れ替えるまで二度と表示してくれません。
実際はコネクターから外すことは考えられませんが、ノイズ等でLCDがダメイジを受けても復帰できることは、メリットです。
プログラムの簡単な説明
L1$=”20字 ”:'L2$=”20字 ”:'L3$=”20字 ”:'L4$=”20字 ”のように4つのラインに20文字ずつ表示したい内容を
設定後、L1$からL4$を合成して、この80文字を表示させます。画面消去の場合も80文字分のブランクを表示することで行います。
命令は、GOSUB !INITLCD 初期設定 GOSUB !CLEAR 画面クリアー GOSUB !PUTLCD 画面表示 の3命令です。
'*******************************************************
' 4*20LCD制御 PGM=LCD80420 LCD DISPLAY Ver0
'*******************************************************
'********************** I/O PORT SET *******************
' PORT3 LCD表示出力
POKE &HFFFFC4,&HFF
PORT3=&HFFFFC6
' PORT4 S1とS2入力
POKE &HFFFFC5,&H00
POKE &HFFFFDA,&HFF
PORT4=&HFFFFC7
'*******************************************************
GOSUB !INITLCD
X=0
:!MAIN
' 12345678901234567890
L1$="***** LCD 4X20 *****" 'L1$に表示内容を設定
L2$=" PGM=LCD DISPLAY" 'L2$に表示内容を設定
L3$=" COUNT="+STR$(X) 'L3$に表示内容を設定
L4$="2011.10.30 SAKUSEI" 'L4$に表示内容を設定
GOSUB !INITLCD
GOSUB !PUTLCD 'L1$からL4$をLCDに表示
WAIT 1000 '約1秒毎にカウント
X=X+1 'カウントを加算
IF X>1000 THEN X=0 'カウントが1000を超えたら0に戻す
IF (255-PEEK(PORT4) AND 16)=16 THEN GOSUB !CLEAR:X=0:WAIT 3000 'S1オンで3秒間LCDクリアーとカウンター0にセット
if (255-PEEK(PORT4) and 32)=32 THEN GOTO !KEYWORD 'S2オンでキーワードを表示して停止
GOTO !MAIN
'*******************************************************
'-------------------------------------------------------
サブルーチン省略