ST7920驱动的LCD12864实现单行反白显示

参考链接:

ST7920驱动的LCD12864实现单行反白显示 - jqdy - 博客园

12864液晶模块的详细使用_Rainlee随笔记-CSDN博客_12864使用

GDRAM空间有64×256 bit 组成,12864屏幕只使用了上一半的GDRAM内存。

  • 屏幕的第一行全宽字符:
  •   对应的垂直地址Y是0~15,即0x80-0x8f,水平地址X是0~7,0x80-0x87
  • 屏幕的第二行全宽字符:
  •   对应的垂直地址Y是16~31,即0x90-0x9f,水平地址X是0~7,0x80-0x87
  • 屏幕的第三行全宽字符:
  •   对应的垂直地址Y是0~15,即0x80-0x8f,水平地址X是8~15,0x88-0x8f
  • 屏幕的第四行全宽字符:
  •   对应的垂直地址Y是16~31,即0x90-0x9f,水平地址X是8~15,0x88-0x8f

ST7920驱动的LCD12864实现单行反白显示

设定扩展指令,确定地址,写2个字节,显示效果是横着写。

测试代码。

void LCD_Graphtest(void)
{
	//LCD_Clearall();
	LCD_ClearGDRAM();

LCD_Row1_highlight();
LCD_WriteCmd(0x36);//开显示
LCD_WriteCmd(0x30);//返回基本指令集

LCD_Row1_highlight_OFF(); 
LCD_Row2_highlight();
LCD_WriteCmd(0x36);//开显示
LCD_WriteCmd(0x30);//返回基本指令集
 
LCD_Row2_highlight_OFF(); 
LCD_Row3_highlight();
LCD_WriteCmd(0x36);//开显示
LCD_WriteCmd(0x30);//返回基本指令集
  
LCD_Row3_highlight_OFF(); 
LCD_Row4_highlight();
LCD_WriteCmd(0x36);//开显示
LCD_WriteCmd(0x30);//返回基本指令集 
    
//LCD_Display_Picture(imagetest);
}

反白与取消。

//第4行反白 
void LCD_Row4_highlight(void)
{	uint8_t i,j;
    for(i=0;i<16;i++)//32表示LCD12864点阵型液晶显示器上半屏32行
 {    
    LCD_WriteCmd(0x34);
	LCD_WriteCmd(0x34);
	LCD_WriteCmd(0x90+i);
    LCD_WriteCmd(0x88);
	for(j=0;j<16;j++)
         {LCD_WriteData(0xff);
         }	
  }  	
}
//第4行反白取消
void LCD_Row4_highlight_OFF(void)
{	uint8_t i,j;
    for(i=0;i<16;i++)
 {    
    LCD_WriteCmd(0x34);
	LCD_WriteCmd(0x34);
	LCD_WriteCmd(0x90+i);
    LCD_WriteCmd(0x88);
	for(j=0;j<16;j++)
    {LCD_WriteData(0x00);
    }	
  } 	
}

LCD12864液晶显示屏串行方式驱动详解_小鱼的马克堂-CSDN博客 该文分析总结:开扩展功能(指令:0x34),往CGROM中写入地址y,x,回到基本指令功能(0x30),写0xFF反白,写0x00清除反白,最后开图形显示(0x36)。我简单试了一下,出现显示乱码。没有细看。觉得还是不要动用基本指令功能(0x30)+写数据了。我觉得DDRAM和GCRAM,还是各干个的吧。

滚动的效果还没有设计,以后再说吧。

上一篇:Springboot-微服务-微服务组件之服务管理-优雅的调用服务-feign


下一篇:STM32串行驱动LCD12864液晶程序代码