|
发表于 2018-8-31 13:44:27
|
显示全部楼层
我以前做的,看看是否合适:
u8 transition_temp[8];
/*****************************************/
// 刷新 KS0108显示存储器
/****************************************/
void write_screen(void)
{
u8 x=0,y=0,j=0,i=0;
//set_xy(0,0);
for(y=0;y<8;y++)
{
if(LCD_CS_Controll_Mode==0)
{
LCD_CS1=1;
LCD_CS2=0;
}
else
{
LCD_CS1=0;
LCD_CS2=1;
}
set_xy(0,y);
for(x=0;x<8;x++)//LCD有两个半,64点
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
//为了能使显示lcd_disp_buf[16][64]得到对应,数据必须转换
transition_temp[7-j]|=((lcd_disp_buf[15-x][i+y*8]&(1<<j))>>j)<<i;
}
for(i=0;i<8;i++)
{
lcd_write_data(transition_temp[i]);
transition_temp[i]=0;
}
}
if(LCD_CS_Controll_Mode==0)
{
LCD_CS1=0;
LCD_CS2=1;
}
else
{
LCD_CS1=1;
LCD_CS2=0;
}
set_xy(0,y);
for(x=8;x<16;x++)//LCD有两个半,64点
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
//为了能使显示lcd_disp_buf[16][64]得到对应,数据必须转换
transition_temp[7-j]|=((lcd_disp_buf[15-x][i+y*8]&(1<<j))>>j)<<i;
}
for(i=0;i<8;i++)
{
lcd_write_data(transition_temp[i]);
transition_temp[i]=0;
}
}
}
} |
|