下面这段程序是LCD1602显示字符串,请问0x80和0xc0到底指什么,为什么要把显示的地址前加0x80和0xc0?

voidShowString(ucharx,uchary,uchar*str){uchari=0;if(y==0)Write_LCD_Command(0x80|x);if... void ShowString(uchar x,uchar y,uchar *str)
{
uchar i=0;
if(y==0) Write_LCD_Command(0x80|x);
if(y==1) Write_LCD_Command(0xC0|x);
for(i=0;i<16;i++)
{
Write_LCD_Data(str[i]);
}
}
展开
 我来答
ball648500361
2012-04-17 · TA获得超过606个赞
知道小有建树答主
回答量:270
采纳率:50%
帮助的人:187万
展开全部
呵呵,这个就是个地址问题,1602是自带的控制芯片决定了你要输入什么样的指令来写入读出字符。这里的0x80是第一行的第一个字符的地址,0xc0也就是第二行的地址。我这里有份资料你可以看一下也许对你有帮助。
http://wenku.baidu.com/view/b670ef2f0066f5335a8121ad.html?st=1

步行者===电子单片机团
追问
它们的显示对应关系不是如图么,这和0x80与0xC0怎么有对应关系?
追答
你截的图是正确的,同时你要知道ddram的地址设定指令的第八位确定是1  剩下的六位才表示0x00第一行和0x40第二行

好好看看我姐的图

你可以看一下47okey 得回答他说的挺明白!我不太会解释

参考资料: http://wenku.baidu.com/view/b670ef2f0066f5335a8121ad.html?st=1

47okey
2012-04-17 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2376万
展开全部
这你可以看1602的资料
Write_LCD_Command(0x80|x);
当DB7 为1时,这条指令就是设定DDRAM地址的,DB6~DB0为CGRAM的地址。
CGRAM第一行 是00H开始,第二行是40H开始。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式