以梦为马之89c51单片机驱动lcd

路有千万条,我要选择那条最难的走,这才是我该走的路


控制LCD实际上就是控制两个牛屎芯片
在这里插入图片描述

观察lcd1602,它有16个引脚,其含义如下图所示
在这里插入图片描述
查看数据手册看到如下时序图
在这里插入图片描述
再看说明书看到时序图介绍:
在这里插入图片描述
芯片手册混合写的,对于刚入门的朋友来说理解,理解起来回会有难度,于是我把这个分开写帮助大家理解。
对于1602来说他的芯片处理时间都是ns的量纲远大于80c52的us,在实际运用中是不用增加延迟功能的。
在这里插入图片描述
但是要是使用仿真软件的话,那必须要使用延迟,要不然会出现屏幕不显示的BUG
在这里插入图片描述

  1. 写命令
    (1)RS低电平,R/W低电平
    (2)开始写命令,E升高延迟,迟最少30ns;E最少保持时间为400ns。
    (3)E保持不变开始写命令
    (4)命令结束后拉低E,使E变成低电平。
    在这里插入图片描述
  2. 写数据
  3. 1)RS高电平,R/W低电平
    (2)开始写命令,E升高延迟,迟最少30ns;E最少保持时间为400ns。
    (3)E保持不变开始写命令
    (4)命令结束后拉低E,使E变成低电平。
    在这里插入图片描述
    在实际情况中不需要延迟,很浪费资源的。
    下图是仿真图,实物接线与仿真图一样。仿真图接LCD要注意使用上拉电阻将电压拉上去,否则连屏幕都不会亮。
    在这里插入图片描述
    下图是判忙函数的来源
    在这里插入图片描述
    字符定位的原因
    在这里插入图片描述
    功能选择图已经帮你们列好了

在这里插入图片描述
放大
在这里插入图片描述
按照说明书所写,使用1602显示屏的流程如下

  1. 开始
  2. 初始化
  3. 定义显示位置
  4. 显示内容

实验流程如图所示

main函数
在这里插入图片描述
将hello y存储在table1数组中。
delay_time汇编延时函数
在这里插入图片描述
请大家注意这里的延迟函数,我只延迟了3μs,而根据实际的芯片操作延迟需要延迟的量纲是ns级别的,然而1μs=1000ns。
但是如果使用此程序的朋友没有实物而需要使用Proteus 8的话,那么是需要加延迟的。
lcd_init 初始化函数
在这里插入图片描述
清屏原理
在这里插入图片描述
点阵设置
在这里插入图片描述

当DL=1,N=1,F=1的时候及00011100=0X38

lcd_write_com 写命令函数
在这里插入图片描述
lcd_write_date 写数据函数
在这里插入图片描述
lcd_busy 判忙函数
在这里插入图片描述
在这里插入图片描述

lcd_show 显示函数
在这里插入图片描述
在这里插入图片描述
实验结果
在这里插入图片描述

https://download.csdn.net/download/qq_43161960/79744524
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璞楞登斯沃

感谢支持我会跟新更多的技术博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值