PIC16F84電子遊戯(97) |
最終更新日:2003年3月8日 |
2CH ON・OFF装置を作ろう (1ページ)へ (2ページ) (3ページ)へ |
|
2CH ON・OFF装置のポート割付 |
ポート名 |
入出力 |
機能 |
RA0 |
OUT |
LCDモジュール(E) |
RA1 |
OUT |
LCDモジュール(RS) |
RA2 |
IN |
SW(ON/OFF) |
RA3 |
IN |
SW(CH1/CH2) |
RA4 |
IN |
SW(START/STOP) |
RB0 |
OUT |
CH1リレー駆動 |
RB1 |
OUT |
CH2リレー駆動 |
RB2 |
IN |
SW(UP) |
RB3 |
IN |
SW(DOWN) |
RB4 |
OUT |
LCDモジュール(DB4) |
RB5 |
OUT |
LCDモジュール(DB5) |
RB5 |
OUT |
LCDモジュール(DB6) |
RB7 |
OUT |
LCDモジュール(DB7) |
|
LCDモジュールはPICの製作記事によくあるのと同じ4bitデータモードで駆動します。
手続きは少し複雑ですが、ポート数が少なくで大変便利です。 |
2CH ON・OFF装置の時間精度 |
かなり突貫で作ったソフトのため、基準となる1秒タイマーが正確ではありません。
私の製作記事「99分タイマーを作ろう」にも記載しておりますが、1秒と考えている時間は正確には0.9984secとなります。
1秒間隔でON/OFFを繰り返したとして、1万回(2万秒)行うと正確な1秒のときより約32秒早く終わります。
この装置の用途から考えてこれくらいの誤差は良しとしておきましょう。
タイマー割り込みの詳細については後ページで公開するソースリストと「99分タイマーを作ろう」の記事を参照して下さい。 |
2CH ON・OFF装置のスイッチ操作 |
ポート数が限られているので、スイッチ操作には工夫(?)を凝らしています。
設定する時間は4ヶ所が可能です。次のようにスイッチを設定してUP/DOWNキーを押すことで時間を設定します。 |
ON/OFF |
CH1/CH2 |
設定 |
OFF |
OFF |
CH1,ON時間設定 |
ON |
OFF |
CH1,OFF時間設定 |
OFF |
ON |
CH2,ON時間設定 |
ON |
ON |
CH2,OFF時間設定 |
|
2CH ON・OFF装置のLCDモジュール駆動 |
今回のソフトはほとんどがキー操作の処理で難しいことはありませんが新しいことをしている部分のみ説明します。まずはLCDモジュールの駆動について簡単に説明します。 |
LCDモジュールの初期化 |
時間待ち |
DB4-DB7に3を設定 |
RSをLにする |
EをHにする |
EをLにする |
時間待ち |
DB4-DB7に3を設定 |
RSをLにする |
EをHにする |
EをLにする |
時間待ち |
DB4-DB7に3を設定 |
RSをLにする |
EをHにする |
EをLにする |
時間待ち |
DB4-DB7に2を設定 |
RSをLにする |
EをHにする |
EをLにする |
時間待ち |
コマンド(28h)出力:4bitモード、2行表示 |
コマンド(08h)出力:表示OFF |
コマンド(0ch)出力:表示ON |
コマンド(06h)出力:メモリ書き込みインクリメント |
|
LCDモジュールに対する初期化をきちんと行っておけばあとは指定のアドレスにキャラクタを書き込めばOKです。初期化のうち青色で示した部分はLCDモジュール内部を初期設定するものでLCDモジュールの仕様書の記載に従っています。 |
表示の基本手順は次の通りです。 |
表示の基本手順例 |
コマンド(01h)出力:表示全消去 |
コマンド(80h)出力:アドレス00を指定 |
データ(43h)出力:「C」を表示 |
以降表示データの出力を繰り返す |
|
表示データを書き込んだ後、アドレスは自動にインクリメントするように指定しているので、表示位置を飛ばさない限り、順に表示データ出力を繰り返せば表示が行われます。 |
LCDモジュールを駆動するにはコマンド出力とデータ出力で行います。
コマンド出力については上記の内容をおさえておけばOKです。
アドレスを指定するコマンドについては1行目が80h-8Fh、2行目がC0h-CFhです。
先頭アドレスを指定してデータを順に出力します。
データについてはアスキーコードで指定すればOKです。
(後ページで公開するソースを眺めて下さいね。) |
コマンド、データとも8bitデータですが、4bitで駆動していますので、データを2回に分けて出力する必要があります。簡単に手順を示します。 |
コマンドの制御 |
|
データの制御 |
上位4bitをDB4-DB7に出力 |
|
上位4bitをDB4-DB7に出力 |
RSをLにする |
|
RSをHにする |
EをHにする |
|
EをHにする |
EをLにする |
|
EをLにする |
下位4bitをDB4-DB7に出力 |
|
下位4bitをDB4-DB7に出力 |
RSをLにする |
|
RSをHにする |
EをHにする |
|
EをHにする |
EをLにする |
|
EをLにする |
時間待ち |
|
時間待ち |
|
コマンド制御とデータ制御の違いはRS端子のレベルだけです。その他は全く同じです。 |
LCDモジュールの駆動は一度理解してしまえば全く簡単です。
私も理解しましたので今後の製作にモジュール使う回数が増えるかもしれません。 |
ということで、今回はここまでとしましょう。 |
LCDモジュール表示の解説についてはこのHPのバイブルであります「電子工作のためのPIC活用ガイドブック:後閑哲也著」に詳しく説明されています。
私も参考にさせて頂いております。ありがとうございます。 |
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。 |
|
不明点などあればメールお願いいたします。nonchansoft@nifty.com |
|
|