2016-08-21 23:08 | カテゴリ:PIC応用回路
PICのソフトの製作を進めています。


今回も、使用法に慣れてきた、PIC用XC8のコンパイラーを使って、プログラミングを始めました。
小規模のプログラミングでは、適当にフローチャートをメモ書き程度に書いて、プログラミングを開始できるのですが、ある程度、実用を考えた、ちょっと複雑な仕様の処理をプログラムする場合は、かなり処理フローを考えて、詰めた上でプログラミングを始めないと、バグが出て収拾がつかないようになりがちです。
今回は、結構真剣にフローチャートを検討しました。
そのうえで、単独のデバッグが可能な部分に分けて、機能別にプログラムを進めることにしました。

まず、進めやすい、LCD関係です。
これまで、パラレル接続(4ビットモード)のLCDは使用経験がありましたので、その基本部分のプログラムを抜粋して、LCD画面のスクロール機能を製作しました。
今回のLCDは、20文字X4行表示で、入力するMIDIデータ、コマンドを、LCD画面に表示して、スクロールしつつ編集するしようとしますので、この機能が必要です。

SCRL01.jpg

SCRL02.jpg

SCRL03.jpg


続きは、、、

ダミーデータによる、スクロールの感じです。



これは、プログラムで1秒ごとにスクロースさせるように作りました。
確認の為です。

次に、ロータリーエンコーダ(秋月電子さんで以前に購入)を左右に回転させると、クリック毎にLCDの画面(下3行)がスクロールします。
普通、スクロールをプログラミングする場合、簡単な方法として、LCDのメモリーの内容を、1バイト読み出して、一行上か下へ書き出すという動作を繰り返します。
この方法だと、既に書いてある内容を意識しなくて、簡単です。

しかし、今回のLCDでこの方法を使用すると、問題がありそうです。
というのは、LCDは、データの読み書きにLCD内部のCPUの処理時間を考慮して、処理を待たされます。
前の処理が完了して、次の処理に入ります。
一文字ごとに、読みだし、書き込みを80文字分切り返すと、かなり時間がかかります。

そこで、今回は、PIC内部のデータを、メモリーに上書きする方法にしました。
こうすることで、80文字分を書き込むだけ(およそ半分の時間)で済みます。

動作の様子がこちらです。



実際、この様にプログラムしても、表示のスクロールは、なんとか実用的なレスポンスではありますが、「機敏」ではありません。(笑)

さて、実際にデータを入力する部分を製作していきます。
新規の行を挿入し、必要なコマンド、パラメータを指定していきます。
コマンド選択とパラメータ設定は、ロータリーエンコーダで、クリクリ回転させて行います。
キーボードから入力できれば簡単ですが、PICにPC用のキーボードを付けるだけでも結構大変なので、今回はこの方法に。

NewADD.jpg

結構、難しくて、紆余曲折がありましたが、なんとかこれで、任意のコマンドを入力できるところまで来ました。
次は、不要なコマンドの削除です。

これも同じような考え方で、削除する機能も付きました。
008行が削除されました。

SCRL08.jpg

DEL.jpg

DELETED.jpg


データは、PIC内蔵のEEPROMに記憶して、次回電源を入れると前回のデータをよびだして表示し、引き続いて作業できます。
そのために、データを新規追加したり、削除したりするたびに、EEPROMのデータも同時に編集されるようにしています。
ちなみに、PICの開発環境である、MPLABXには、PIC内蔵EEPROMのデータを表示する機能もあり、動作が確認できました。


【ジャンル】:趣味・実用 【テーマ】:電子工作
コメント(2)

管理者のみに表示する