FM音源プログラム (23) -- LCD 表示 (1)

FM音源プログラムでは、LCD による表示と、タクトスイッチ入力を利用した、次のような設定・表示の機能があります。

  • 簡易 MIDI モニタ
  • MIDI 受信チャンネル割り当て
  • NRPN / RPN 表示
  • システム・エクスクルーシブ表示
  • システム設定 / CPU 負荷表示

LCD 表示は、音とは関係ないわけですから、処理に要する時間は極力抑えます。
通常は、LCD モジュールのビジー状態をチェックしてデータ転送を行いますが、ここでは、LCD モジュールへは出力オンリーとし、ビジーチェックは行っていません。
そして、グラフィック・ディスプレイのフレームバッファのように、RAM 上に LCD 表示バッファを設けています。
1 ms 周期で実行されるプログラムで、このバッファからデータを読み出し、2 行× 16 文字分のデータをLCD に順次、転送していきます。
LCD の E 信号は 2 ms 周期となり、4 ビットモードを使用しているので1文字分の転送には2回の転送サイクルが必要となります。
結局、2 行× 16 文字分のデータをすべてリフレッシュするためには、4 [ms] × 2 × (16 + 1) = 136 [ms] を要します。
16 + 1 の 「+1」 は、一行16文字分のデータ転送に先立って、「DDRAM address set」コマンドを発行するためのオーバーヘッドです。
メインの処理では、LCD の事は一切気にせず、RAM 上の領域にデータを書き込むだけです。
LCD へのデータ出力のポートと、スイッチ入力のポートは共用しているので、LCD 出力ルーチンでポートの入出力を切り替え、スイッチのオン/オフの状態を読み込んでいます。
また、CPU 負荷率の測定のための AD 変換もここで行っています。
「簡易 MIDI モニタ」では、いわゆる「光る鍵盤」方式での表示を行っています。
これは、

  • C の白鍵
  • C#, D#, F#, G#, A# の黒鍵
  • D, F, G, A の白鍵
  • E, B の白鍵

および、それぞれの「光った」状態の、合計 8 種のユーザー定義パターンを LCD に設定して使っています。