打印

1602液晶部分程序未懂

[复制链接]
1692|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;  
}

1602液晶说明.pdf (255.88 KB)

相关帖子

沙发
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

粉丝