#include
#include
#define lcd_rs PORTD.3
#define lcd_rw PORTD.4
#define lcd_en PORTD.6
#define lcd_dataport PORTB
flash char row1[12]={0x49,0x20,0x4c,0x49,0x4b,0x45,0x20,0x41,0x56,0x52,0x20,0x21};
flash char row2[12]={0x49,0x20,0x4c,0x49,0x4b,0x45,0x20,0x50,0x49,0x43,0x20,0x21};
// Declare your global variables here
void write_com(unsigned char com)
{
lcd_dataport=com;
lcd_rs=0;
lcd_rw=0;
lcd_en=1;
delay_ms(1);
lcd_en=0;
}
void write_dat(unsigned char dat)
{
lcd_dataport=dat;
lcd_rs=1;
lcd_rw=0;
lcd_en=1;
delay_ms(1);
lcd_en=0;
}
void main(void)
{
unsigned char i;
DDRB=0xFF;
PORTB=0x00;
DDRD|=0x58;
PORTD&=0xA7;
write_com(0x38);
delay_ms(5);
write_com(0x08);
delay_ms(5);
write_com(0x01);
delay_ms(5);
write_com(0x02);
delay_ms(5);
write_com(0x0D);
delay_ms(5);
write_com(0x06);
delay_ms(5);
write_com(0x80);
delay_ms(5);
for(i=0;i<12;i++)
{
write_dat(row1[i]);
delay_ms(10);
}
write_com(0x80+0x40);
delay_ms(5);
for(i=0;i<12;i++)
{
write_dat(row2[i]);
delay_ms(10);
}
for(i=0;i<12;i++)
{
write_com(0x30);
write_com(0x18);
delay_ms(5);
write_com(0x30);
write_com(0x1C);
}
如何在此基础上,让第一行左移,第二行右移
1,先看液晶屏本身是否支持硬件移屏,如果不支持,就本地计算好新位置的数据,然后用新的数据刷新屏幕