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

    文章

    4278

    浏览量

    164097
  • 字符型
    +关注

    关注

    0

    文章

    9

    浏览量

    6699
  • 点阵型
    +关注

    关注

    0

    文章

    2

    浏览量

    5153
收藏 人收藏

    评论

    相关推荐

    VGA控制板、LCD串口LCD驱动IC

    本帖最后由 eehome 于 2013-1-5 09:57 编辑 单片机VGA控制板、LCD串口LCD驱动IC
    发表于 11-16 09:45

    LCD段码驱动单片机的要求

    ,偏压比呢又跟相应的COM数有关系。今天以常见的4COM跟8COM为例,跟大家探讨下。 当段码做4COM驱动时,常用的偏压比为1/2偏压比跟1/3偏压比,对单片机需要什么样的要求?首先,单片
    发表于 02-28 16:27

    3.5寸tftlcd能用8位的51单片机驱动吗?

    请教诸位大侠,手中有一块原子哥的3.5寸tftlcd,这个是16位8080并口驱动的,我想用8位的51单片机
    发表于 03-20 00:58

    51单片机驱动oled显示

    文章目录51单片机一.前言二.代码三.总结51单片机一.前言说起51,可以说是老古董了,刚开始接触单片机
    发表于 07-15 07:11

    ARM+51单片机开发板套件

    欢迎访问我的个人博客:51单片机开发环境搭建+流水灯51单片机数码管显示51单片机DS18B20
    发表于 07-16 06:12

    51单片机lcd1602程序详解

    51单片机lcd1602程序详解,LCD1602是我们常用的一种显示,一直想写一些关于元器件的介绍和使用。今天就来从
    发表于 07-19 09:20

    51单片机驱动 LCD1602液晶显示系统

    51单片机驱动 LCD1602液晶显示系统,51单片机驱动
    发表于 07-21 07:35

    51单片机是怎样驱动LCD1602的

    51单片机驱动LCD1602显示原理及例程1.LCD1602A介绍2.LCD1602A中文手册
    发表于 11-17 07:51

    单片机段式LCD驱动的方法

    目录一、参考资料二、准备工作1、LCD参数三、程序一、参考资料LCD段码式液晶-duty与bias的工作原理基于单片机的段式LCD低成本
    发表于 11-18 09:08

    如何设计一个基于51单片机的简易计算器

    1.简介本计算器是以MCS-51系列AT89C51单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并由
    发表于 11-18 08:50

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

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

    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显示原理及例程

    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

    51单片机仿真例程-lCD显示

    51单片机驱动LCD显示hello world#include<reg51.h>#include<stdio.h>#
    发表于 11-21 09:21 9次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>仿真例程-<b class='flag-5'>lCD</b>显示

    51单片机 LCD1602驱动显示(模板)+Proteus

    51单片机 LCD1602驱动显示(模板)+Proteus本项目工程篇,只展示LCD1602驱动
    发表于 11-23 17:06 30次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b> <b class='flag-5'>LCD</b>1602<b class='flag-5'>驱动</b>显示(模板)+Proteus