1.简介
LCD1602是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是HD44780或者其它兼容芯片。与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除了普通字符外,还可以显示点阵图案,带有汉字库的还可以显示汉字,它的并行驱动方式与LCD1602相差无几,所以,在这里花点时间是值得的。

一般来说,LCD1602有16条引脚,据说还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。这块LCD1602的型号是HJ1602A,是绘晶科技公司的产品,它有16条引脚。如图1所示:

2.硬件参数
(1) LCD1602主要技术参数
a.显示容量:16×2个字符
b.芯片工作电压:4.5—5.5V
c.工作电流:2.0mA(5.0V)
d.模块最佳工作电压:5.0V
e.字符尺寸:2.95×4.35(W×H)mm
(2) 引脚定义

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

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

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

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

上面的数据也可以用8X8的字模软件进行获取字符数据

用zimo221软件, 新建一个8*8的图像,留出左边3列,用右边5列点出自定义字符,选择取模方式C51,就可得到对应的编码

字符对应的数组为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)。

LCD1602液晶显示屏应用相关推荐

  1. 和12岁小同志搞创客开发:如何驱动LCD1602液晶显示屏?

     目录 1.简介和驱动原理 2.实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/cate ...

  2. STC89C52单片机 LCD1602液晶显示屏

    LCD1602显示 VVcat #include <reg52.h>typedef unsigned char uchar; typedef unsigned int uint;sbit ...

  3. 51单片机——LCD1602液晶显示屏

    如下图:红框就是LCD1602液晶显示屏,他是可插拔的,插上去后数码管就会乱码无效了,因为他两共用了MCU的8个P0口 LCD1602原理图 从上面两幅图可以看出来 LCD1602的LCD_D0~LC ...

  4. 外设驱动库开发笔记33:LCD1602液晶显示屏驱动

      LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形.在这一章我们就来讨论LCD ...

  5. STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创

    STM32通过(软/硬IIC)控制LCD1602液晶显示屏(IIC转8位并口的PCF8574转接板的使用)原创 A0,A1,A2全部悬空,那么PCF8574的IIC地址为0x4e.(具体原因,看PCF ...

  6. 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...

    描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...

  7. LCD1602液晶显示屏模块资料

    模块实例https://blog.csdn.net/qq_38393591/article/details/108643827 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符. ...

  8. LCD1602液晶显示屏的工作原理图是什么呢?

    本文重点是由深圳市兴宇合电子技术人员为大家介绍LCD1602液晶显示屏的工作原理以及原理图,希望对大家有所帮助. (1)LCD1602液晶显示屏工作原理如下: LCD1602液晶显示屏通过电压来改变填 ...

  9. LCD1602液晶显示屏用51单片机怎么驱动?(详细笔记附设计源码)

    LCD1602液晶显示 (一)LCD1602简介 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号的点阵型液晶模块.它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符 ...

  10. LCD1602液晶显示屏使用方法

    LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显 ...

最新文章

  1. Yocto基本概念及介绍
  2. Python os.system(command),这样执行的command命令,和主程序是异步的吗?
  3. 计算机原理中阶符是指,计算机原理复习题1
  4. linux 使用 byzanz 生成 gif 图片程序
  5. USB接口类型的区别
  6. 被踢出sci_这本世界上创刊最早的期刊竟被踢出 SCI 了?!
  7. 【路径规划】基于matlab遗传算法求解多式联运运输问题【含Matlab源码 877期】
  8. iOS13:UISceneDelegate
  9. centos6.5重置密码
  10. 360 se html document 广告,广告拦截 - 360极速浏览器
  11. OpenCV学习记录 三 (傅里叶逆变换原理及实现)
  12. 数据挖掘开发部署,主要分为哪几步?
  13. CDH /HDP 何去何从?
  14. 经验丰富的视觉设计师自我介绍怎么写
  15. 电脑如何播放杜比视界视频
  16. JSP内置对象使用大全
  17. 秘密的文件夹加密软件-超级秘密文件夹
  18. 图片画圈画箭头用什么软件_手机图片怎么画圈标记(教你标记图片重点)
  19. 码农曝同事改需求需先扫红包码,网友:优秀,会过日子的猿!
  20. sql server 中游标详解

热门文章

  1. 应用pagehelper实现大屏展示自动换页
  2. 2020起重机械指挥模拟考试题库及起重机械指挥实操考试视频
  3. 个人总结-oracle查询锁表、解锁语句
  4. detectron2 c++ 部署笔记
  5. Uinty3d 工程导入 Android Studio
  6. SSO (Single Sign On)
  7. html做坦克大战的效果,HTML5实现坦克大战(一)
  8. 北京/上海内推 | 小红书社区技术部招聘NLP/多模态算法工程师/实习生
  9. 分享免费与收费的主流报表工具推荐
  10. 基于SpringBoot框架的HIS互联网医院门诊信息管理系统源码JAVA语言开发