引き続き。ドントロニクスの小型LCDをいじってます。

文字列を表示する関数 lcd_sendStr()、文字1つを表示する関数 lcd_sendTextを作りました

■文字列関数

/*文字を表示する*/

voidlcd_sendText(chart,charcolumn,charrow,char*sb){

loop_until_bit_is_set(UCSR0A,UDRE0);//送信データレジスタ空きまで待機

UDR0=’T’;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=t;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=column;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=row;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=sb[0];

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=sb[1];

}

/*文字列を表示する*/

voidlcd_sendStr(char*str,charcolumn,charrow,char*sb){

while(*str!=NULL){

lcd_sendText(*str,column,row,sb);//1文字表示

*str++;//1文字進む

column++;//表示位置ずらす

lcd_waitRes();

}

}



■起動時に使う関数

/*接続、ボーレート自動設定*/

voidlcd_connect(void){

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=’U’;

}

/*全て消す*/

voidlcd_erase(void){

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=’E’;

}

■main関数

lcd_sendStr(“SHOKAI”,8,0,sb); すると、8文字目、0行目に SHOKAI と表示する。

intmain(void){

port_init();//PORT設定

usart_init(MYUBRR);//USART設定

sei();//全割り込み許可



LED_SET();//起動確認LED点滅

_delay_ms(0xFF);

LED_CLR();

_delay_ms(0xFF);

LED_SET();



lcd_connect();//接続

lcd_waitRes();

lcd_erase();//クリア

lcd_waitRes();



charcolor0[3]={0b11111,0b000000,0b00000};//RGB

charcolor1[3]={0b00000,0b111111,0b00000};

charcolor2[3]={0b00000,0b000000,0b11111};

charsb[2];

for(;;){

colorToSb(color0,sb);//msb,lsb取得

lcd_paintArea(10,0,60,100,sb);//x1,y1,x2,y2,color(msb,lsb)

lcd_waitRes();

lcd_sendStr(“SHOKAI”,8,0,sb);

lcd_waitRes();

_delay_ms(0xFF);

_delay_ms(0xFF);

_delay_ms(0xFF);

colorToSb(color1,sb);//msb,lsb取得

lcd_paintArea(10,0,60,100,sb);

lcd_waitRes();

lcd_sendStr(“SHOKAI”,8,0,sb);

lcd_waitRes();

_delay_ms(0xFF);

_delay_ms(0xFF);

_delay_ms(0xFF);

colorToSb(color2,sb);//msb,lsb取得

lcd_paintArea(10,0,60,100,sb);

lcd_waitRes();

lcd_sendStr(“SHOKAI”,8,0,sb);

lcd_waitRes();

_delay_ms(0xFF);

_delay_ms(0xFF);

_delay_ms(0xFF);

}

}