当前位置:首页 > 技术学院 > 热搜器件
[导读]1LCD 1602简介LCD1602可显示两行,每行16个字符,不能显示汉字。16脚的LCD 1602带背光,14脚的不带背光。2LCD1602 端口引脚不一一记录手册上面是咋个描述LCD 1602的了。记录一下操作过程,下图是LCD 1602在51单片机上

1LCD 1602简介

LCD1602可显示两行,每行16个字符,不能显示汉字。16脚的LCD 1602带背光,14脚的不带背光。

2LCD1602 端口引脚

不一一记录手册上面是咋个描述LCD 1602的了。记录一下操作过程,下图是LCD 1602在51单片机上面的连线。

 

图1 LCD 与单片机接线图

D0-D7引脚连接在单片机的P0端口。

[plain] view plaincopyprint?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状态值

[!--empirenews.page--]

可以参照图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由高变低等操作由以下代码完成:

[plain] view plaincopyprint?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的指令集 相关

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表示读数据操作。

CGRAM

CGRAM为LCD模块内部的字符发生存储器,里面存了不同的点阵字符图形,包括阿拉伯数字,英文大小写字符等。每个字符都有一个固定的代码,如‘A’的代码是01000001,(41H),需要显示‘A’时只需要将地址为41H中的点阵图形显示出来就可以看见‘A’了。具体字符点阵图查看手册为全宜。

LCD1602显示屏内部显示地址表

输入显示字符地址,也就是告诉LCD在哪里显示字符。LCD供两行,第一行可立即显示字符的地址为00H—0FH,第二行可立即显示字符的地址为40H—67H,如果在其它地址中显示字符,需要通过移屏指令[00011000:整屏左移光标跟着移动; 00011100:整屏右移光标跟着移动]将它们移入可显示区域方可正确显示。当要在00H处显示字符时,写入的地址应为00H + 80H(因为置LCD显示位置时要求D7位始终为1,手册中‘置数据存储器地址’指令)

5 LCD 1602程序编写

LCD初始化

[plain] view plaincopyprint?//----------------------- ---------

//写命令,初始化端口设置LCD显示模式

//----------------------- ---- ----

void LCD_mode_init()

{

LCD_EN = L;

//等待LCD电路完全接通

delay_ms( DELAY_TIME_FOR_INIT );

//P0= 00111000设置16x2显示,5x7点库,8位数据端口

write_command( 0x38 );

delay_ms( DELAY_TIME );

//LCD开显示,显示光标,光标闪烁

write_command( 0x0f );

//读写字符后地址指针、光标加1,整屏显示不移动

write_command( 0x06 );

//清显示,便对LCD写入

write_command( 0x01 );

}

根据图3,当LCD电路接通之时,需要用约15ms的时间来让LCD VDD电压达4.5V,虽然在开启单片机电源的时候程序还未执行到初始化程序就已经过了15ms让LCD VDD电源达4.5V。但也有可能程序中只包含了LCD程序,初始化被放在了最前面,15ms的时间足以让单片机运行很多指令了(可以由单片机的机器周期和一条指令执行的机器周期数比较一下),为了防止在LCDVDD电源未达4.5V时单片机程序已经执行到设置LCD显示模式的指令,就在进入LCD初始化程序时等待15ms的时间,让LCD电源初始化完毕。

写指令

[plain] view plaincopyprint?//-------- -----

//写命令

//--------- ----

void write_command( uchar command )

{

while( lcd_busy() );

LCD_RS = L;

LCD_RW = L;

delay_ms(DELAY_TIME);

P0 = command;

//等待数据稳定

delay_ms(DELAY_TIME);

LCD_EN = H;

//让使能位保持到一,负脉冲跳变

delay_ms( DELAY_TIME );

LCD_EN = L;

delay_ms( DELAY_TIME );[!--empirenews.page--]

}

写指令前首先要检查LCD内部操作是否已经完成,LCD的BF位(D7)为高电平表示忙,为低电平表示空闲。同理,在对每一个端口设置高低电平后,同样需要一段时间来等待电平的彻底变化。

写数据

[plain] view plaincopyprint?//-----------------------

//写数据,写LCD显示内容

//-----------------------

void write_data( uchar wdata )

{

while( lcd_busy() );

LCD_RS = H;

LCD_RW = L;

LCD_EN = L;

P0 = wdata;

//等待DB0-DB7数据稳定

delay_ms( DELAY_TIME );

LCD_EN = H;

//让使能位充分达到1

delay_ms( DELAY_TIME );

LCD_EN = L;

delay_ms( DELAY_TIME );

}

检测LCD忙信号

[plain] view plaincopyprint?//--------------------

//检测LCD的忙信号

//--------------------

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delay_ms( DELAY_TIME );

result = (bit)(P0&0x80);

LCD_EN = 0;

return result;

}

在检测LCD忙信号的同时,还可以设置一下原本该低或该高的位的状态。P0端口是连接到D0—D6端口的I/O引脚,0x80就是用来检测D7位状态的数据。

延迟函数

[plain] view plaincopyprint?//-------- -----

//延迟函数

//--------- ----

void delay_ms( uint ms )

{

uint i, j;

for(i = ms; i > 0; i--){

for(j = 110; j > 0; j--){

;

}

}

}

根据单片机的晶振和keil执行指令的时间计算,以上延迟函数约延迟ms 毫秒的时间。DELAY_TIME的宏值为5,表示延迟5毫秒的时间。LCD有的端口不需要延迟这么长的时间,这个可以调试到适合相应端口最适合的延迟时间即可。借助手册和枚举调试法。

运行结果

将初始化函数放置在main函数中后,将LCD的显示地址设置在第一行第一列(此指令在写指令集中,可调用write_command( 0x80)来完成),然后写字符到LCD第一行中。再将显示地址跳到第二行,地址后移需要显示字符传长度个单位,写入显示的字符传,对整个屏幕移位(由写指令集中指令完成,移字符传长度那么多位,移完一个停留的时间需要长点,如200ms左右的时间)。

然后让程序等待,只为LCD操作演示^-^。

程序的效果为:首先在第一行显示了指定的字符串。当移入第二行字符串时,由于是整个屏幕的移动,所以第一行字符串也随之移入了屏幕的左边。

现将两行的字符串显示在LCD屏幕之上,不采取移动的操作。

 

6 总结

电平变化时不是瞬间的,需要用延迟函数来等待相应位彻底的编程预期的电平。这是跟写其它程序的一个区别。每逢遇到对硬件引脚电平的置位时,都需要结合手册看看对应引脚的灵敏度,若高出指令执行时间徐许多数量级就不用延迟语句,否则应当考虑用延迟语句来等待。应该走进硬件的操作时序世界中去才能编写好它们的程序。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

慕尼黑2025年9月11日 /美通社/ -- 高端智能电动汽车品牌问界(AITO)在2025年德国国际汽车及智慧出行博览会(IAA MOBILITY)上,正式发布了其最新全球产品阵容——专为中东市场深度本地化打造的AIT...

关键字: AI 智能驾驶 测试 生态系统

香港2025年 9月12日 /美通社/ -- 全球领先的互联网社区创建者 - 网龙网络控股有限公司 ("网龙"或"本公司",香港交易所股票代码:777)欣然宣布,其子公司My...

关键字: AI 远程控制 控制技术 BSP

AI赋能制造,黄埔汇聚全球新机遇 广州2025年9月11日 /美通社/ -- 2025年9月10日,由广州开发区投资集团有限公司、广州开发区黄埔区具身智能机器人产业发展促进会、华南美国商会共同主办的"2025...

关键字: 智能制造 AI 人工智能 供应链

天津2025年9月11日 /美通社/ -- 国际能源署(IEA)数据显示,2024 年全球数据中心电力消耗达 415 太瓦时,占全球总用电量的 1.5%,预计到 2030 年,这一数字将飙升至 945 太瓦时,近乎翻番,...

关键字: 模型 AI 数据中心 BSP

深圳2025年9月11日 /美通社/ -- 近日,德国柏林国际电子消费品展览会(简称IFA)期间,国际公认的测试、检验和认证机构SGS为极壳(Hypershell) 全球首款户外动力外骨骼产品Hypershell X 系...

关键字: SHELL RS AI SI

近日,一则关于 AI 算力领域的消息引发行业震动!据科技网站 The Information 援引四位知情人士爆料,中国科技巨头阿里巴巴与百度已正式将自研芯片应用于 AI 大模型训练,打破了此前对英伟达芯片的单一依赖。

关键字: AI 算力 阿里 百度 芯片 AI模型

2025年9月11日,中国上海 — 思特威(上海)电子科技股份有限公司(股票简称:思特威,股票代码:688213)近日宣布,全新推出5000万像素0.7μm像素尺寸手机应用CMOS图像传感器——SC535XS。SC535...

关键字: CMOS图像传感器 手机 AI

2025年上半年,中国电子行业在 AI 与智能制造双轮驱动下活力迸发,规模以上电子信息制造业增加值同比增长11.1%,出口、AI 终端创新与国产软硬件生态均呈向好态势。作为感知层核心的传感器,正成为技术变革与产业跃迁的关...

关键字: AI 智能制造 传感器

2025 IPC CEMAC电子制造年会将于9月25日至26日在上海举办。年会以“Shaping a Sustainable Future(共塑可持续未来)”为主题,汇聚国内外专家学者、产业领袖与制造精英,围绕先进封装、...

关键字: PCB 电子制造 AI
关闭