LCD4×20をH8BASIC言語で制御

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
'*******************************************************
'-------------------------------------------------------
サブルーチン省略

旧JE1ANB趣味のページ