I2C LCD AQM0802Aの表示は、基本的にPIC12F1822の場合と同じですが、PIC16F1827は、MSSPモジュールを2個内蔵していますので、SSP1とSSP2のどちらを使うのか指定する必要があります。
今回は、SSP1を使いますので、I2Cの初期化は、
void I2C_init(){
SSP1CON1 = 0x28; //I2C Master Mode
SSP1STATbits.SMP = 1; //標準速度)100KHz)
SSP1ADD = 0x4F;
}
とし、スタートコンディションは、
void I2C_start(){
SSP1CON2bits.SEN = 1;
while(SSP1CON2bits.SEN);
}
ストップコンディションは
void I2C_stop(){
SSP1IF = 0;
SSP1CON2bits.PEN = 1;
while(SSP1CON2bits.PEN);
SSP1IF = 0;
}
I2Cへの8bitdataの送信は
void I2C_write(unsigned char dat){
SSP1IF = 0;
SSP1BUF = dat;
while(!SSP1IF);
}
となります。
LCD関係の関数は同じです。
回路図です。プルアップ抵抗は、AQM0802Aモジュールに内蔵されていますので、つけていません。