
([1)LCD1602概述
让我们看看LCD1602首先意味着什么?液晶显示器(LCD)表示液晶显示器,1602表示一行中可以显示16个字符,总共两行。

现在让我们看一下如何使用简单的IO控制和延迟来操作LCD1602 LCD模块。由于LCD1602是由单片机控制的,因此在前面的分析基础上,我们必须首先弄清楚谁是受控对象,谁是受控对象。显然,LCD1602是受控对象,因此让我们从LCD1602开始分析。所谓的控制也可以理解为通信。例如,如果您与室友交流并希望他可以为您购买一瓶绿茶,那么这意味着至少您的室友可以理解您的“使用说明”,知道什么是绿茶,如何购买等等。 。 。好的,如何与LCD1602通讯?想一想,人们之间如何沟通?在交流之前打个招呼。例如,“ Hello”等等,您必须说“ Hello?”。在通电话。确认通信正常后,将开始通信。很少有人会在他们打来电话后立即开始。 “哇”,如果长时间通话后仍未连接信号,那不是没有用。实际上,MCU与LCD1602之间的通信是相同的。 “你好?”手机中使用的实际上在这里称为初始化。这种“初始化”概念将在以后经常遇到。实际上,该设备也是由人设计的,因此,他的工作方式在某种程度上是人与人之间的交流。打个招呼后,您便开始输入真实主题。什么主题LCD1602是显示模块,当然主要功能是显示。由于它是显示器,我们可以考虑一下,它不过是两个内容:
(1)您要显示什么?
([2)您打算在哪里展示?
很明显,这两个内容来自单片机的控制,单片机告诉它显示所显示的内容(请参阅电子产品)。此“显示内容”是传输的数据。那么如何将数据传输到LCD1602模块呢?如前所述,LCD1602代表2行,每行16个字符,这意味着显示位置不同。那么。当RW为低电平时,LCD模块将知道,MCU将为我“写”。当RW为高电平时,LCD模块将知道并且MCU将“读取”。显然,我们需要在此处将RW设置为低。 “写/读”和“命令/数据”都知道如何告诉LCD模块,那么该命令如何传递?它通过8条线D0-D7(即P2端口)传输。例如,我要传输的命令是x033,然后将此数据0x33放入P2端口,当LCD1602看到“ write”和“ command”时,您知道在P2端口上采用了0x33指令。这样,达到了“写”“命令”“ 0x33”的目的。
但不是这样,LCD1602可以正常执行。没有。回到前面提到的示例,这是一个附加条件。在听到三声敲门声之后,屋里的人断定密码是正确的,但他没有直接打开门,而是通知了上级,只有在获得上级授权后才打开门。 。也就是说,有两个条件是正确的,并且是上级认可的。 LCD1602也是如此。收到命令后,该命令不会立即执行,它必须等待另一个信号,即EN使能信号。此时,EN发出一定宽度的脉冲,LCD1602开始执行。

通过这种方式,根据之前的分析,很容易编写用于编写指令的代码:
void Lcd_Write_Cmd(unsigned char Cmd){
delayMs(5); //请注意,此处需要5ms的延迟才能保证安全,而不是判断忙碌信号

RW = 0;
P2 = Cmd; //准备说明
RS = 0; //告诉LCD1602 P0放置命令而不是数据
EN = 1;
delayUs(5); //根据时序图,脉冲必须具有一定的宽度
EN = 0; //使指令有效并开始执行
}
类似地,在上面的代码中,只需将RS信号更改为1,这就是用于写入数据的代码
voidLcd_Write_Data(unsignedcharmData){
RW = 0;
delayMs(5); //请注意,此处需要5ms的延迟来比较保险,而不是判断忙碌信号
P2 = mData; //准备就绪指令
RS = 1; //告诉LCD1602 P0中的数据不是命令

EN = 1;
delayUs(5); //根据时序图,脉冲必须具有一定的宽度
EN = 0; //使指令有效并开始执行
}
说到这,LCD1602初始化代码应该能够被写入。同时,我们还编写了传递指令的代码,因此现在我们只需要知道指令的内容即可。

指令1:清除显示,指令代码为01H,并将光标重置为地址00H。
说明2:重置光标,然后光标返回到地址00H。
命令3:光标和显示模式设置I / D:光标移动方向,高位向右移动,低位向左移动S:屏幕上所有文本向左还是向右移动。高电平表示有效,低电平表示无效。
命令4:显示开关控制。 D:控制整体显示的开和关,高电平表示打开显示,低电平表示关闭显示C:控制光标的打开和关闭,高电平表示有光标,低电平表示无光标B:是否控制光标闪烁,高电平闪烁,低电平不闪烁。
命令5:光标或显示移位S / C:将显示的文本移到较高级别,然后将光标移到较低级别。
命令6:功能设置命令DL:高位4位总线,低位8位总线N:低位单行显示,高位双行显示F:低位5x7点矩阵字符,则以高水平显示5x10点矩阵字符。
命令7:字符发生器RAM地址设置。

命令8:DDRAM地址设置。
指令9:读取忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块无法接收命令或数据,如果低电平则表示不忙。
命令10:写入数据。
命令11:读取数据。
这样,您需要给LCD1602些什么指令,只需将其传递给void write_com(无符号字符Cmd)函数中的Cmd参数即可。
([3)LCD1602确认显示位置
现在让我们解决前面提到的第二个问题:“它显示在哪里?”也就是说,如何确定LCD模块的32个空格。

从上图可以看到,有两条线分别与LCD1602的32个空格完全对应,即00到0F和40到4F。可以看出,液晶模块的显示位置由与该表相对应的代码值确定。例如,第二行中第一个字符的地址为40H,则其地址为40H。请注意,表3-2中的第8个数据存储地址D7已被写入死区。最终的显示地址应该是40H + 10000000B(40H + 80H),因此我们只需要将此值传递给Cmd,以便LCD1602知道它显示在第二行的第一位置。
([4)LCD1602确认显示内容
如前所述,如果传输数据,则是要显示的内容。例如,如果我想显示字母A,该怎么做?

如上图所示,如果要显示A,则数据的高位是0100,低位是0001,所以它是01000001。将此数据发送到LCD1602,它知道要显示答:
以这种方式解决了三个问题,即“初始化”,“写指令”和“写数据”。
现在让我们回顾一下,看看我们在使用单片机控制LCD1602的过程中使用了哪些单片机知识。回到图1,主要通过P4. 1,P4. 4和P [10]连接10条连接线P4. 1,P4. 4和P4. 5,以及P2端口。 k5] 5高低变化以发出指令或数据,P2端口的变化反映了指令或数据的内容。可以看出,在此过程中我们仅使用了IO端口控制和延迟。另一半部分用于了解1602使用规则。请注意,这是使用规则,而不是原则。例如,当您向LCD1602发送清除屏幕命令时,您了解LCD1602如何接收此命令来清除屏幕吗?我不知道,也没有必要知道。 LCD模块手册也没有告诉您。例如,当您使用手机时,您可以单击某个应用程序以将其打开,然后根据其规则(例如听歌,上网等)使用它。您无需关心它们的状态已实施。实际上,手机也是一个模块,无论发生什么,我们都只需要学习操作它。
(5)摘要
现在,我们总结一下以上分析。 LCD1602液晶模块的作用是显示,因为它是“显示”,所以无非是显示什么以及在哪里显示。那么如何确定显示什么呢?由ASCII码表确定。如何确定显示器的位置?使用表3-3确定。当单片机控制LCD1602液晶模块时,即两个对象通信时,必须首先“问候”,即初始化。如何初始化呢?具体步骤已在说明手册中给出,只需复制即可。在澄清了这个想法之后,剩下的就是执行每个步骤了。它涉及如何编写指令,写入数据以及如何读取忙信号。查看时序图以了解详细信息。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-325511-1.html
最后的笑脸好迷人~
01年服役的军舰
@老子起个昵称怎么就那么难@郑甜甜的辛普森美美美
战争就打不起来