LCD1602液晶显示屏的入门级应用(一)

2023-05-16

嵌入式小白,今天用到1602,被CGRAM DDRAM CGROM搞得乱七八糟,特此记录一下,供大家参考。

首先,1602液晶显示屏除了电源、地以外,有3个控制引脚 RS R/W E 和8个数据引脚DB0-7。建议8个数据引脚接在同一组上,程序写起来比较简单。硬件连接参考如图。


连接上硬件电路,就要写程序了,从名字可以看出来,1602显示两行,每行16个字符,一个字符包含的点阵可以自己设置(后边介绍)。

首先显示内容分为两种,一种是常用字符,存储在CGROM中,用户可以直接调用,另一种是自定义的字符,比如自己设计的一些奇怪的图形之,存储在CGRAM。当时被这两个名词和DDRAM搞得很乱,这里详细解释一下。

DDRAM是显示用的,从RAM可以看出来,是读的意思,地址与显示位置如下,每行40个地址,1602只用到前16个,共两行,对应关系如下。



当我们想在指定位置写入内容时,要先指定地址,如在第一行第一位写入,地址位是00H,再加上DB7的1,即80H(0010000000),第二行第一位是40H,再加上DB7的1,即C0H(0011000000),依次类推。

LCD的已有的字模存储在CGROM中,自定义的存储在CGRAM,留给自定义的位置只有8个地址,字模地址为01000000-01000111八个地址,也就是最多自定义8个符号或者图形。


根据这条指令,来写一个摄氏度℃的自定义符号,对应图如下


字符对应的数组为table【】={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00},将℃写入指定的位置之前,要先把对应数组写入CGRAM存储,再写入DDRAM显示。如果直接用已有的字符,可以直接把数组写入DDRAM显示。

区分清楚自定义字符和已有字符,程序就简单了。主要步骤是延时函数、写指令、写数据、初始化、主函数。

下面举两个例子,写入常规字符串12345,写入字符串℃。

程序一

#include<reg52.h>    //包含头文件

#define uint unsigned int  //预定义

#define uchar unsigned char 

sbit rs=P2^6;    //1602的数据/指令选择控制线 
sbit rw=P2^5;        //1602的读写控制线 
sbit en=P2^7;        //1602的使能控制线 
/*P0口接1602的D0~D7*/ 
uchar code table[]="1234";             //要显示的内容放入数组table
void delay(uint n)       //延时函数                       

    uint x,y;  
    for(x=n;x>0;x--) 
        for(y=110;y>0;y--); 

void lcd_wcom(uchar com)  //1602写命令函数                 

    rs=0;            //选择指令寄存器 
    rw=0;            //选择写 
    P0=com;            //把命令字送入P2 
    delay(5);            //延时一小会儿,让1602准备接收数据 
    en=1;           //使能线电平变化,命令送入1602的8位数据口 
    en=0; 

void lcd_wdat(uchar dat)        //1602写数据函数       

    rs=1;        //选择数据寄存器 
    rw=0;        //选择写 
    P0=dat;        //把要显示的数据送入P2 
    delay(5);        //延时一小会儿,让1602准备接收数据 
    en=1;        //使能线电平变化,数据送入1602的8位数据口 
    en=0; 

void lcd_init()              //1602初始化函数       

    lcd_wcom(0x38);       //8位数据,双列,5*7字形       
    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁 
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 
    lcd_wcom(0x01);    //清屏 

void main()            //主函数 
{     
    uchar m=0; 
    lcd_init();       //液晶初始化 
    lcd_wcom(0x80);   //显示地址设为80H(即00H,)上排第一位       
    for(m=0;m<4;m++)     //将table[]中的数据依次写入1602显示 
    { 
            lcd_wdat(table[m]);           
            delay(200); 
    } 
    while(1);        //动态停机 


程序二

#include<reg52.h>    //包含头文件

#define uint unsigned int  //预定义

#define uchar unsigned char 

sbit rs=P2^6;    //1602的数据/指令选择控制线 
sbit rw=P2^5;        //1602的读写控制线 
sbit en=P2^7;        //1602的使能控制线 
/*P0口接1602的D0~D7*/ 
uchar code table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};             //要显示的内容放入数组table
void delay(uint n)       //延时函数                       

    uint x,y;  
    for(x=n;x>0;x--) 
        for(y=110;y>0;y--); 

void lcd_wcom(uchar com)  //1602写命令函数                 

    rs=0;            //选择指令寄存器 
    rw=0;            //选择写 
    P0=com;            //把命令字送入P2 
    delay(5);            //延时一小会儿,让1602准备接收数据 
    en=1;           //使能线电平变化,命令送入1602的8位数据口 
    en=0; 

void lcd_wdat(uchar dat)        //1602写数据函数       

    rs=1;        //选择数据寄存器 
    rw=0;        //选择写 
    P0=dat;        //把要显示的数据送入P2 
    delay(5);        //延时一小会儿,让1602准备接收数据 
    en=1;        //使能线电平变化,数据送入1602的8位数据口 
    en=0; 

void lcd_init()              //1602初始化函数       

    lcd_wcom(0x38);       //8位数据,双列,5*7字形       
    lcd_wcom(0x0c);      //开启显示屏,关光标,光标不闪烁 
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 
    lcd_wcom(0x01);    //清屏 

void main()            //主函数 
{     
    uchar m; 

    lcd_init();       //液晶初始化 

    lcd_wcom(0x40);//设定CGRAM地址,把自定义字符存储进去     

    for(m=0;m<8;m++)     //将table[]中的数据依次写入1602显示 
    { 
            lcd_wdat(table[m]);           
            delay(200); 

    } 

    lcd_wcom(0x85);   //显示地址设为85H,上排中间位

    lcd_wdat(0);

    while(1);        //动态停机 


总结:区分DDRAM和CGRAM,DDRAM是字符对应在屏幕上的位置,CGRAM是把自己定义的字符存在8个字节里,即lcd_wcom(0x40)。

明天继续研究如何用液晶屏幕显示年月日,待续……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LCD1602液晶显示屏的入门级应用(一) 的相关文章

  • LCD1602液晶显示模块学习笔记

    LCD1602液晶显示模块 一 初识LCD6021 1 实物图1 2 引脚图1 3 引脚功能说明 二 显示位置三 显示内容四 指令集五 工作时序5 1 写操作时序5 2 读操作时序 六 编程思路6 1 写数据6 2 写指令6 3 初始化6
  • 你可以写个LCD1602的驱动代码,从当初的起点开始。

    你可以写个LCD1602的驱动代码 xff0c 从当初的起点开始 你现在才明白正确弄单片机的方式
  • LCD1602和LCD12864

    1602 字符型 xff08 字符型的模组 xff09 只能显示数字与字符 不可以显示汉字 12864 点阵型 xff08 图形型的模组 xff09 可根据需求任意显示字符 数字 汉字 图形 1602 为16字乘2行 12864 为128列
  • LCD1602液晶显示屏的入门级应用(一)

    嵌入式小白 xff0c 今天用到1602 xff0c 被CGRAM DDRAM CGROM搞得乱七八糟 xff0c 特此记录一下 xff0c 供大家参考 首先 xff0c 1602液晶显示屏除了电源 地以外 xff0c 有3个控制引脚 RS
  • 详解LCD1602液晶显示屏的使用

    1 简介 作为各类单片机实物设计的常用显示屏 xff0c LCD1602是一种专门用于显示字母 数字 符号等点阵式LCD xff0c 其1602是指LCD显示的内容为16X2 xff0c 即可以显示两行 xff0c 每行16个字符 xff0
  • LCD1602和12864显示器-第1季第17部分-朱有鹏-专题视频课程

    LCD1602和12864显示器 第1季第17部分 3539人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第17个课程 xff0c 主要讲解LCD1602和LCD12864这两种单片机常用LCD显示器的显示原理 以及
  • LCD1602和12864显示器

    1 LCD显示器相关背景 1 1 LCD简介 1 显示器 xff0c 常见显示器 2 LCD Liquid Crystal Display xff0c 液晶显示器 xff0c 原理介绍 3 LCD应用领域 4 LED OLED 1 2 电子
  • LCD1602按下复位后乱码的问题

    1602按下后会有乱码的问题 xff0c 其实根本上是硬件引起的 某些最小系统板的复位电路没做好 xff0c 按下复位键后 xff0c 就会产生乱码 但是出现这种现象 xff0c 是可以用软件后期修正的 由于LCD复位后默认是8线输入 xf
  • STM32F407的LCD1602液晶显示程序

    LCD1602 H ifndef LCD1602 H define LCD1602 H include sys h include stm32f4xx h unsigned char message 20 unsigned char mes
  • 树莓派上使用python实现LCD1602显示当前ip

    树莓派一般运行Linux操作系统后通过远程控制来运行 xff0c 但是往往由于网络原因导致树莓派分配的ip地址被改变 xff0c 致使需要重新连接屏幕后才能查看树莓派的当前ip 最近手头有个LCD1602 xff0c 所以尝试将通过驱动LC
  • STM32驱动lcd1602,并口8位 6800时序

    STM32驱动lcd1602 xff0c 并口8位 6800时序 一 LCD1602 xff08 3 3V硬件版本 xff09 简介 1 1 引脚 引脚 xff0c lcd1602采用标准接口 xff0c 6800时序8位并行数据传输 第
  • LCD1602温度显示程序设计流程

    博主福利 xff1a 100G 43 电子设计学习资源包 xff01 http mp weixin qq com mp homepage biz 61 MzU3OTczMzk5Mg 61 61 amp hid 61 7 amp sn 61
  • Lcd1602——斌哥51

    最新修改时间2022 7 22 LCD1602 16代表显示16个字符 xff0c 2代表总共显示两行 芯片的工作电压是4 5 5 5v 工作电流2 0ma xff08 5V xff09 模块最佳工作电压5 0v 字符尺寸 xff1a 2
  • 电子闹钟设计

    摘要 本设计是以89c51单片机作为控制核心的闹铃系统 本文大致可以分三个章节 第一章讲用单片机制作电子闹钟带来的优势 还有电子闹钟在未来的电子产品中的趋势以及本次设计所要实现的课题目标 第二章讲一些设计思路和硬件组成 第三讲程序代码 最后
  • 51单片机——串口通信

    51单片机 串口通信 串口通信 串口通信的原理 串口的配置 定时器的配置 c源代码 netty源代码 结果 本篇博客的最终效果是实现51单片机用串口发送Hello World netty监听串口读到Hello World后回发给51单片机
  • 51单片机——LCD1602液晶显示屏

    如下图 红框就是LCD1602液晶显示屏 他是可插拔的 插上去后数码管就会乱码无效了 因为他两共用了MCU的8个P0口 LCD1602原理图 从上面两幅图可以看出来 LCD1602的LCD D0 LCD D7分别对应MCU的P00 P07
  • Arduino基础入门篇31—LCD1602液晶显示

    LCD1602也叫1602字符型液晶 是一种专门用来显示字母 数字 符号的点阵型液晶模块 能同时显示16X2即32个字符 本篇我们来认识LCD1602 驱动它显示 Hello World 1 LCD1602介绍 对于单片机爱好者和电子爱好者
  • LCD1602芯片的使用——简单易懂

    题目 想在LCD1602上显示两行如下字样 huaianxinxi wantin 想完成上面的显示必须掌握LCD1602芯片的基本知识 将在程序下面附上LCD1602芯片的基本知识 供大家参考 我实现的比较简单 没有什么花哨的显示 大家首先
  • 2021年电赛模块化程序总结

    文章目录 1 ADC0804 2 LCD1602 3 AD9854 1 ADC0804 集成A D转换器品种繁多 选用时应综合考虑各种因素选取集成芯片 一般逐次比较型A D转换器用的比较多 ADC0804就是这类单片集成A D转换器 ADC
  • stm32cubeide驱动LCD1602显示屏

    STM32驱动LCD1602 硬件连接关系 STM32CUBEIDE设置 代码 项目设置 最后运行 硬件连接关系 LCD1602 STM32 VCC VCC GND GND VO VCC 滑动变阻 RS PB1 RW PB2 BOOT1 E

随机推荐