0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机的驱动LCD屏

汽车电子威廉希尔官方网站 来源:嵌入式悦翔园 作者: JamesBin 2023-02-17 14:47 次阅读

液晶显示器(LiquidCrystal Display,简称LCD)可以显示数字、字母、汉字、以及图形图像等丰富的内容,应用非常广泛。液晶显示器由液晶显示部分和控制器两部分组成,控制器通过控制液晶显示区的电压,实现字符的显示。LCD可分为段型、字符型和点阵型三种。其中1602字符型液晶是应用最广泛的液晶显示器之一。

一、LCD简介

1602液晶的控制器是采用日立公司的HD44780集成电路,只需将待显字符的ASCII码放入其数据存储器,字符就会自动在液晶显示器上显示。该显示器每屏最多可显示2行,每行16个字符,共32个字符。

1602型LCD分有背光(16个引脚)和无背光(14个引脚)两种。14脚1602型LCD引脚共分成三类:

1、电源引脚: 引脚1和引脚2 分别是电源正极(VDD)和负极(VSS)。

2、数据引脚: 引脚7到引脚14共8个引脚是双向数据总线的第0位到第8位。由于P0口无上拉电阻,因此如果需要接到P0口,则必须接上拉电阻。而接到其他并口,可不接上拉电阻。

图片

二、控制介绍

控制引脚:

引脚3(VL)是反视度调整引脚,通常接地。

引脚4(RS)是寄存器选择引脚,当RS=1时选择数据寄存器,当RS=0时,选择指令寄存器。

引脚5(R/W)是读写选择引脚,当R/W=1时读,当R/W=0时写。

引脚6(E)是模块使能信号,当E上为高电平时,可以读出数据或指令;当E上电平正跳变时,开始写入数据或指令;当E上电平负跳变时,开始执行指令。

图片

三、LCD初始化

关于这一点,LCD1602说明手册上已经明确告诉我们了,想都不要去想,管你这些什么意思,照做即可。

延时15ms


写指令38H


延时5ms


写指令38H


写指令08H


写指令01H


写指令06H


写指令0CH

以上为初始化过程,延时部分好解决,前面讲过了。这里就看如何“写指令”了。问题来了,液晶模块怎么知道单片机给我的是命令还是数据。(叁议电子www.ppptalk.com)LCD1602看到RS为高时,就明白了,哦,你要给我传送数据了;看到RS为低时,就知道你要给我指令了。这个只是选择“命令”还是“数据”,还有一个问题,我们的目的是“写指令”,那么液晶模块怎么知道是“写”还是“读”呢?

再来看RW信号,当RW为低的时候,液晶模块就知道了,单片机要给我“写”了;当RW为高的时候,液晶模块也知道了,单片机要“读”了。很明显,我们这里要把RW设置为低。“写/读”和“指令/数据”都知道如何告诉液晶模块了,那么这个指令从怎么传过去呢?

通过D0-D7这8根线(也就是P2端口)来传输,比如我要传送的指令为x033,那么就把这个数据0x33放到P2端口,当LCD1602看到“写”和“指令”的时候,就知道把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;//使指令有效,开始执行


}

五、代码讲解

指令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(unsigned char Cmd)函数中的Cmd参数就行了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4425

    浏览量

    167425
  • 字符型
    +关注

    关注

    0

    文章

    9

    浏览量

    6728
  • 点阵型
    +关注

    关注

    0

    文章

    2

    浏览量

    5163
收藏 人收藏

    评论

    相关推荐

    C51单片机相关的LCD驱动程序源代码

    C51单片机相关的LCD驱动程序源代码,可供参考调试
    发表于 02-22 18:14 19次下载

    使用51单片机实现LCD滚动显示的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD滚动显示的程序免费下载。
    发表于 07-15 17:39 12次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>实现<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>滚动显示的程序免费下载

    使用51单片机驱动HT1621B段码LCD的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机驱动HT1621B段码LCD的程序免费下载。
    发表于 07-11 17:40 122次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>驱动</b>HT1621B段码<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>的程序免费下载

    使用51单片机驱动动态笔段式LCD的资料和Proteus仿真详细说明

    在分析多背极动态笔段式 LCD驱动原理及其控制逻辑的基础上 ,使用 AT89C51单片机对 V IM - 332 - DP动态笔段式 LCD
    发表于 10-19 08:00 4次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>驱动</b>动态笔段式<b class='flag-5'>LCD</b>的资料和Proteus仿真详细说明

    使用51单片机实现LCD12864显示显示的仿真文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD12864显示显示的仿真文件免费下载。
    发表于 03-23 11:05 34次下载

    使用51单片机实现LCD12864显示显示的仿真文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD12864显示显示的仿真文件免费下载。
    发表于 03-23 11:05 90次下载

    使用51单片机实现LCD1602显示显示的仿真文件免费下载

    本文档的主要内容详细介绍的使用51单片机实现LCD1602显示显示的仿真文件免费下载。
    发表于 03-23 11:05 70次下载

    基于51单片机LCD1602显示proteus实验

    基于51单片机LCD1602显示proteus实验
    发表于 04-30 10:14 38次下载

    51单片机驱动超声波测距模块

    51单片机驱动超声波测距模块(单片机最小系统)-使用51单片机
    发表于 07-22 10:01 61次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>驱动</b>超声波测距模块

    51单片机驱动LCD1602显示原理及例程

    51单片机驱动LCD1602显示原理及例程1.LCD1602A介绍2.LCD1602A中文手册
    发表于 11-10 19:51 149次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>驱动</b><b class='flag-5'>LCD</b>1602显示原理及例程

    ARM+51单片机开发板套件试用体验

    欢迎访问我的个人博客:51单片机开发环境搭建+流水灯51单片机数码管显示51单片机DS18B20
    发表于 11-13 15:51 9次下载
    ARM+<b class='flag-5'>51</b><b class='flag-5'>单片机</b>开发板套件试用体验

    51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块
    发表于 11-16 15:06 29次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>怎么显示当前时间_(记录)<b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>LCD</b>1602液晶显示模块

    MSP430单片机HT1261驱动LCD段码

    MSP430单片机HT1261驱动LCD段码
    发表于 11-19 15:36 24次下载
    MSP430<b class='flag-5'>单片机</b>HT1261<b class='flag-5'>驱动</b><b class='flag-5'>LCD</b>段码<b class='flag-5'>屏</b>

    51单片机驱动——LCD1602

    51单片机驱动——LCD16021.描述51单片机控制LCD
    发表于 11-21 09:06 22次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>驱动</b>——<b class='flag-5'>LCD</b>1602

    通过 I2C 驱动 LCD1602 液晶51单片机

    通过 I2C 驱动 LCD1602 液晶51单片机)硬件实物原理图3.程序#include <reg
    发表于 11-23 17:06 49次下载
    通过 I2C <b class='flag-5'>驱动</b> <b class='flag-5'>LCD</b>1602 液晶<b class='flag-5'>屏</b>(<b class='flag-5'>51</b><b class='flag-5'>单片机</b>)