LCD1602概述

LCD1602是一种工业字符型液晶,能够显示16x02即32字符的内容,是一种广泛使用的字符显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。该显示屏的优点是耗电量低、体积小、辐射低。

LCD1602引脚接口说明

 第四脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第五脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W 共
同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,
当 RS 为高电平 R/W 为低电平时可以写入数据。

LCD1602模块控制指令

在哪显示,如何显示

显示在那

我们可以在LCD中看到的只有32的位置,在开发中我们是不是可以用2的5次方来进行定义,但实际上LCD1602会有我们看不见的部分,所以我们用D0到D7八根导线来实现对于显示位置的确定,例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第
一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实
际写入的数据应该是 01000000B(40H) +10000000B(80H)=11000000B(C0H)

显示什么

例如显示一个字母a,根据上图我们可以知道它应该为0110 0001换算成16进制为0x61,ASII值为97对应他的ASII值。

时序图

读操作时序

写操作

数序参数

由于时序时间间隔太小,我们同意用空函数nop()代替间隔

显示一个字符

#include <REGX51.H>
#include"intrins.h"#define databuffer P0  //定义8位数据线,P0端口组sbit RS=P1^0;    //读写寄存器选择位
sbit RW=P1^1;    //读写信号线
sbit EN=P1^4;    //使能端void chek_busy()
{char tmp;while(tmp & 0x80){RS=0;RW=1;EN=0;_nop_();tmp=databuffer;    //使用databuffer进行对于数据的缓存EN=1;_nop_();_nop_();EN=0;_nop_();}
}void   Write_Cmd_Func(char cmd)
{
chek_busy();RS=0; RW=0;EN=0;_nop_();databuffer=cmd;_nop_();EN=1;_nop_();_nop_();EN=0;_nop_();
}
void Write_Data_Func(char cmd)
{chek_busy();RS=1; RW=0;EN=0;_nop_();databuffer=cmd;_nop_();EN=1;_nop_();_nop_();EN=0;_nop_();
}
void Delay15ms()        //@11.0592MHz
{unsigned char i, j;i = 27;j = 226;do{while (--j);} while (--i);
}
void Delay5ms()     //@11.0592MHz
{unsigned char i, j;i = 9;j = 244;do{while (--j);} while (--i);
}void LCD1602_INIT()
{//(1)延时 15msDelay15ms();//(2)写指令 38H(不检测忙信号) Write_Cmd_Func(0x38);//(3)延时 5msDelay5ms();//(4)以后每次写指令,读/写数据操作均需要检测忙信号//(5)写指令 38H:显示模式设置Write_Cmd_Func(0x38);//(6)写指令 08H:显示关闭Write_Cmd_Func(0x08);//(7)写指令 01H:显示清屏Write_Cmd_Func(0x01);//(8)写指令 06H:显示光标移动设置Write_Cmd_Func(0x06);//(9)写指令 0CH:显示开及光标设置}Write_Cmd_Func(0x0c);}void main()
{
char position=0x80+0x05;
char dataShow='c';LCD1602_INIT();Write_Cmd_Func(position);  //选择要显示的地址Write_Data_Func(dataShow);   //发送要显示的字符}

显示字符串

#include <REGX51.H>
#include"intrins.h"#define databuffer P0  //定义8位数据线,P0端口组sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^4;void chek_busy()
{char tmp;while(tmp & 0x80){RS=0;RW=1;EN=0;_nop_();tmp=databuffer;EN=1;_nop_();_nop_();EN=0;_nop_();}
}void   Write_Cmd_Func(char cmd)
{
chek_busy();RS=0; RW=0;EN=0;_nop_();databuffer=cmd;_nop_();EN=1;_nop_();_nop_();EN=0;_nop_();
}
void Write_Data_Func(char cmd)
{chek_busy();RS=1; RW=0;EN=0;_nop_();databuffer=cmd;_nop_();EN=1;_nop_();_nop_();EN=0;_nop_();
}
void Delay15ms()        //@11.0592MHz
{unsigned char i, j;i = 27;j = 226;do{while (--j);} while (--i);
}
void Delay5ms()     //@11.0592MHz
{unsigned char i, j;i = 9;j = 244;do{while (--j);} while (--i);
}void LCD1602_INIT()
{//(1)延时 15msDelay15ms();//(2)写指令 38H(不检测忙信号) Write_Cmd_Func(0x38);//(3)延时 5msDelay5ms();//(4)以后每次写指令,读/写数据操作均需要检测忙信号//(5)写指令 38H:显示模式设置Write_Cmd_Func(0x38);//(6)写指令 08H:显示关闭Write_Cmd_Func(0x08);//(7)写指令 01H:显示清屏Write_Cmd_Func(0x01);//(8)写指令 06H:显示光标移动设置Write_Cmd_Func(0x06);//(9)写指令 0CH:显示开及光标设置}Write_Cmd_Func(0x0c);}
void LCD1602_showLine(char row ,char col,char *string)
{switch(row){case 1:Write_Cmd_Func(0x80+col);while(*string){Write_Data_Func(*string);string++;                }break;case 2:Write_Cmd_Func(0x80+0x40+col);while(*string){Write_Data_Func(*string);string++;}break;            }}void main()
{
char position=0x80+0x05;LCD1602_INIT();LCD1602_showLine(1,5,"NO1");LCD1602_showLine(2,0,"niuchenhui");}

LCD1602原理驱动代码及例程相关推荐

  1. 【常用传感器】LCD1602液晶工作原理详解及例程代码

    本文带你详细的了解下LCD1602液晶的工作原理以及代码编写 LCD1602液晶显示屏 LCD1602主要参数 LCD发光原理 LCD屏幕的组成: LCD和OLED区别: LCD1602引脚接线: L ...

  2. LoRa SX1278/76驱动原理 附代码

    LoRa SX1278/76驱动原理 附代码 原理解释 LoRa 关键参数说明 前导码: 报头: 显式报头模式: 隐式报头模式: LoRa 调制解调: 扩频因子: 编码率: 信号带宽: 代码说明 SP ...

  3. DS18B20温度传感器原理详解及例程代码、漏极开路

    [常用传感器]DS18B20温度传感器原理详解及例程代码_Z小旋的博客-CSDN博客_ds18b20温度传感器 传感器引脚及原理图 DS18B20传感器的引脚及封装图如下: DS18B20一共有三个引 ...

  4. 步进电机28BYJ-48的驱动(arduino,STM32平台),最全的驱动详细原理,驱动电路分析,驱动代码解释

    步进电机28BYJ-48的驱动(arduino平台,STM32),最全的驱动详细原理,驱动电路分析,驱动代码解释 目录 步进电机28BYJ-48的驱动(arduino平台,STM32),最全的驱动详细 ...

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

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

  6. TrueCrypt 6.2a原理及代码分析

    TrueCrypt 6.2a原理及代码分析 3 comments 25th Apr 10 rafa 1 项目物理布局 Project     |____ Boot /* MBR部分的代码 */     ...

  7. 在PyTorch中进行双线性采样:原理和代码详解

    ↑ 点击蓝字 关注视学算法 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/257958558 编辑丨极市平台 在pytorch中的双线性采样(Bilinear Sa ...

  8. Linux kernel 中模块化的平台驱动代码介绍

    介绍 在linux kernel中通过module_platform_driver来实现模块化平台驱动.大量的设备驱动程序都基于该种方式来实现,使用频次非常的高,在linux kernel 5.4.1 ...

  9. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

最新文章

  1. webapi demo
  2. CSU 1328 近似回文词【最长回文字符串(三种方法)】
  3. jdbc mysql 字符集_JDBC对Mysql utf8mb4字符集的处理
  4. Unity 脚本生命周期流程图
  5. linux文件压缩包,linux目录文件压缩包操作
  6. 计算机应用基础的文档,计算机应用基础
  7. spring-cloud-starter-openfeign使用详解
  8. 数据结构(三)树、二叉树、最优二叉树
  9. 数字图像处理 冈萨雷斯 一些理解
  10. OpenG的特点及功能
  11. 机器人开发--NDC方案
  12. 20_java使用谷歌邮箱发送邮件
  13. osgEarth使用笔记4——加载矢量数据
  14. 通过ip地址访问其他电脑的共享文件
  15. tomcat启动找不到jer报错
  16. 影音设备VCD解码板维修一些常识
  17. Java实现复杂excel格式导出
  18. uni app 开发微信小程序及上线体验
  19. 武汉计算机学校中专,武汉有哪些关于计算机中专学校
  20. 椰风,海风——海南行

热门文章

  1. 乘法逆元 java_乘法逆元的求法(5种)
  2. 使用MOG2对运动物体进行检测
  3. Dynamodb 备份策略
  4. vue项目文件夹介绍
  5. jenkins自动化_通过Jenkins自动化PSR合规性
  6. 【windows下直接把文件打包成war包】
  7. matlab,多条曲线画到一张图上
  8. Java导出Excel加电子回章_使用Excel制作一个喜欢的DIY电子印章
  9. 查看获取MD5和SHA1值(应用签名)*
  10. in a frame because it set 'X-Frame-Options' to 'sameorigin'.