LCD1602如何按指定位置显示一个字符?

img

从if(Y)X|=0x40就不太看得懂了,第二行的话不是应该加0x80吗 求解答一下我的问题

不懂加0x80是怎么得出的....
这个没有那么多理由 看器件手册. 就是一个地址偏移

1602的 DDRAM (参考1602规格书)
第一行地址是 0x80
第二行地址是 0xC0 = ( 0x80 + 0x40 )
这函数假设参数范围 X = 0 ~ 15, Y = 0, 1
所以: 你可以理解那两行要表达的结果是
If( Y > 0 ) X += 0x40;
X += 0x80 ;
等同:
X += 0x80 ;
If( Y > 0 ) X += 0x40;
加法运算 vs 逻辑OR运算的方式, 都能达成同样的目的,
不同的是指令周期, 和对CPU缓存器状态的改变。
先参考规格书, 理解一下, 会比较能看懂别人的程序。