コマンドを送る
コマンドを送る関数は、次のようになります。col は現在の表示コラムアドレスで、61以下の場合CS1、以上の時CS2を有効にします。ただし、clear(クリア処理)のときは、CS1,CS2同時に有効にします。
void gLCD_Cmnd(int cmd)
{//コマンドライト
output_bit(E,0); // (E=0)
output_bit(RW,0); // (R/W=0)
output_bit(A0,0); // A0=0
if (col<61) { gCS1(); }
else { gCS2(); };
if(clear){gCS12();};
delay_us(1);
output_bit(E,1); // (E=1)
output_bit(DB7,bit_test(cmd,7));
output_bit(DB6,bit_test(cmd,6));
output_bit(DB5,bit_test(cmd,5));
output_bit(DB4,bit_test(cmd,4));
output_bit(DB3,bit_test(cmd,3));
output_bit(DB2,bit_test(cmd,2));
output_bit(DB1,bit_test(cmd,1));
output_bit(DB0,bit_test(cmd,0));
delay_us(1); //
output_bit(E,0); // (E=0)
//output_bit(RW,1); // (WR=1)
delay_us(1);
output_bit(CS1,1); //cs
output_bit(CS2,1);
output_bit(A0,1); // A0=1
output_bit(E,1); // E=1
delay_us(3);
}
文字(英数字、記号)表示
文字表示を行うには、予め、文字パターンを用意しておく必要があります。文字は8*8ビットパターンで用意します。以下は、文字コード20-2Fに対応するもじパターンの例です。
int8 const Font20[128]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x01,0x02,0x01,0x00,0x00, 0x3E,0x41,0x41,0x41,0x22,0x00,0x00,0x00,
0x10,0x74,0x1C,0x17,0x74,0x1C,0x17,0x04, 0x42,0x25,0x12,0x08,0x24,0x52,0x21,0x00,
0x60,0x56,0x49,0x4E,0x30,0x30,0x40,0x00, 0x00,0x00,0x00,0x04,0x03,0x01,0x00,0x00,
0x00,0x00,0x3E,0x41,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x41,0x3E,0x00,0x00,0x00,
0x00,0x22,0x14,0x7F,0x14,0x22,0x00,0x00, 0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x00,
0x00,0x00,0x80,0x60,0x20,0x00,0x00,0x00, 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,
0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00, 0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00 };
文字コードに対応する文字パターン8バイトが、pat[] 配列にある場合、これを rowページのcolアドレスから表示するには以下のようにします。
for (j=0;j<8;j++)
{ gLCD_Cmnd((0b10111000) | row); /* ページアドレスx */
gLCD_Cmnd(i); /* カラムアドレス */
gLCD_Data(pat[j]); /* pattern data */
col++; i++;
if (col==61) { i=0; gCS2(); }
}