3030|4

63

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于12864液晶画点读写操作,求帮忙 [复制链接]

下面函数里面的
[Col_Low = (Start_Column&0x0f);        //定位列地址设置的低位
Col_High = ((Start_Column>>4)&0x0f)+0x10;//定位列地址设置的高位
Start_Page =PAGE_BASE_ADDR+Start_Page;        //获得真实起始页地址

这几句话的意义是什么?具体意思是什么?表面的意思是Start_Column的低位值赋给Col_Low。而Start_Column的右移4为,为高位值赋给Col_High,为什么还要加0X10?这个查找高低位在液晶显示里面起到什么作用?(开辟地址空间?不像。)而后面又有使用这两个值的,如:
     LCM_Write_Command(Page); // 选择大列
    LCM_Write_Command(Col_High); // 写入起始行地址高四位
    LCM_Write_Command(Col_Low); // 写入起始行地址低四位
求帮助。具体函数如下。
void LCM_put_BMP(unsigned char Start_Page,
                  unsigned char Start_Column,
                  const unsigned char Buffer[],
                  unsigned char Width,unsigned char Height)
{
  unsigned char Column,Page;
  unsigned int tmp=0;
  unsigned char Col_Low=0,Col_High=0; //定义列地址的高低位指令
  unsigned char End_Page=0,End_Column=0; //定义结束页地址、列地址
  if(Start_Page>MAX_PAGE)
      return; // 参数不合法,不绘图,直接返回
  if(Start_Column>MAX_COLUMN)
      return; // 参数不合法,不绘图,直接返回

  End_Page=Start_Page+(Height>>3);
  if(End_Page>MAX_PAGE+1)  // 防止绘图时溢出
     End_Page=MAX_PAGE;

  End_Column=Start_Column+Width;
  if(End_Column>MAX_COLUMN) // 防止绘图时溢出
     End_Column=MAX_COLUMN;

        Col_Low = (Start_Column&0x0f);        //定位列地址设置的低位
        Col_High = ((Start_Column>>4)&0x0f)+0x10;//定位列地址设置的高位

        Start_Page =PAGE_BASE_ADDR+Start_Page;        //获得真实起始页地址
  End_Page = PAGE_BASE_ADDR+End_Page;        //获得真实结束页地址
  for(Page=Start_Page;Page   {
    LCM_Write_Command(Page); // 选择大列
    LCM_Write_Command(Col_High); // 写入起始行地址高四位
    LCM_Write_Command(Col_Low); // 写入起始行地址低四位
    // 每次循环列地址自动加一,所以不用重新设置列地址
    for(Column=0;Column<(End_Column-Start_Column);Column++)
         {  //获得显示内容在数组中的偏移量
      tmp=(Page-Start_Page)*Width+Column;
      tmp=Buffer[tmp];  //获得显示内容
      LCM_Write_Data(tmp); //每列写一个字节,对应点0灭,1亮
    }
  }
}

最新回复

查一下LCD屏读写命令寄存器的定义。  详情 回复 发表于 2015-1-20 13:39
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
好像是把位图分割成16*16算一个页,你MAX_COLUMN是多少?

点评

这个值你可以认为是你自己定义的。我只是想知道他的作用是什么。分割成位图??为什么有这个运算呢?  详情 回复 发表于 2014-10-17 17:35
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
huo_hu 发表于 2014-10-17 17:14
好像是把位图分割成16*16算一个页,你MAX_COLUMN是多少?

这个值你可以认为是你自己定义的。我只是想知道他的作用是什么。分割成位图??为什么有这个运算呢?
 
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
什么屏?
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 
查一下LCD屏读写命令寄存器的定义。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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