LCD1602的解读(详细步骤分析)
编程初始化条件–写命令
LCD1602液晶模块内部的控制器共有11条控制指令
**
一、
**
DDRAM(display data RAM)是显示数据随机存储器
CGROM :1602液晶模块内部的字符发生存储器(CGROM:Custom Glyph Read-only Memory定制字符只读存储器)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” ; 首先显示内容分为两种,一种是常用字符,存储在CGROM中,用户可以直接调用,另一种是自定义的字符,比如自己设计的一些奇怪的图形之,存储在CGRAM;
对于CGRAM和CGROM只是在你想要定制你自己想要的字符时才用到,也是写命令进行初始化时设置的指令
【注意】这个图在指令设置时对应的地址不一定对,主要是读者方便理解CGRAM和CGROM
LCD的已有的字模存储在CGROM中,自定义的存储在CGRAM,留给自定义的位置只有8个地址,字模地址为01000000-01000111八个地址,也就是最多自定义8个符号或者图形。
LCD1602按其说明书说明,可以设置成为四位总线(想当于4个并行接口),原八位并口输入接线可以减少四个,即只接D4-D7,这适用于单片机接口比较少或比较紧张的情况下。不过,接成四位总线后,发送任何八位数据都应分两次进行,先发高四位,再发低四位。在初始化时,应将LCD1602设置成四位总线。其他控制与八位总线完全相同。
定制字符这部分可以参考一下该作者的
原文链接:https://blog.csdn.net/weixin_42133183/article/details/80911996
二
地址是用16进制表示的,比如00H表示第一个字节,十六进制27转换为十进制就是39,表示第40个字节;第二行是直接从十六进制40H开始的(第一行后面的还有一些地址不使用所以在这不提,仅提到这80个字节)
举例比如第二行第一字符0100 0000(40H) 根据指令8可知,DDRAM存储器的地址设置(1000 0000)+ 屏幕字符坐标的具体地址(0100 0000)
这个用处只是用来你显示的数据的第一个字符从哪里开始
# include"reg51.h"typedef unsigned int u16;
typedef unsigned char u8;#define lcd1602D0_D7 P0 //D0-D7
sbit lcd_E=P2^7; //使能端
sbit lcd_W=P2^5;
sbit lcd_RS=P2^6;void delay(u16 i)
{while(i--);
}u8 display1[]=" TEST Distance!!!";
u8 display2[]=":0.0000 m";//输出一个字符串void lcdwritecommand(u8 comd) //先写命令。。。//命令也是靠时序来执行的
{lcd_E=0;//使能lcd_RS=0;//0表示选择写命令,1表示选择写数据lcd_W=0;// 0表示写,1表示读lcd1602D0_D7=comd;//将该一个字节数据放入总线(直接对应p0管脚)delay(10);//视频说要延时1个ms???lcd_E=1;lcd_E=0; //使能产生一个下降沿
}
void lcdwritedat(u8 dat) //后写数据。。。。根据写数据时序图来写//(以下内容已经是在写时序中)
{lcd_E=0;//使能lcd_RS=1;//0表示选择写命令,1表示选择写数据lcd_W=0;// 0表示写,1表示读lcd1602D0_D7=dat;//将该一个字节数据放入总线(直接对应p0管脚)delay(10);//lcd_E=1;lcd_E=0; //使能产生一个下降沿
}
void lcdinit()
{ lcdwritecommand(0x38);//LCD1602指令4,选择8总线(并行口)lcdwritecommand(0x0f);//指令3lcdwritecommand(0x06);//指令2lcdwritecommand(0x01);//指令1lcdwritecommand(0x8f);//显示初始数据光标第一行第一列???//问题一:出现一个问题就是数据是从第6位开始显示的
}
void main()
{u8 i,j;lcdinit(); //lcd初始化for(i=0;i<21;i++){lcdwritedat(display1[i]);//第一行一个字符一个字符输出delay(10);}lcdwritecommand(0xc1);for(j=0;j<9;j++){lcdwritedat(display2[j]);//第二行一个字符一个字符输出delay(10);}while(1);
}
LCD1602的解读(详细步骤分析)相关推荐
- CSS项目基础实战:实现小米官网+详细步骤分析+出错问题总结
1.有关项目的基本结构:|--html 文件与 CSS 文件单独设置分开.|--在html中引入:|--重置样式表|--网页基本样式表:所有网页所共有使用的部分:网页宽度.网页字体.颜色.设置最小宽度 ...
- 使用tensorflow建模LSTM的详细步骤通俗易懂解读
使用tensorflow建模LSTM的详细步骤人性化解读 一步步条理清晰的写tensorflow代码 Understanding LSTM in Tensorflow(MNIST dataset) L ...
- 一文带你了解对游戏外挂的逆向分析的详细步骤。
详细的逆向分析步骤,可以点击下面文字链接进行查看. 链接:游戏外挂样本逆向详细步骤
- python实现情感分析_使用python+机器学习方法进行情感分析(详细步骤)
使用python+机器学习方法进行情感分析(详细步骤) 2021-02-07 不是有词典匹配的方法了吗?怎么还搞多个机器学习方法.因为词典方法和机器学习方法各有千秋.机器学习的方法精确度更高,因为词典 ...
- python网格交易法详解_什么是网格交易法?网格交易法的详细步骤及举例分析
什么是网格交易法?网格交易法的详细步骤及举例分析 我们先来说一下什么是网格交易法,所谓的网格交易法,就是设定价值中枢,通过档位买入模式对我们要投资的个股进行机械化的操作,当股价下跌的时候我们分批买入, ...
- CentOS 7中Docker安装详细步骤 ( 资源 )
2019独角兽企业重金招聘Python工程师标准>>> 注意:centos 6.9上默认是安装docker早期的1.7.*版本,后续docker 分CE和EE的版本,只能安装在cen ...
- mysql5.5在windows7下编译的详细步骤_Windows7下编译MySQL5.5的详细步骤
由于在window7下编译MySQL5.5.19过程中遇到很多问题,所以再次把详细步骤写出来,以供大家参阅,这个是完整通过实验的步骤,网上一堆的东西不是少这个就是少那个,所以整理了下,希望帮助大家更好 ...
- 三个步骤分析网站优化程度
三个步骤分析网站优化程度 分析是做好seo优化必备工作之一!只有事前做好了充足的分析工作才能让网站的后期优化工作畅通无阻!那么如何细致的分析网站呢?!下面福州seo维思和大家分享三个步骤分析网站优化程 ...
- ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤(特征分析与特征处理)+分类模型设计)
ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤+分类模型设计) 目录 一.总体思路框架 二.特征工程详细步骤(特征分析与特征处 ...
最新文章
- 从程序员到项目经理(20):让员工为目标而干活
- java安全编码实践总结
- VMware下桥接设置
- Spark Java API:foreach、foreachPartition、lookup
- bcp out 带列名导出_从零开始学习 MySQL 系列索引、视图、导入和导出
- c语言程序中必不可少的,C语言程序设计(第3章程序控制语句)2
- python中outside loop_Python入门指引
- 华为周跃峰:揭秘“关于GaussDB数据库的五大谎言”
- LiteOS:剖析时间管理模块源代码
- Android 系统(230)---View 绘制流程 —— 基础(1)
- Python使用UDP协议打造在线时间服务器
- mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
- 阿里云服务器安装mysql数据库及连接使用
- 关于opengl 编程指南中使用几何着色器渲染毛发的分析
- 小程序长列表优化,解决数据过多白屏问题
- 【JavaScript设计模式】(一)
- 动态规划挖金矿问题——python实现
- HL7(Health Level Seven)
- 41-fcntl设置文件锁
- GDR-Net: Geometry-Guided Direct Regression Network for Monocular 6D Object Pose Estimati