Last Updated on 2014年5月19日 by kabekin
「FM-7に小型文字液晶を取り付けて遊ぶ方法」を忘れないようにメモっておきます。
HD44780のI/Oインタフェースはモトローラの68系用に設計されているということで、
FM-7やS1では制御信号のプログラミングは不要ということが分かりました。
文字液晶を初期化して、後はデータ用レジスタに文字をセットするだけで勝手に表示してくれます。
初期化方法のメモ
F-BASICのPOKEを使った場合、最長の5msWAITを入れなくても、誤動作しませんでした。
(いくらBASICとは言え、5msはかからないと思うので、一応WAITは入れておいた方が良さそうです)
今回は、簡単にこんな感じで試しています。
100 '+++VAL&EQU 110 CURPOS=0 'カーソルPOS 120 CMD=&HFDFE: DAT=&HFDFF 'clcd port (SC1602) 130 ' 140 '+++LCD INIT 150 POKE CMD,&H30: GOSUB350 '8bitモード 160 POKE CMD,&H30: GOSUB350 '8bitモード 170 POKE CMD,&H38: GOSUB350 '8bitモード&2ギョウ 180 POKE CMD,&H08 'text off 190 POKE CMD,&H0D 'text on&ブロックカーソル 200 POKE CMD,&H06 'カーソルset 210 POKE CMD,&H01 'cls&home 220 ' 230 '+++CHAR OUT 240 FOR I=0 TO 255 250 READ A$: H=VAL("&H"+A$) 260 IF H=&H04 THEN 320 '&H4=flexデリミタ 270 IF H=&H10 THEN IF CURPOS>16 THEN CURPOS=0: POKE CMD,&H80 :GOTO 310 275 IF H=&H10 THEN IF CURPOS<17 THEN CURPOS=17: POKE CMD,&HC0: GOTO 310 280 IF CURPOS=16 THEN POKE CMD,&HC0 '1ギョウメ 290 IF CURPOS=32 THEN CURPOS=0: POKE CMD,&H80 '0ギョウメ 300 PRINT CHR$(H);: POKE DAT,H: CURPOS=CURPOS+1 310 NEXT I 320 END 330 ' 340 '+++WAIT 350 FOR I=0 TO 10: NEXT I: RETURN 360 ' 370 '+++DATA 380 DATA 4B,41,42,45,4B,49,4E,28,B6,CD,DE,B7,DD,29,10,CC,DE,DB,B8,DE,20,46,4D,B0,37,04
垂れ流しで文字を表示する場合は、手動改行と17文字目で行目、33文字目で1行目の先頭に移動するだけでいい感じで動作します。
FLEXのアセンブラに移植しやすいように文字列のデリミタは$04にしています。
また、SC1602には改行が無いようなので$10を改行に見立てて270行目と280行目で改行します。
とりあえず、文字は表示できるようになったので安心^^;;
それにしても、拡張スロットを外部に取り出す基板の威力は絶大です。
オシロで信号を当たるのも楽々
もう一丁作ろうっかな~ それも蛇の目基板で・・・・
あまりにも簡単すぎて拍子抜けですが、何か見落としている可能性もあります。
問題なく動作しているので恐らく大丈夫だとは思うのですが・・・・
問題が発生したら、その都度考えながら弄ってみます^^;;;
次はType-EユニットとのI/O部の製作に取り掛かります
(ソフトはいつも後回し・・・・・・)