LCD 1602 稳定显示
LCD1602可显示两行,每行16个字符,不能显示汉字。16脚的LCD 1602带背光,14脚的不带背光。
2LCD1602 端口引脚
不一一记录手册上面是咋个描述LCD 1602的了。记录一下操作过程,下图是LCD 1602在51单片机上面的连线。
图1 LCD 与单片机接线图
D0-D7引脚连接在单片机的P0端口。
LCD_RS = P1^0;LCD_RW = P1^1;LCD_EN = P2^5;
查看LCD 1602手册,得到LCD引脚组合的含义如下:
表格1:LCD操作模式
模式 | 输入 | 输出 |
读状态 | RS=0,RW=H,EN为高变低脉冲 | 输出:D0~D7个状态值 |
读数据 | RS=1,RW=1,EN为高变低脉冲 | 输出:无 |
写指令 | RS=0,RW=0,D0--D7=数据,EN由高脉冲变为低脉冲 | 输出D0--D7状态值 |
写数据 | RS=1, RW=0, D0--D7=数据,EN由高脉冲变为低脉冲 | 输出D0--D7状态值 |
可以参照图1的接线图对这些模式和输入输出做出相应的理解。模式、输入都是跟单片机I/O端口相连的端口。输出是使LCD显示的内容。在编写程序时,可以先设置LCD显示内容的格式(初始化LCD),然后再对LCD进行读写操作。这些过程由LCD跟单片机相连的I/O端口来完成。
3LCD 1602的操作时序
查看LCD 1602手册,以LCD写操作时序为例记录在对LCD操作的过程中需要注意到的延迟语句的编写,否则可能导致对LCD的操作失败。
图2 LCD的写操作时序
根据表一LCD的操作时序可知,在RS,RW,E(N),DB7.0(D0-D7)满足一定时序的高低电平条件时就可以对LCD进行写操作。变化都不是瞬间的,在对RS等置高置低时,RS等变高变低有一个下划的过度时间,如果这种过渡的时间超过单片机内一条或几条指令的执行时间,则这种时序就有可能会被错开。如现在对LCD进行写操作,将RS置高,RW置低,准备好DB7.0数据,E由高变低等操作由以下代码完成:
LCD_RS = 1;LCD_RW = 0;DB7_0 = ‘A’;LCD_EN = 1;LCD_EN = 0;
RS在高电平时选择数据寄存器,在低电平时选择指令寄存器。
RW在高电平时进行读操作,在低电平时进行写操作。
E(N)为使能端,当E(N)端由高电平跳变为低电平时,LCD模块执行命令。
DB7.0为8位双向数据。
其中LCD_RS等都是单片机控制LCD RS等端口的引脚,如果(^-^)只有RS端彻底变为1的时间超过以上的所有代码执行时间,则在E低脉冲到来之时,RS还是低电平,所以由于RS的电平不满足条件对LCD的写操作将会失败。当然,传说LCD的电平变化时间比指令执行时间快,但是为了可靠稳定,在程序中肯定需要等待对应的端口彻底变为需要电平时再写其它端口的值。就这么等待太长时间肯定是会为程序的执行结果带来影响,只需要等待端口的电平能完全变化的时间即可。手册中有说明的:
图3 LCD初始化图
虽然需要等待的时间对于人类来说实在是可以忽略不计,但在LCD类中来说却是必须的。如果没有这些等待,那么就有可能遇不到LCD与你写入内容的邂逅或者出现偶尔成功偶尔失败的场景。
在每次读/写指令后都应该等待一段时间来等待LCD 端口电平的彻底变化,可用keil软件模拟一段时间,用5ms(等待时间小于5ms者)等时间代替需要等待的时间都是可以的。
4 LCD1602的指令集 相关
4.1 LCD指令集笔记
在LCD 1602指令集中,对LCD来说有四种意思:
(1)RS和RW都为0时表示对LCD写指令操作,包括写入LCD的显示模式和设定LCD地址的指令。.显示模式包括清屏、地址归为、显示状态、进入点设定、功能设定、游标显示模式操作;关于地址的操作包括设定CGRAM地址、设定DDRAM地址。
(2)当RS=0,RW=1时,表示读LCD状态,此时可以读取LCD忙信号,同时可以读取地址计数器的值。忙信号的状态用来确定LCD内部动作是否完成,若在LCD内部出于忙状态时对LCD进行读写操作将会失败。
(3)当RS=1时,若RW=0表示写数据操作,若RW=1表示读数据操作。
4.2 CGRAM
CGRAM为LCD模块内部的字符发生存储器,里面存了不同的点阵字符图形,包括阿拉伯数字,英文大小写字符等。每个字符都有一个固定的代码,如‘A’的代码是01000001,(41H),需要显示‘A’时只需要将地址为41H中的点阵图形显示出来就可以看见‘A’了。具体字符点阵图查看手册为全宜。
4.3 LCD1602显示屏内部显示地址表
输入显示字符地址,也就是告诉LCD在哪里显示字符。LCD供两行,第一行可立即显示字符的地址为00H—0FH,第二行可立即显示字符的地址为40H—67H,如果在其它地址中显示字符,需要通过移屏指令[00011000:整屏左移光标跟着移动; 00011100:整屏右移光标跟着移动]将它们移入可显示区域方可正确显示。当要在00H处显示字符时,写入的地址应为00H + 80H(因为置LCD显示位置时要求D7位始终为1,手
LCD1602稳定显 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)