【51单片机】(手把手教你)1602液晶屏-基础篇
1602液晶简介
1602液晶也叫1602字符型液晶,16x02,每行16个字符显示两行。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
#度娘告知
引脚接口说明
1602液晶上有16个引脚,上面依次标了上述符号,与单片机上的接口依次对应连接即可,如图:
原理图
想知道如何操作液晶屏就需要看清楚自己单片机上与液晶屏连接引脚的控制原理图,我使用的是郭天祥的51单片机中的原理图。线上标的相同符号的地方是连在一起的。
1.直接接地
2.接VCC
3.接在一个滑动变阻上再与地相接 。VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
4.接RS->P3.5 。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
5.直接接地(因为我们一般都只让液晶屏显示即写入,所以这个单片机原理图直接接地)
6.LCDEN使能端->P3.4。当E端由高电平跳变成低电平时,液晶模块执行命令。
7-14.数据写入->P0
15.接一个电阻后(电阻为了限流,延长LCD的使用寿命也防止烧坏背光灯)与VCC连接(液晶屏背光正极)
16.直接接地(液晶屏背光负极)
1602 11条指令
指令1:清屏指令。
(1)清楚液晶显示器,即将DDRAM的内容全部填入空白的ASCII码20H
(2)地址计数器(AC)的值设为0
(3)光标复位到地址00H位置(显示器的左上方)
指令2:光标复位指令。
(1)光标返回地址00H
(2)AC值设为0
(3)DDRAM的内容不变
指令3:光标和显示模式设置。设定每次输入1位数据后光标的移位方向,并且设定输入后字符是否移动。
I/D(光标移动方向): 高:右移 低:左移
S(屏幕上所有文字是否移动):高 :有效右移 低:无效
指令4:显示开关控制。控制显示器开/关、光标显示/关闭以及光标是否闪烁
D(控制整体显示的开与关):高:开显示 低:关显示
C(控制光标的开与关): 高:有光标 低:无光标
B(控制光标是否闪烁): 高:闪烁 低:不闪烁
指令5:光标或显示移位。
S/C(移动文字/标) | R/L | |
0 | 0 | 光标左移1格且AC-1 |
0 | 1 | 光标右移1格且AC+1 |
1 | 0 | 显示器上字符全部左移1格但光标不动 |
1 | 1 | 显示器上字符全部右移1格但光标不动 |
指令6:功能设置命令。设定数据总线位数、显示的行数及字型。
DL(数据总线位数):高:8 低:4
N(显示行数) :高:2 低:1
F(显示点阵类型) :高:5*7点阵 低:5*10点阵
指令7:设定CGRAM地址指令。
设定下一个要存入数据的CGRAM的地址。
指令8:设定DDRAM地址指令。
设定下一个要存入数据的DDRAM的地址。
指令9:读取忙信号或AC地址指令。
(1)读取忙信号BF的内容
BF(液晶显示器是否忙):高:忙,暂时无法接收单片机送来的数据或指令 低:可接收
(2)读取地址计数器(AC)的内容
指令10:数据写入DDRAM或CGRAM指令。
(1)将字符码写入DDRAM,以使液晶显示屏显示出相对于的字符
(2)使用者自己设计的图形存入CGRAM
指令11:从CGRAM或DDRAM读出数据的指令。读取DDRAM或CGRAM中的内容。
时序图
代码
/*用液晶1602以从右侧移入方式第一行显示“Hello everyone!”第二行显示“Welcome to my blog!”
*/#include <reg52.h>#include <string.h> //strlen包含的头文件#define uint unsigned int#define uint8 unsigned charuint8 code table[]="Hello everyone!";uint8 code table1[]="Welcome to my blog!";sbit lcden=P3^4;sbit lcdrs=P3^5;sbit dula=P2^6;sbit wela=P2^7;uint8 num;void delay(uint z);void write_com(uint8 com);void write_data(uint8 date);void init();void Write1602_Str(uint addr,uint length,uint *pbuf);void main()
{init();Write1602_Str(0x80+0x10,strlen(table),table); //Hello everyone!Write1602_Str(0x80+0x50,strlen(table1),table1); //Welcome to my blog!while(1){ write_com(0x18);delay(200); //移动速度,可自定} }void delay(uint z){uint i,j;for(i=z;i>0;i--)for(j=0;j<921;j++);}void write_com(uint8 com){lcdrs=0; //RS=0->指令// R/W我的单片机上引脚直接接地了所以不用设置delay(1); //tsp1P0=com; //DB0-DB7delay(1); //tsp2lcden=1; //tRdelay(1); //tpWlcden=0; //tF、tHD1、tHD2}void write_data(uint8 date){lcdrs=1; //RS=1->数据delay(1);P0=date;delay(1);lcden=1;delay(1);lcden=0;}void init(){dula=0; //段选位关闭,因为P0口同时也是控制数据管的口wela=0; //同上lcden=0; //使能关(操作之前看时序图都需要E开始是0后来变为1)write_com(0x38); //设置16*2显示,5*7点阵,8位数据口write_com(0x0e); //设置开显示,不显示光标write_com(0x06); //写一个字符后地址指针加1write_com(0x01); //显示清0,数据指针清0}void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf){uint8 i; write_com(addr);for(i=0;i<length;i++)write_data(pbuf[i]);}
【51单片机】(手把手教你)1602液晶屏-基础篇相关推荐
- 《手把手教你学51单片机》之十三------1602液晶与串口的应用实例
第13章 1602液晶与串口的应用实例 理论上的内容要想逐步消化掌握,必须得通过大量的实践进行巩固,否则时间一长,极容易忘掉.尤其是一些编程相关的技巧,就是靠不停的写程序,不停的参考别人的程序慢慢积累 ...
- 【51单片机】(手把手教你)串口通信-基础篇
通信方式 并行 适合短距离通信,并行通信控制简单.相对传输速度快(8位一起传输). 串行 只能一位一位的传送. 同步(了解) 建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步.此时,传输数据的 ...
- 电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键
电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键 这次课程设计要完成的是制作一个基于51单片机的电子时钟的万年历(protues仿真),需要用到1602液晶屏+DS130 ...
- 基于51单片机防火防盗 LCD 1602屏+烟雾+温度+红外
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Proteus仿真 七.程序 部分代码 八.资料包括 摘要 随着社会和经 ...
- arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏
上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...
- 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...
- android平板怎么贴膜,手把手教你给手机屏贴膜 十分钟赶超天桥哥
手把手教你给手机屏贴膜 十分钟赶超天桥哥 来源:www.18183.com作者:皮卡时间:2015-04-07 对于有需求的朋友来说,一般也不想在天桥上找小贩贴膜,一方面他们手上的贴膜种类并不全,很多 ...
- 一文搞定!手把手教你文字识别(识别篇:LSTM+CTC, CRNN, chineseocr方法)
个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 文字识别是AI的一个重要应用场景,文字识别过程一般由图像输入.预处理.文本检测.文本识别.结果输出等环节组成. 其中,文本检测. ...
- 手把手教你编写游戏模拟器 - Chip8篇(1)
转自 http://www.cnblogs.com/YiranXie/p/3439934.html 手把手教你编写游戏模拟器 - Chip8篇(1) 手把手教你编写游戏模拟器 - Chip8篇 翻译整 ...
- 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...
描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...
最新文章
- 以太网控制芯片DM9000在2440裸机上终于能正确接收数据了(源代码工程已经上传)...
- Singleton模式
- 如何在C ++中使用数组?
- 分布式ID-美团(Leaf)
- MongoEngine MongoDB 的 ORM 库
- 星光 SaaS 伙伴甄云科技:如何构建更适合快成长企业的数字化采购管理平台?
- LeetCode 310 最小高度树
- 【机器学习-西瓜书】三、逻辑回归(LR);线性判别分析(LDA)
- pyinstaller下载_《快速掌握PyQt5》第二十五章 Pyinstaller打包
- 软件工程网络15个人作业3--案例分析
- vim 格式化 json 命令
- Unity Scene视图介绍
- python PDF文件拆分与合并
- 面试问题总结——关于YOLO系列(三)
- 20行代码教你如何批量提取图片中文字
- 深入解析数据压缩算法
- 黑名单(诸如反爬虫等)
- 企业网盘的优势到底在哪里?
- 出走的门徒之六—第四范式 戴文渊:先知登场
- Java生成Excel表格的代码