このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

LCDモジュールの接続

 TRNジュニアを拡張することでLCDモジュールを接続することができる。『トランジスタ技術SPECIAL No.29』の記事では日立製作所製「LM018L」(20文字×2行)の接続例が示されている。また、他には日立製作所製「LM016L」(16文字×2行)、シャープ製「LM162」(16文字×2行)なども接続できる。

 接続されたLCDには英数字・カタカナ・特殊文字などを表示できる。

LCDモジュール用のインターフェース回路

 新しく必要な部品は次の通りである。

  • 汎用ロジックIC
    • 74HCT04
    • 74HC20
    • 74HCT139
    • 74HCT245
  • 抵抗器
    • 560Ω
  • 半固定抵抗器
    • 100Ω
  • 14ピンコネクタ

 これらの汎用ロジックICはLCDモジュールだけでなく、他の拡張回路に必要になるものである。

 LCDモジュールを14芯のフラットケーブルで接続する。このケーブルは14芯フラットケーブルの両端に14芯のコネクタを圧着して作る。

接続と調整

1:配線後はTRNジュニアの電源を入れる。

2:LCD表示面の左側にカーソルが現れたらOK。もし画面が真っ黒あるいは真っ白ならば、V0調整用の半固定抵抗器を回して最適な状態になるように調整する。もし、ROM内のモニタプログラムをバージョン2に変更していた場合、LCDに「TRNJ MONITOR 2.0」という文字列が表示されるはずである。

LCDの初期化ルーチンの流れ

 ここで示す初期化ルーチンは最も基本的な設定である。

1:表示をクリアし、カーソルをホーム位置(左上)に戻す。

2:ファンクションセットにより、インタフェースデータ長を8ビット、表示行数を2行、文字フォントを5×7に設定する。

 これらの値を変更したければ、ドットマトリクス液晶表示コントローラドライバであるHD44780のインストラクション一覧表と比較しながら、レジスタAにセットする8ビット列の値を変更すればよい。

3:表示ON/OFFセットインストラクションにより、全表示=ON、カーソル表示=ON、カーソル位置の文字ブランク(点滅)=OFFとする。

4:エントリモードをインクリメント=ON、表示シフト=OFFに設定する。

実験

LCDに1文字を表示させる

 モニタプログラムがバージョン1ならば(バージョン2ならばここは通読して、後半を参照)、LCDの初期化は、拡張モニタの初期化ルーチンの中で自動的に行われている。そのときは改めてLCDを初期化することない。

 アキュムレータAのデータを液晶に表示するにはLQOUTファンクションを用いる。LQOUTファンクションのエントリアドレスは042AHである。そこで、次のような機械語(左側)を入力することで、すぐ「A」が表示されるはずである。

  1
  2
3E 41        LD A, 'A'
CD 2A 04    CALL 042A

[補足]これは『トランジスタ技術SPECIAL No.29』で例として提示されていたものだが、それには誤植がある。『トランジスタ技術SPECIAL No.29』では2行目が「CD 26 04」となっているが、正しくは「CD 2A 04」である。なお、記録するアドレスはE000H以降などにしておけばよい。 ◇

 実際の入力は次の通りである。

1:[E][0][0][0][ADR]と入力し、記録するアドレス値に移動する。

2:ここからマシン語を入力する。

  • [3][E][WRT]を入力する。
  • [4][1][WRT]を入力する。
  • [C][D][WRT]を入力する。
  • [2][A][WRT]を入力する。
  • [0][4][WRT]を入力する。

3:[E][0][0][0][ADR]を入力し、アドレス値を移動して、[INC]を押していき入力したマシン語が正しいかを確認する。

4:正しいことを確認したら、[E][0][0][0][ADR]を入力し、アドレス値を移動する。そして、[RUN]を入力する。

 モニタプログラムがバージョン2だと、LCDに自動的にすでに「TRNJ MONITOR 2.0」という文字列が表示されているはずである。

 さらにカーソルが表示されない。そのため、この状態で上記のようにエントリアドレス042AHをコールしても、うまくいかない(ここで自分はかなりはまった)。そこで、手動で初期化プログラムと同等のことを実行すればよいと思った。LCDの初期化プログラムのアセンブリコードは『トランジスタ技術SPECIAL No.29』のP74のリスト1に記載されているので、これを参考にしてハンドアセンブルした。

1:アドレス値をE000Hに移動して、次のリストの左側のマシン語を入力していく。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
                                ORG    0E000H
                                LQ_CTL    EQU    6AH
 
E000: 3E 01                     LD    A,00000001B    ;表示クリア、カーソルのホーム移動
E002: D3 6A                     OUT    (LQ_CTL),A
E004: 3E 38                     LD    A,00111000B    ;ファンクションのセット
E006: D3 6A                     OUT    (LQ_CTL),A
E008: 3E 0E                     LD    A,00001110B    ;ディスプレイをONにセット
E00A: D3 6A                     OUT    (LQ_CTL),A
E00C: 3E 06                     LD    A,00000110B    ;エントリモードをセット
E00E: D3 6A                     OUT    (LQ_CTL),A
E010: C9                        RET

[注意]RET命令がなくても最初は問題ない挙動を示すが、一旦LCD表示の実行後にまたE000Hを実行すると変なメッセージがLCDに残ってしまう。HALT命令でもよかったのだが、これだと7セグメントLEDが消灯し、次の入力には[RES]を押す必要がある。[RES]を押すと、LCDの画面には再び「TRNJ MONITOR 2.0」が表示されてうまく解決できない。

 入力後にアドレス値をE000Hに移動して、[RUN]する。すると、LCDにカーソルが表示されるはずである。

2:次に、アドレス値をE100Hに移動して、次のリストのマシン語を入力していく。

  1
  2
  3
  4
  5
                                ORG 0E100H
 
E100: 3E 41                     LD A, 'A'
E102: CD 2A 04                  CALL 042AH
E105: C9                        RET

 入力後にアドレス値をE100Hに移動して、[RUN]する。すると、LCDに「A」が表示されるはずである。

LCDに文字列を表示させる

 自分の所有しているTRNジュニアのモニタプログラムはバージョン2なので、1文字表示の実験のように手動でLCDのフォーマットプログラムを実行するのは約束事としておく。

 次のマシン語を入力すると「AKADMEIA」という文字列がLCDに表示される。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
                                ORG 0E100H
 
E100: 3E 41                     LD A, 'A'
E102: CD 2A 04                  CALL 042AH
E105: 3E 4B                     LD A, 'K'
E107: CD 2A 04                  CALL 042AH
E10A: 3E 41                     LD A, 'A'
E10C: CD 2A 04                  CALL 042AH
E10F: 3E 44                     LD A, 'D'
E111: CD 2A 04                  CALL 042AH
E114: 3E 4D                     LD A, 'M'
E116: CD 2A 04                  CALL 042AH
E119: 3E 45                     LD A, 'E'
E11B: CD 2A 04                  CALL 042AH
E11E: 3E 49                     LD A, 'I'
E120: CD 2A 04                  CALL 042AH
E123: 3E 41                     LD A, 'A'
E125: CD 2A 04                  CALL 042AH
E128: C9                        RET

[独り言]AKADEMEIAのスペルミスで「E」を入れ忘れた…。E表示のための命令を入れなおすとしたら、それ以降の命令がすべてずれてしまい、再入力が必要になってしまう。これは面倒に感じたので、このままにしておいた。 ◇

参考文献

  • 『トランジスタ技術SPECIAL No.29』