|
本帖最后由 飞宇 于 2016-10-9 11:42 编辑
12864液晶模块自身的指令只能进行整行反白显示,但是实际使用的时候,我们经常需要对单个汉字进行反白,这时候就可以使用绘图的方式进行反白显示。具体过程如下:
1.取字模。
2.清除需要反白的显示区域。
3.将字模数据取反写入到显示的位置。
显示效果图:反白显示程序清单:
- /***************************************************************************
- * 描 述 : 使用绘图的方法显示一个16*16的汉字,具备反白功能。注意参数不要超限。
- * 参 数 : row[in]:行,范围1~4
- * :column[in]:列,范围1~7
- * :color[in]:反白标志。=1:反白显示;=0:不反白
- * :*pdat[in]:指向待显示的汉字字模数组
- * 返回值 : 无
- **************************************************************************/
- void LCD_DrawHZ1616(uint8 row,uint8 column,uint8 color,uint8 *pdat)
- {
- uint8 i,j,xpos,ypos;
-
- Write_Cmd(0x36); //扩展指令,绘图模式命令,开显示也可以绘.(关图片显示0x34)
-
- if(row==1 || row==2) //第1行和第2行位于上半屏
- {
- xpos=0x80;
- ypos=(row-1) * 16; //垂直位址从0X80开始.
- }
- if(row==3 || row==4) //第3行和第4行位于下半屏
- {
- xpos=0x88;
- ypos=(row-3) * 16; //垂直位址都是从0X80开始的,不管上下半屏。
- }
- for(i=0;i<16;i++)
- {
- Write_Cmd(0x80+ypos+i); //写入垂直位址。
- Write_Cmd(xpos+column-1); //再写入水平位址(上半屏第一字为0X80,……第七字为0X87)
- //下半屏第一字为0X88,……第七字为0X8F;
- for(j=0;j<2;j++) //再写入两个8位元的数据,AC会自动增一,接着写数据
- {
- if(color==1)Write_Data(~(*pdat++));
- else Write_Data(*pdat++);
- }
- }
- Write_Cmd(0x30); //恢复成基本指令集
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|