nobcha23の日記

PICマイコンやArduinoを使う電子回路遊びを紹介します

今日は4ビットLCD接続のPIC制御についてごちょごちょと  LATA0命令

LCD制御の話に脱線し、もう少しプログラム上の工夫点などを書きます。
LCDとの接続はハンダ付けの手間とか、PICの使える信号線の数とかの要因で4ビット接続が一般的です。  
それで、4ビットとなるとどこかのポートに別な信号線と相乗りで割り当てることになります。  
ここで、PICのポートをHI-TECH CのIO命令がどう作用するかが課題になります。  

ちょっと前のPIC、たとえばPIC16F88などでやった場合ですが、4ビットをRA0-3に割り当て、RA6,7にRSとEを割り当てました。PORTAコマンドでデータ+RS+E遷移(H->L)を与えるためにLCD_STROBE()という関数を用意し、データとRSとEを混ぜ混ぜしてからPORTAコマンド発行してます。http://chitose6thplant.web.fc2.com/exp/i2c_slave/lcd_c.pdf  

これが最近の新4桁シリーズではポート制御命令がPORT命令とLAT命令の2つに分かれたので、こんな感じになります。
http://chitose6thplant.web.fc2.com/n_4digit/1822_rtc_clock/1822_rtc_main_c.pdf   
PIC16F1823を使い、RC2-5に4ビットを割り当て、RA0,1にE,RSを割り当てています。これはi2cのPCL,PDAポートがデフォールトでRA0,RA1を使うからです。それでこの場合ですが、データはPORTC命令で設定しておいて、RSとEはLATA0,1命令で1ビットずつ制御します。判りやすくなりました。PORTA命令とLATA*命令の違い(WRITEなら同じ)は該当PIC説明書の信号ポート機能の説明のところにあります。詳しくはPIC16F1933日本語マニュアル6章(85ページ)が良いのではないでしょうか。
http://www.microchip.jp/docs/41364B_JP.pdf



追記(2014.0530)
PICを16MHzにしたら間に合わなくてLCDによって表示不良が出ました。その対策がわかったので、報告しておきます。