找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1855|回复: 6
打印 上一主题 下一主题
收起左侧

LCD1602的调用函数中X不是指DDRAM的地址吗?为什么要有发命令字这个操作

[复制链接]
跳转到指定楼层
楼主
ID:623119 发表于 2020-4-30 20:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


void LcdWriteCom(uchar com)          //写入命令
{
        LCD1602_E = 0;     //使能
        LCD1602_RS = 0;           //选择发送命令
        LCD1602_RW = 0;           //选择写入
       
        LCD1602_DATAPINS = com;     //放入命令
        Lcd1602_Delay1ms(1);                //等待数据稳定

        LCD1602_E = 1;                  //写入时序
        Lcd1602_Delay1ms(5);          //保持时间
        LCD1602_E = 0;
}
void LcdWriteData(uchar dat)                        //写入数据
{
        LCD1602_E = 0;        //使能清零
        LCD1602_RS = 1;        //选择输入数据
        LCD1602_RW = 0;        //选择写入

        LCD1602_DATAPINS = dat; //写入数据
        Lcd1602_Delay1ms(1);

        LCD1602_E = 1;   //写入时序
        Lcd1602_Delay1ms(5);   //保持时间
        LCD1602_E = 0;
}
//按指定位置显示一个字符
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; //算出指令码

        LcdWriteCom(X); //?????发命令字

        LcdWriteData(DData); //发数据
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-5-1 22:11 | 只看该作者
        Y &= 0x1;
        X &= 0xF; //限制X不能大于15,Y不能大于1
        if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
        X |= 0x80; //算出指令码
这些代码写法比较清奇,学习了
回复

使用道具 举报

板凳
ID:462827 发表于 2020-5-1 23:21 | 只看该作者
光标定位当然要发命令字了,先根据参数X和Y来计算定位值

Y&=0x1 相当于 y%=2
x&=0xf 相当于 x%=16

然后如果Y是1的话X加上0x40即第二行地址(比第一行多的偏移量),最后X再加上0x80即第一行首址而得到最终地址。
回复

使用道具 举报

地板
ID:420836 发表于 2020-5-2 01:53 | 只看该作者
因此LCD控制器知道将字符放置在何处。
回复

使用道具 举报

5#
ID:623119 发表于 2020-5-6 22:40 | 只看该作者
man1234567 发表于 2020-5-1 22:11
Y &= 0x1;
        X &= 0xF; //限制X不能大于15,Y不能大于1
        if (Y) X |= 0x40; //当要 ...

emmmmmmmmm也是网上借鉴的
回复

使用道具 举报

6#
ID:623119 发表于 2020-5-6 22:42 | 只看该作者
TTQ001 发表于 2020-5-2 01:53
因此LCD控制器知道将字符放置在何处。

嗯嗯,谢谢,了解了
回复

使用道具 举报

7#
ID:623119 发表于 2020-5-6 22:42 | 只看该作者
hantu 发表于 2020-5-1 23:21
光标定位当然要发命令字了,先根据参数X和Y来计算定位值

Y&=0x1 相当于 y%=2

嗯嗯,感谢感谢,了解了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表