OCMJ4X8C-8 12864反白显示命令

2019-03-24 13:25发布

最近用了OCMJ4X8C-8 12864的液晶,有几个问题请教:
1.单行的反白显示命令是怎样的?我看了说明书上有写04H-07H的,但是我试了不行!
2.它可以中文显示,游标显示的位置是一个汉字的,但是如果我显示的英文或数字,怎么让游标只显示在一个字符上

有知道的教我下吧,谢谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
zhzhchang
1楼-- · 2019-03-24 21:28
< 我用过OCMJ2X8C,对于单行反白:
如果你使用系统自带的反白命令,你会看到在液晶上反白了两行,这是因为液晶控制器控制跟液晶实际显示是有区别的,你看一下这个液晶显示的控制器资料就能明白,液晶上面的第一、三行在液晶控制器看来只是一行。
可以使用绘图命令来单独实现液晶显示层面上的单行反白,给你个例子:
/**
* 简介:任意行反白/取消反白
*
* @param        line 行号(0,1,2,3)
* @param        enable为1使能反白,为0取消反白
* @return        无
*/
void con_disp (uint32 _line,uint32 enable)
{
  uint8 i,j;
  for(j=0;j<16;j++)                                        //每个中文字符占16个点
  {
    for(i=0;i<8;i++)                                   //8个中文字符宽度,即LCD的一行
    {
              write_com(0x36);                        //扩充指令集
              write_com(Lcd_Con_X_Y[_line][1]+j);
              write_com(Lcd_Con_X_Y[_line][0]+i);
              write_com(0x30);
                if(enable==1)                                 //使能指定行反白
                {
                      write_data(0xff);
                      write_data(0xff);
                }
                else                                                 //还原指定反白行
                {
                        write_data(0x00);
                      write_data(0x00);
                }
    }
  }
          write_com(0x36);
        write_com(0x30);                          
}

其中,
uint8 const Lcd_Con_X_Y[4][2]={{0x80,0x80},{0x80,0x90},{0x88,0x80},{0x88,0x90}};        //LCD行反白显示坐标


第二个问题,这个液晶控制器自带的游标只能显示一个中文汉字大小,如果你是16*8的英文字符,要自己设计游标的,也是用绘图命令。
对于英文和数字的显示,我都是用反白来做的
给你个参考代码:
/**
* 简介:任意位置反白/取消反白
*
* 描述:此函数反白/取消反白一块区域(16*8大小),由于lm3033B液晶的控制芯片最小操作对象是16*16区域,所以,对这个最小区域分成左右两半。
* @param        x为横坐标,        x的取值为(第一行和第二行为0x80~0x87;第三行和第四行为0x88~0x8F)
* @param        y为纵坐标,        y的取值为(第一行和第三行:0x80;第二行和第四行:0x8F)
* @param        direction=1为16*16的右半部,=0为16*16的左半部
* @return        无
*
*/

void con_disp8(uint32 x,uint32 y,uint32 direction)
{
        uint8 j;
          for(j=0;j<16;j++)                                        //每个中文字符占16个点
          {
              write_com(0x36);                                //扩充指令集
              write_com(y+j);
              write_com(x);
              write_com(0x30);
                if(direction==1)                                 //16*16区域的右半部反白
                {                     
                        write_data(0x00);
                      write_data(0xFF);
                }
                else                                                         // 16*16区域的左半部反白
                {                       
                        write_data(0xFF);
                      write_data(0x00);
                }
  }
          write_com(0x36);
        write_com(0x30);

}
amy_shen
2楼-- · 2019-03-24 23:04
< :TI_MSP430_内容页_SA7 --> 谢谢,我试试看!

一周热门 更多>

相关问题

    相关文章