stm32 lcd双图层显示问题

img


使用stm32 lcd双图层显示的时候,第一个设置为192150大小,第二个设置为150150 下方区域会显示异常,哪里的问题哦

你想要什么样的效果,有图例吗?

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/762972
  • 你也可以参考下这篇文章:LCD1602 STM32 四根数据线控制 除去电源线就是用6根数据线
  • 除此之外, 这篇博客: STM32串行驱动LCD12864显示屏程序代码中的 2.3 LCD12864显示字符串函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这里在LCD12864显示字符串的函数,使用的是12864内部自带的字库(包含了中文字库),而不是自己定义的点阵数据字库。内部自带的字库实际上就是DDRAM的地址,每个地址值所占据的像素点是16x16个像素点。自带字库的英文字符是8x16个像素点,中文字符是16x16个像素点,所以12864每行能显示的英文字符是16个,中文字符是8个,一共能显示4行。

    /* LCD12864内部字库显示的DDRAM地址,每个地址占16*16个像素点 */
    static unsigned char lcd_str_addr[4][8] = {
    	{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87},  		
    	{0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97},		
    	{0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F},		
    	{0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F}		
    };
    
    /**
      * @brief  LCD12864显示字符串
      * @param  column: 行地址0~3,row: 列地址0~7
      * @retval 无
      */
    void lcd_draw_str(unsigned char column, unsigned char row, const char *str)
    { 
    	/* 设置显示的行/列地址 */
    	lcd_write_cmd(lcd_str_addr[column][row]); 
    	
    	/* 逐个字符写入 */
    	while(*str)
        { 
          lcd_write_data(*str++);   
        }
    }