↑漢字じゃないと、雰囲気でないな。(想像力を鍛えればいいのだ!)
ようやく、LCDを動かすところまで到達しました。
案外、サンプルがネットで見つからなかったのでとりあえずのプログラムです。
秋月のsc1602bs*bというやつ、sh7125をGDLにて。
ピン配置は、こんな感じ↓
#define lcd_rs PE.DRL.BIT.B9
#define lcd_rw PE.DRL.BIT.B10
#define lcd_en PE.DRL.BIT.B11
#define lcd_db4 PE.DRL.BIT.B12
#define lcd_db5 PE.DRL.BIT.B13
#define lcd_db6 PE.DRL.BIT.B14
#define lcd_db7 PE.DRL.BIT.B15
こんな感じで初期化↓1msecのwaitと16usec(たぶん)のwaitでやります。
/*----------------------------------*/
/* Enable処理 */
/* Data入力 */
/*----------------------------------*/
void lcdEnable(unsigned char d)
{
lcd_en = 0;
lcd_rs = ( d >>5 ) & 0x01;
lcd_rw = ( d >>4 ) & 0x01;
lcd_db7 = ( d >>3 ) & 0x01;
lcd_db6 = ( d >>2 ) & 0x01;
lcd_db5 = ( d >>1 ) & 0x01;
lcd_db4 = ( d ) & 0x01;
wait16(1);
lcd_en = 1;
wait16(1);
lcd_en = 0;
}
/*----------------------------------*/
/* LCD初期化処理 */
/* */
/*----------------------------------*/
void initLcd(void)
{
wait(16);//電源直後、安定まで待つ
lcd_en=0;
lcd_rs=0;
lcd_rw=0;
/*8bit_mode*/
lcdEnable(0x03);
wait(5);
lcdEnable(0x03);
wait16(10);
lcdEnable(0x03);
wait16(5);
/*4bit_mode*/
lcdEnable(0x02);
wait16(5);
/*2行mode*/
lcdEnable(0x02);
lcdEnable(0x08);
wait16(5);
/*off*/
lcdEnable(0x00);
lcdEnable(0x08);
wait16(5);
/*clear*/
lcdEnable(0x00);
lcdEnable(0x01);
wait(2);
/*entry*/
lcdEnable(0x00);
lcdEnable(0x06);
wait16(5);
/*on*/
lcdEnable(0x00);
lcdEnable(0x0c);
wait16(5);
}
こんな感じで、一日が終わりそうです。
でもテンションは高いです。
嘘です。
まあ、がんばろう。
夏には何があろうとも、新型は作るので。
[0回]
PR