意思
当前位置:首页 > 其他范文 > 意思 > 列表页

lcd1602读操作时序图是什么意思

小草范文网  发布于:2017-01-28  分类: 意思 手机版

篇一:1602时序图

1602时序图

单片机是一种微控制器,本身内部集成了数种资源比如CPU、内存、内部和外部总线系统,目前大部分还会具有外存。他的主要任务是利用各种资源实现电平控制,可以以此控制与它相连的下级系统,广泛用于工业自动控制领域。

我们就从这句话出发,首先单片机用来做控制用的,而且是利用的是本身的内部资源。但是,它的功能再强大,资源再丰富也总有一个上限,总有枯竭的一天。所以我们常常利用单片机外接芯片来弥补或者增强单片机的功能来完成我们所需功能的电路。比如程序存储器不足,可以外接外部存储器,比如单片机内部中断级不足,可以外接中断控制器等等。大家可以从这个角度来理解芯片控制的意义罢。

今天我们用AVR单片机来实现对LCD1602液晶显示芯片的控制。

首先从这个名字讲起,LCD:英文全称为Liquid Crystal Display,即为液态晶体显示,也就是我们常说的液晶显示了。(平时老说LCDLCD,可能大家也都不怎么注意过这个全称吧,呵呵,当增加词汇量了)1602则是表示这个液晶一共能显示2行数据,每一行显示16个字符。这个就是LCD1602的全部来由。

液晶显示的使用有多广泛我就不多说了,LCD1602好像10元左右就可以拿到了的,不算贵。我们来看看现在市面都有哪些样子的1602,下面从网上搜罗了几个(我手上的这个是蓝色背光白色字体的):

1602时序图 - ZZ - 狂风悟浪 1602时序图 - ZZ - 狂风悟浪

其实显而易,见也就是背光和字体的颜色不一样罢,不过老实说,蓝色背光的1602看上去显得确实比较亮,也许是人眼视觉的关系。

接下来进入LCD1602使用的重点:操作时序。操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握。介于中国目前的芯片设计能力有限,所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的,器件资料自然也是英文的多,所以,英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本,还是建议看英文原版,看不懂时不妨再参考中文版,这样比较利于提高。

我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表:

1602时序图 - ZZ - 狂风悟浪

我们只需要关注以下几个管脚:

3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。

4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而为电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。

5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。

6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。

7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。

现在来看LCD1602的操作时序:

1602时序图 - ZZ - 狂风悟浪

在此,我们可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:

① 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

② 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:

1602时序图 - ZZ - 狂风悟浪

大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序:

1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。

2、上图框出并注明了看懂此图的一些常识:

(1).时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。

(2).有线交叉状的部分,表示电平在变化,如上所标注。

(3).应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。

(4).上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。

3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。

4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。

也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:

1602时序图 - ZZ - 狂风悟浪

大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到MCU的一些级别参数。比如我们现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(1/12MHz)us,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,我们在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思

lcd1602读操作时序图是什么意思

现在我来解读我对这个时序图的理解:

当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。

下面来看看CEPARK AVR开发板的1602显示部分原理图:

1602时序图 - ZZ - 狂风悟浪

如你所见,KID画的这个也太能省了,就直接接1k电阻了事…….只有一点要说,就是这个解法,VL脚也就是偏压信号脚的电压就是不可调的了,即对比度固定。

下面附上源程序,里面做了详细注释,希望第一次接触时序图的朋友可以好好对照一下时序图来分析程序。请点击下载附件:

作几点说明:

1、 LCD1602对写进去的数据字节呢是以ASCII码识别的,所以写进去用以显示的字符数据必须是某一个ADCII码,当然如果你不想查ASCII表的话,可以用字符来代替,即用单引号包含的字符常量。所以,也由此推出,’0’和30H(0的ASCII码)是等价的。

2、 操作1602,要先对1602进行初始化,数据手册里写的比较清楚,并且对各个命令字的写入并没有先后要求。

3、 1602是有自定义字符的功能的,大家熟悉基本操作之后可以尝试自行拓展

4、 在每次写完数据之后,应该要将E引脚置为低电平,为下一次E的高脉冲做准备。延伸来说,这叫释放时钟线,要养成释放时钟线的好习惯。对配合时序大有裨益。

5、 可以将所要显示的字符一次定义在一个字符数组里,以调用字符数组的形式调用显示数据,这样程序会变得简洁而高效。

6、 记住时序的要求,往往是对最小时间有要求,在你严格配合时序的情况下仍然的不到理想的结果时,可以尝试插入延时。这个并不违反时序的要求。况且相当多的器件手册并没有详细的讲述最小时间要求

篇二:1602介绍时序图

简介

工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。

管脚功能

1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:

寄存器选择控制表

注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.

busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。

字符集

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。

以下是1602的16进制ASCII码表: (图片打开是大图)

读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。

显示地址

指令集

1602通过D0~D7的8位数据端传输数据和指令。显示模式设置: (初始化)

0011 1000 [0x38] 设置16×2显示,5×7点阵,8位数据接口;显示开关及光标设置:(初始化)

0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),N=0(读或写一个字符后地址指针减1 &光标减1),S=1 且 N=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动数据指针设置:

数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:

01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。通常推荐的初始化过程:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms

(以上都不检测忙信号)(以下都要检测忙信号)写指令38H

写指令08H 关闭显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置完毕Proteus仿真

使用Proteus仿真1602--即LM016L--依照数据手册说明可能遇到困难,可以尝试采用以下方案解决:

1、数据手册中可能介绍1602内部D0~D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为

加上拉电阻。建议不要使用排阻,使用普通电阻一个一个拉应该可以解决问题;2、可能碰到不能检测忙信号的问题,尝试使用延时把忙信号拖过去。

基本的读写时序图

读写操作时序如图1和2所示:写操作时序:

读操作时序:

篇三:LCD1602显示时序

[单片机教程]第十课 LCD1602显示

【进入博客】【进入论坛】更新时间:2009年01月08日浏览次数: 2123作者:来源: 在前面的九课中,我们学习了一些单片机的基础知识,在每一课中,我们着重以解决某一问题为目的,对于一些细节之处没有进行详细的说明,比如中断中控制字的设置方法等,所以建议大家手上还应当有一本较为详细的单片机教科书,论坛里的教程以简短、解决具体问题为目的,力求使大家能够容易上手,激发学习的热情,而教科书就可以补充一些更为详细的资料

这一课,我们就开始逐一的讲解实验板上的各种硬件资源的应用。我们先来学习一下实验板上LCD1602的控制方法。

1602可以显示2行、每行显示16个ASCII字符,并且可以自定义图形,只需要写入相对应字符的ASCII码就可以显示,使用上相对数码管更能显示丰富的信息,我们主要通过1602的显示程序来学习一下如何看时序图。

下面是1602各引脚的功能,具体不同厂家生产的引脚可能不一样,大家使用前要注意看厂家提供的资料。

图一

D0~D7端为8位数据口,进行数据传送,而RS、R/W、E端则配合可以做出不同的操作,对1602进行操作主要有四种,如下:

1、读状态,输入:RS=L,RW=H,E=H。输出:D0~D7=状态字

2、写指令,输入:RS=L,RW=L,D0~D7=指令,E=高脉冲。输出:无

3、读数据,输入:RS=H,RW=H,E=H。输出:D0~D7=数据

4、写数据,输入:RS=H,RW=L,D0~D7=数据,E=高脉冲。输出:无

从以上可以看出,如果想对1602进行何种操作,只要按其相对应的操作规程来做即可。

虽然以上有四种操作,但实际上归类起来只有二种,一种读一种写。好了,我们接着看看,进行读与写时时序图:

这张图初学者看起来可能有点晕,其实我们只要关注的地方是中间的Valid Data即有效数据区,我们进行读或写,无非都是想进行数据的传送,在时序图中,为了看起来更清楚些,我们画上两根红色,大家注意这个位置各个引脚的状态,先看读操作时序。

在进行读操作的时候,RW置于1,RS则根据读的内容(状态或数据)置为1或0,注意看图中的A和B两根红线,在A位置,E置为1,经过td时间后,可以在数据口读到正确的数据,由于td的时间极短(ns级),我们的单片机操作一般是us级,所以可以不考虑这个时间差,在将E置为1之后,就可以紧跟着指令去读取数据,在读到数据后,再将E置为0,经过THD2时间后,数据口上的数据失效。

在进行写操作的时候,RW要置为0,RS根据写的内容不同(指令或数据)置为1或0,同时,大家注意C和D两根红线,我们在将E置为1之前,要先将数据送到数据口上,然后,在C位置,将E置为1,经过tPW延时后,再将E置为0,在这个时间段内必须保证数据口上的数据稳定不变,为有效的数据。同理,由于tPW这些延时相对较短(ns级),所以在单片里也不必考虑延时问题。

我们下面来看看,程序上如何做到。我们看下面两个子程序,Read1602()用于读取1602的状态(读数据比较少用,这里不写了,大家自己改改就可以),并且将状态判断也写在这个子函数里面。Write1602()用于写入数据到1602里面,写指令、数据共用一个函数。大家对照图二的时序图看看是否一致。

为了防止读忙状态里陷入死循环,在Read1602()函数里加入一个循环变量i,在读状态时,数据线最高位是由1602内部拉为低电平的(表示空闲),当器件发生问题或者1602没有接好时,程序就会在这里等待,所以,加入一定时间限制是有必要的。

以上是两个基本的函数,在使用1602之前,必须对其进行初始化操作,初始化过程是往1602固定写入一定的指令,里面包括指定使用模式、清屏等等,各种指令的含义我们在课程后附上详细说明,来看下面的程序(mDelay函数和以前课程一样)。

有了以上三个函数,我们就可以把1602控制起来了。在1602上,分为二行,每行有16个字符位置,如何来在我们需要的位置上显示出对应的字符呢?我们先来看看这两行对应的地址是什么。

上图是1602显示RAM缓冲区对应的地址,要在对应的位置显示出字符,首先要写入一个设置数据地址的指令码(80H+地址),然后紧跟着写入要显示的数据即可。应用我们上面的Write1602()指令,执行下面二条指令。

写指令:Write1602(0x80+地址,0)

写数据:Write1602(字符ASCII码,1)

为了更直观的应用,我们编写下面两个函数,使用起来就更方便了。

WrByte1602()用于在固定位置写入一个字符,一次只能写一个,WrString1602()则是用来整行写入字符串的,一次只能写一行,字符串需要先定义好。

这样,我们基本上就掌握了1602的控制显示了,另外还有自定义图形的应用,一些扩展指令的使用,大家可以看看详细的技术资料,自己尝试,这里不再逐一说明。

这一课程到此结束,这课没有提供完整的程序,只有几个子函数,相信大家经过这么多课的学习,自己编写一下应该不难了,大家实际试试,作为课后作业。

本文已影响