1602液晶部分程序未懂

[复制链接]
 楼主| 512365098 发表于 2011-9-1 14:49 | 显示全部楼层 |阅读模式
在学习1602液晶的程序编写时,遇到一些程序自己无法理解,请高手耐心点播,程序及1602液晶资料如下。
这里有两个问题不懂:
1、第一段程序LocateXY中,意思是向液晶输入显示字符的坐标信息,但是不理解temp |= 0x40和temp |= 0x80所起到的作用,还要调用LcdWriteCommand函数,temp作为其命令字,不理解起到什么作用;
2、函数LcdWriteData括号里的data,是什么作用,应该不是液晶要显示的数据吧,而且在实验里我人为的改动了,没看出有什么变化。

/*******************************************
函数名称:LocateXY
功    能:向液晶输入显示字符位置的坐标信息
参    数:x--位置的列坐标
          y--位置的行坐标
返回值  :无
********************************************/
void LocateXY(uchar x,uchar y)
{
    uchar temp;
    temp = x&0x0f;
    y &= 0x01;
    if(y)   temp |= 0x40;  //如果在第2行
    temp |= 0x80;
    LcdWriteCommand(temp,1);
}

函数名称:LcdWriteCommand
功    能:向液晶模块写入命令
参    数:cmd--命令,
          chk--是否判忙的标志,1:判忙,0:不判
返回值  :无
********************************************/
void LcdWriteCommand(uchar cmd,uchar chk)
{
    if (chk) WaitForEnable();   // 检测忙信号?
   
    CLR_RS;
    CLR_RW;
    _NOP();
    DataPort = cmd;             //将命令字写入数据端口
    _NOP();     
   
    SET_EN;                     //产生使能脉冲信号
    _NOP();
    _NOP();
    CLR_EN;   
}

/*******************************************
函数名称:LcdWriteData
功    能:向液晶显示的当前地址写入显示数据
参    数:data--显示字符数据
返回值  :无
********************************************/
void LcdWriteData( uchar data )
{
    WaitForEnable();        //等待液晶不忙
    SET_RS;
    CLR_RW;
    _NOP();
    DataPort = data;        //将显示数据写入数据端口
    _NOP();
    SET_EN;                 //产生使能脉冲信号
    _NOP();
    _NOP();
    CLR_EN;  
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
waithua 发表于 2011-9-2 11:35 | 显示全部楼层
你还是仔细看一下数据手册先。虽然对大多数人来说是很熟悉的东西了,但是对于新手来说是很好的入门资料。
楼主是新手没错吧。
joyme 发表于 2011-9-2 12:30 | 显示全部楼层
1. 写地址,0行为 0x80+地址码 (temp直接或0x80)
           1行为 0x80+0x40+地址码(temp |= 0x40 再或0x80)
2. 参数传入,显示数据,不知到你的认为改动是怎么个改法?正确调用的话,不同data入口参数肯定会显示不同内容
afei9527 发表于 2011-9-3 15:32 | 显示全部楼层
同意楼上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:在路上……

0

主题

532

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部