微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序有点看不懂!希望能帮忙解决。

程序有点看不懂!希望能帮忙解决。

时间:10-02 整理:3721RD 点击:
以下程序中为什么line要或上一个0xb8呢?下面的column也是同样的问题?
还有就是在12864地址中0xb8+1和0xb9是同一个地址码?
求大神们赐教!
谢谢!
//设定行地址(页)--X 0-7
void SetLine(uchar line)
{
        line &= 0x07; // 0<=line<=7
        line |= 0xb8; //  1011 1xxx 。1011 1000 | 0000 0001 = 1011 1001.
        SendCommandToLCD(line);
}
//设定列地址--Y 0-63
void SetColumn(uchar column)
{
        column &= 0x3f; // 0=<column<=63
        column |= 0x40; //01xx xxxx
        SendCommandToLCD(column);
}

根据12864的指令说明:
“页面地址设置 0 0 1 0 1 1 1 P2 P1 P0”
页面指的是line,总共有8页,3bit可以表示,页地址或上0xb8,即发送页面地址设置命令+页地址;
同理:
“列地址设置 0 0 0 1 C5 C4 C3 C2 C1 C0”
列总共有64,6bit可以表示,列地址或上0x40,即发送列地址设置命令+列地址


这个行列的取值要看使用的12864的手册里的说明,对应上就好了。

line&=0x07;line|=0xb8;这段代码用以将line的低三位替换掉0xb8的低三位,这样行地址为111xxx(xxx为line的低三位),而10应该是控制位,同理,column&=0x3f;column|=0x40;这段代码用以将column的后六位替换掉0x40的后六位,这样列地址为01xxxxxx(xxxxxx为column的后六位),01应该也是控制位,以上只是个人猜测。

你是说10和01分别控制行和列而低三位和后六位分别控制行和列的具体位置咯?

只是个人的观点。

或上0xb8后前面没变的几个bit表示页面地址设置命令是吧?

是的,像你操作SPI之类的总线协议,也是需要发指令,再发数据

谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top