/* 显示一个汉字
* 大小为 16(宽度)* 16(高度),共32个字节
* 取模顺序为:高位在前,低位在后
*/
void LCD_DispCH(uint16_t x, uint16_t y, const uint8_t buffer[], uint16_t color)
{
uint8_t page , column;
//uint8_t buffer[32];
uint16_t tmp_char=0;
LCD_open_windows(x, y, CH_WIDTH, CH_HEIGHT);
//GetGBKCode_from_sd(buffer,pstr); /* 取字模数据 */
for(page=0; page< CH_HEIGHT; page++)
{
tmp_char=buffer[page*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*page+1];
for (column=0; column< CH_WIDTH; column++)
{
if ( tmp_char & (0x01<<15) )
{
LCD_WR_Data(color);
}
else
{
LCD_WR_Data(WHITE);
}
tmp_char <<= 1;
}
}
}
我把长宽都定义成32了,字节也是128了,然后
tmp_char=buffer[page*4]; //原来是2
tmp_char=(tmp_char<<8);
tmp_char|=buffer[4*page+1]; //原来是2
可以写进去只显示一半。 |