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

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


控制LCD实际上就是控制两个牛屎芯片
以梦为马之89c51单片机驱动lcd_第1张图片

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

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

以梦为马之89c51单片机驱动lcd_第12张图片
放大
以梦为马之89c51单片机驱动lcd_第13张图片
按照说明书所写,使用1602显示屏的流程如下

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

实验流程如图所示

main函数
以梦为马之89c51单片机驱动lcd_第14张图片
将hello y存储在table1数组中。
delay_time汇编延时函数
以梦为马之89c51单片机驱动lcd_第15张图片
请大家注意这里的延迟函数,我只延迟了3μs,而根据实际的芯片操作延迟需要延迟的量纲是ns级别的,然而1μs=1000ns。
但是如果使用此程序的朋友没有实物而需要使用Proteus 8的话,那么是需要加延迟的。
lcd_init 初始化函数
以梦为马之89c51单片机驱动lcd_第16张图片
清屏原理
以梦为马之89c51单片机驱动lcd_第17张图片
点阵设置
以梦为马之89c51单片机驱动lcd_第18张图片

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

lcd_write_com 写命令函数
以梦为马之89c51单片机驱动lcd_第19张图片
lcd_write_date 写数据函数
以梦为马之89c51单片机驱动lcd_第20张图片
lcd_busy 判忙函数
以梦为马之89c51单片机驱动lcd_第21张图片
以梦为马之89c51单片机驱动lcd_第22张图片

lcd_show 显示函数
以梦为马之89c51单片机驱动lcd_第23张图片
以梦为马之89c51单片机驱动lcd_第24张图片
实验结果
以梦为马之89c51单片机驱动lcd_第25张图片

https://download.csdn.net/download/qq_43161960/79744524

你可能感兴趣的:(单片机,物联网,c语言)