关于51单片机的问题(C语言)

//按指定位置显示一个字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){Y&=0x1... //按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1?这个地方是怎么算的呀。说下呀
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40; 还有这里!这里的“|”不是或的意思吗?
X |= 0x80; //算出指令码
WriteCommandLCM(X, 1); //发命令字
WriteDataLCM(DData); //发数据
}

//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;

ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>0x19) //若到达字串尾则退出 还有这里为什么不能 〉0x19
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
ListLength++;
X++;
}
}
}
展开
 我来答
dmjcq
2012-09-22 · TA获得超过312个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:197万
展开全部
依程序来看,你的LCD应该是1602,所以Y不可大于1,除了0就是1,代表只有2行,15则代表16列(0-15)。

while (DData[ListLength]>0x19) //若到达字串尾则退出 还有这里为什么不能 〉0x19

这一句的意思是,你传入的字符串结尾以大于0x19来表示字符串的结束,是自定义的.

还有什么问题
小兆86
2012-09-22 · TA获得超过802个赞
知道小有建树答主
回答量:990
采纳率:25%
帮助的人:894万
展开全部
按位与运算,一般用于清零操作,Y按位与0x01就是和00000001b进行按位与运算,00000001是零的那些位,同样Y的那写位也变成零,只有最后一位不变。所以不管原来Y是什么Y &= 0x1;之后就只有最后一位不变,其它位都清零了。这样只是把X的第6位置位为1,并不影响其他位的状态,如果你用+法,有可能把第7位状态修改了。而且,或运算比算数运算速度快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kenlee_gz
2012-09-22 · TA获得超过494个赞
知道小有建树答主
回答量:457
采纳率:33%
帮助的人:364万
展开全部
“|”不是或的意思。

Y可以大于1,DisplayOneChar这个函数里面,Y取最低位,最低位为1(或者可以说Y为奇数)X的b6位置1.

为什么不能 >0x19,这个应该是跟硬件有关系的,是由于硬件的限制。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式