这是stm32用LCD显示汉字的底层函数,对于这个函数,小弟有点迷糊,恳请大神指点(问题在注释部分)~~~
void LCD_DispCH(uint16_t x, uint16_t y, const uint8_t *pstr, uint16_t color)
{
uint8_t page , column;
uint8_t buffer[32];
uint16_t tmp_char=0;
LCD_OpenWindow(x, y, CH_WIDTH, CH_HEIGHT);
LCD_ILI9341_CMD(0X2C);
GetGBKCode_from_sd(buffer,pstr);
for(page=0; page<CH_HEIGHT; page++)
{
tmp_char=buffer[page*2];//问题1:这里直接用buffer[Page]不好吗?下面也就不需要使用buffer[Page*2+1],为什么要*2?
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*page+1];
for (column=0; column< CH_WIDTH; column++)
{
if ( tmp_char & (0x01<<15) //问题2:这里是操作一个像素点,从最高位开始操作,为什么只取最高位的啊?
{
LCD_WR_Data(color);
}
else
{
LCD_WR_Data(BACKGROUND);
}
tmp_char <<= 1;//问题3:这是什么意思啊?
}
}
} |