8157|2

47

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

OCMJ4X8C-8 12864反白显示命令 [复制链接]

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

有知道的教我下吧,谢谢!

最新回复

我用过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  详情 回复 发表于 2012-9-22 08:33
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我用过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);

}
 
 

回复

47

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢,我试试看!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表