程序有点看不懂!希望能帮忙解决。
时间: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地址中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之类的总线协议,也是需要发指令,再发数据
谢谢