lcd1602模块的基本组成_1602液晶显示模块P0口

lcd1602模块的基本组成_1602液晶显示模块P0口LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。下图即是该模块:(百度百科)一般来说,在嵌入式开发领域显示模块是非常重要的一部分,所以发展出了许多种应用在不同场合的集成显示模块。LCD1602由于出现较早,所以即便出现了应用更广泛的、…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

硬件模块

LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。下图即是该模块:
经典的LCD1602A模块

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏上相应位置的亮暗对应。例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

在这里插入图片描述
Lcd1602A有16个引脚,两组电源引脚(1,2;15,16号引脚),8跟数据线(D0~D7),3跟控制引脚(4,5,6号引脚),3号引脚VL是辅助显示用的,一般在PCB板上接电位器,通过该引脚调节背光亮度。从数据线就可以知道,该模块与单片机并行通信,同时还要额外占用3根控制线。Lcd1602的指令主要有以下几种:
在这里插入图片描述

驱动程序

实物模块驱动程序

根据这些指令,我们可以选择性地往LCD1602A的寄存器内写控制命令控制命令、读取状态或者显示内容,下面是基于51单片机的部分必要的C程序:

/*******************IO引脚定义*********************************************/
sbit LCD_RS=P1^0;//定义引脚
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
/********宏定义***********************************************************/
#define LCD_Data P0
#define Busy 0x80 //用于检测LCD状态字中的Busy标识

上面代码是反映了单片机与LCD1602硬件连接的逻辑,最后一行应特别注意,最后一行定义了一个字节的数据,用于辅助判断LCD是否处于忙状态(检测这一状态十分重要,因为LCD处于忙的状态是无法再响应别的单片机的要求的,所以基本上上面指令表的每一个操作进行前都要先检测LCD是否处于空闲状态),其具体实现代码如下:

/***********写数据********************************************************/	
void WriteDataLCD(unsigned char WDLCD)
{ 

ReadStatusLCD(); //检测忙
LCD_Data = WDLCD;
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 0; 		//若晶振速度太高可以在这后加小的延时
LCD_E = 0; 		//延时
LCD_E = 1;
}
/***********写指令********************************************************/	
void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测
{ 

if (BuysC) ReadStatusLCD(); //根据需要检测忙
LCD_Data = WCLCD;
LCD_RS = 0;
LCD_RW = 0; 
LCD_E = 0;
LCD_E = 0;
LCD_E = 1; 
}
/***********读数据********************************************************/	
unsigned char ReadDataLCD(void)
{ 

LCD_RS = 1; 
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
return(LCD_Data);
}
/***********读状态*******************************************************/	
unsigned char ReadStatusLCD(void)
{ 

LCD_Data = 0xFF; 
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
while (LCD_Data & Busy); //检测忙信号
return(LCD_Data);
}
/***********初始化********************************************************/	
void LCDInit(void)
{ 

LCD_Data = 0;
WriteCommandLCD(0x38,0); 	//三次模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCD(0x38,0);
Delay5Ms();
WriteCommandLCD(0x38,0); 
Delay5Ms();
WriteCommandLCD(0x38,1); 	//显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x08,1); 	//关闭显示
WriteCommandLCD(0x01,1); 	//显示清屏
WriteCommandLCD(0x06,1); 	//显示光标移动设置
WriteCommandLCD(0x0C,1); 	//显示开及光标设置
}
/***********按指定位置显示一个字符*******************************************/	
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{ 

Y &= 0x1;
X &= 0xF; 				//限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; 		//当要显示第二行时地址码+0x40;
X |= 0x80; 			//算出指令码
WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}

Proteus仿真驱动程序(LM016L)

#include "lcd.h"
#include <string.h>
void sleep(int i)
{ 

int x;
while(i--){ 

for(x=0;x<123;x++);
}
}
void LCD_Init(void)
{ 

unsigned char x;
// char c[]={0x38,0x0c,0x06,0x01,0x80};
char c[] = { 
0x38,0x08,0x01,0x06,0x0c};
for(x=0;x<5;x++)
{ 

e = 0;
rw = 0;
rs = 0;
LCD_DATA =c [x];
e = 1;
sleep(1);
e = 0;
}
}
void DisplayOneChar(unsigned char x,unsigned char y,char val)
{ 

x &= 0xf;
y &= 0x1;
if(y) x |= 0x40;
x |= 0x80;
e = 0;
rw = 0;
rs = 0;           
LCD_DATA = x;
e=1;
sleep(1);
e=0;
e = 0;
rw = 0;
rs = 1;           
LCD_DATA = val;
e=1;
sleep(1);
e=0;
}
void DisplayListChar(unsigned char x_s, unsigned char y_s, char xs[])
{ 

unsigned char x,length;
x_s &= 0xf;
y_s &= 0x1;
if(y_s) x_s |= 0x40;
x_s |= 0x80;
e = 0;
rw = 0;
rs = 0;           
LCD_DATA = x_s;
e=1;
sleep(1);
e=0;  
length = strlen(xs);
for(x = 0; x < length; x++){ 

e = 0;
rw = 0;
rs = 1;           
LCD_DATA = xs[x];
e=1;
sleep(1);
e=0;
}
}

总结

关注微信公众号“24K纯学渣”回复“lcd1602”获取程序文件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190477.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pyQt5 时时输出显示(PyCharm QtDesigner PyUIC开发)

    pyQt5 时时输出显示(PyCharm QtDesigner PyUIC开发)用QtDesigner工具进行界面绘制,注意各种插件的命名,以免生成的代码自己都看不懂。绘制好之后,再利用PyUIC把.ui文件转为.py文件。PyCharm可以集成QtDesignerPyUIC这两种工具。func.py:#-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile…

  • js编写HTML通过document.cookie写入不了cookie的问题[通俗易懂]

    js编写HTML通过document.cookie写入不了cookie的问题[通俗易懂]js中通过document.cookie写入不了cookie的问题使用VScode编写HTML应用cookie进行存储,发现编写无法读取到cookie的内容,即未能实现cookie存储。作为新手问题,可以考虑这个原因:只有当用在服务器或者本地的服务器中的时候,才能使用这个方法写入cookie,所以VScode没有使用服务器方式?这个原因可以通过方案一尝试解决:打开VScode,点击左侧扩展,输入liveserver,点击安装即可;安装成功后再VS界面右下角可以看到相应提示

  • pycharm配置python解释器的问题_python解释器的提示符

    pycharm配置python解释器的问题_python解释器的提示符转载自:https://blog.csdn.net/weixin_37861326/article/details/80327503在安装python环境后,通常可以利用IDEpyCharm来编译我们的python文件。创建一个python文件夹,用pyCharm打开文件夹,在文件夹中新建一个python文件demo.py也许你知道用cmd中的python指令pythondemo.py去运行这个文件,但是如何在pyCharm中运行python文件?pyCharm是一个功能非常强大的工具..

  • 交换机在局域网内的日常工作有哪些_交换机组建内部局域网

    交换机在局域网内的日常工作有哪些_交换机组建内部局域网动态主机配置协议(DynamicHostConfigurationProtocol)每一台新接入的机器都通过DHCP协议,来这个共享的IP地址里申请,然后自动配置好就可以了。等人走了

  • python pycharm 调试(debug)快捷键「建议收藏」

    python pycharm 调试(debug)快捷键「建议收藏」1.eclipse配置的debug快捷键1.showexecutionpoint(alt+F10)显示当前所有断点2.stepover(F6)单步调试。若函数A内存在子函数a时,不会进入子函数a内执行单步调试,而是把子函数a当作一个整体,一步执行3.stepinto(F5)单步调试。若函数A内存在子函数a时,会进入子函数a内执行单步调试。4.stepintomycode(Alt+Shift+F7)执行下一行但忽略libraries(导入库的语句)5.force

    2022年10月30日
  • 学习Oracle这一篇就够了

    学习Oracle这一篇就够了配套资料,免费下载链接:https://pan.baidu.com/s/1yjJY3IstA8aMQBPYhWNlCw提取码:qmpd复制这段内容后打开百度网盘手机App,操作更方便哦第一章数据库概述1.1、数据库的好处将数据持久化到本地提供结构化查询功能1.2、数据库的常见概念DB:数据库,存储数据的仓库DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数据库,常见的有MySQL、Oracle、SQLServerDBS:数据库系统,数据库系统是一个通称

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号