===「LCD表示ライブラリー」===
PICのプログラムを組んで、検証するのに、LCDの表示が便利
です。秋月のSD1602というLCDを使ってますが、これを使うに
あたって、表示のためのライブラリーが必要です。
諸先輩のHPを参考に動かしていましたが、
使用ピンを変更したくて、あれこれやりました。
プログラムを見ると、
#define LCD_DATA PORTB
void lcd_write(unsigned char c){
__delay_us(40);
LCD_DATA = ( ( c >> 4 ) & 0x0F );
//上位4ビットを右に4回シフトしてRB0~RB3に書き込む
LCD_STROBE();
LCD_DATA = ( c & 0x0F );
//下位4ビットをRB0~RB3に書き込む
LCD_STROBE();
}
という項目があり、データをBレジスタで書き込んでいる
ようですので、ここを書き換えるといいはずでした。
プログラムでは、8ビットのデータを2回に分けてRB0~RB3
に書き込んでいるようでしたので、ここを変更すれば、
違う端子から書き込みができるはずでした。
ここを、RB4~RN7に変更すべく、
void lcd_write(unsigned char c){
// 送信データのバイト列上位4ビットを処理
RB4 = ( ( c >> 4 ) & 0x01 ) ;
RB5 = ( ( c >> 5 ) & 0x01 ) ;
RB6 = ( ( c >> 6 ) & 0x01 ) ;
RB7 = ( ( c >> 7 ) & 0x01 ) ;
LCD_STROBE() ;
// 送信データのバイト列下位4ビットを処理
RB4 = ( ( c ) & 0x01 ) ;
RB5 = ( ( c >> 1 ) & 0x01 ) ;
RB6 = ( ( c >> 2 ) & 0x01 ) ;
RB7 = ( ( c >> 3 ) & 0x01 ) ;
LCD_STROBE() ;
}
と変更してみましたが、うまくいきませんでした。考え方は、
これでいいみたいでしたが、ネットでくぐると、
別な方のHPに同じ考えのライブラリーが載ってました。
最初の#defineのところで、使用ポートを記述すればいいので、
便利だと思います。
今日も一つ勉強しました。
ライブラリー用に編集したものをここに掲載します。
ヘッダーファイルは、HITEC-Cのサンプルのを
そのまま使います。