单片机 中关于LCD 显示 的程序 中有 write_com(0x80+17); //写在液晶数据缓冲区第一行 write_com(0xc0+17

为何是0x80 0xc0 ??还有 为什么加+17
write_com(0x80+17); //写在液晶数据缓冲区第一行不能显示的地方
write_com(0xc0+17) //写在液晶数据缓冲区第二行不能显示的地方

这个是1602的程序,每行16个显示单元,第一行地址从0x80~0x80+16,第二行0xc0~0xc0+16,一个字符占一个地址,其它的地址也是有存储单元的,只不过不能显示出来,你向1602发送一条移位指令就看出来了。也不是每个地址都有存储单元,具体不记得了,你试试就知道了。追问

ox80--ox80+16那岂不是是17个地址作为显示单元? 而且移位地址怎么写可以说一下吗

追答

你说的没错,应该是0~15,16个单元,第17个就显示不出来了

指令表里有下面这段:
移位0 0 0 0 0 1 S/C R/L * * 移动光标及整体显示,同时不改变DDRAM 内容。40μs

追问

移位指令是什么,,?还是不清楚啊谢谢

追答

手册上有啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-27
1602液晶中,0x80是第一行第一个字符对应的寄存器地址,0xc0是第二行第二个字符对应的寄存器地址。在此地址基础上加多少就表示显示位置偏移多少。具体可以参考1602液晶资料。追问

资料上第一个地址不是00吗怎么0x80

追答

00是内部功能寄存器的地址,0x80是显示区域第一行第一个字符单元寄存器的地址

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网