PICマイコンを使って測定ツールを作ってみよう(2) ―― クロック周波数やモータの回転数を測れるカウンタを作る(後編)

中西 紫朗

●スイッチ読み出しと液晶パネル表示の処理を理解する

 スイッチの読み出しでは,チャタリング防止回路などを通さずにそのまま読み取っています.前回の値を保持しており,現在読み取った値と違う場合,押したか離したかを判断します.メイン・ループの時間間隔がチャタリング除去には役立っています.

 黄色のタクト・スイッチを押すと,メニュー表示が昇順で順番に出てきます.反対に緑色のタクト・スイッチを押すと,逆順でメニューが表示されます.実行したいメニューが上の列に表示されたとき,中央の青色のタクト・スイッチを押せば,そのメニューが選択されます.いまはまだカウンタ機能しかないので,カウンタがでてきたら選択します.次回はRS-485モニタが追加される予定です.そのときは2つ選択できるようにして,これら以外の機能が選択されたときは"N/A"が表示されるようになります.

 液晶パネルの表示は,コマンドを使っての実行になります.コマンドを1回実行すると,短いものでも40μs待つ必要があり,けっこう無駄な待ち時間が生じます.液晶パネルの実行結果が読み出せるようにすれば,完了を待って割り込みを起こし,それまでの待ち時間をほかのタスクの実行に回せます.今回はそこまでやる必要がないので,ただ待つことにします.

 液晶パネルとのインターフェースには4ビット仕様と8ビット仕様があります.できるだけピン数を少なくしておかないとほかの機能に使えないので,ここでは4ビット仕様でいきます.8ビットの文字コードを2回に分けて送るわけです.送る8ビットはコマンドの場合とデータの場合があります.コマンドの場合はRS信号(PB3)に'0'を書くことで,コマンドを送付できます.実際にはRB4~RB7の4ビットに,高位ニブル(4ビット),低位ニブル(4ビット)と2回に分けて送ります.

 ここらへんの制御はLCDcontrol()関数を見ればよく分かります(リスト5).液晶コマンドには表1で示されたものがあります.もともとセイコーエプソンかどこかの文字表示液晶パネルをデッドコピーして作られたものが多く,コマンド定義はほとんど変わっていません.16文字2列液晶パネルでも,20文字4列大型液晶パネルでもコマンド体系は似ています.

リスト5 LCDcontrol()関数の記述(user.cの426~455行目)

void LCDcontrol(byte data)
{
              byte db;
 
              PORTBbits.RB3 = 0;
              db = data&0xF0;
              PORTB = db;                                   // set high niblle
              PORTBbits.RB2 = 1;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              PORTBbits.RB2 = 0;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              db = (data&0x0F)<<4;                   
              PORTB = db;                                   // Set low nibble
              PORTBbits.RB2 = 1;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              PORTBbits.RB2 = 0;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
              _asm NOP _endasm;
}

 

 


表1 8×2文字液晶パネルのコマンド・リスト

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日