引き続き。ドントロニクスの小型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);
}
}