打印

stm32显示汉字 函数求解!

[复制链接]
261|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
喷水壶|  楼主 | 2019-11-27 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是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:这是什么意思啊?
                }
        }
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

437

帖子

0

粉丝