参考链接:
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
设定扩展指令,确定地址,写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,还是各干个的吧。
滚动的效果还没有设计,以后再说吧。