单片机学习小组
登录
直播中
陈敏
7年用户
1318经验值
私信
关注
如何对LCD1602液晶显示屏进行编程呢
开启该帖子的消息推送
LCD1602
液晶显示屏
编程
LCD1602液晶显示屏的引脚功能有哪些呢?
如何对LCD1602液晶显示屏进行编程呢?
回帖
(1)
倪梁靓
2022-1-26 10:55:44
一、 学习要点(串行多总线类外设):
1、 正确分析时序图;
2、 多总线(多条数据线区别于DHT11这类单总线控制线不算)操作的传感器,要区单总线的传感器DHT11等,单总线时位操作的而“多总线”是字节操作的,不用8次for循环处理数据;
3、 判忙函数中,检测P0^7引脚时要提前赋值P0=0XFF,因为51单片机检测高电平时,首先要给检测的引脚赋值高电平;
4、 操作时序既要遵循也要适时的加入小延时等待机器响应。
二、手册分析
二、手册分析
1、结构块图
2、引脚功能图
3、写操作时序:
4、读操作时序
5、指令寄存器(IR)和数据寄存器(DR):(图2-5)
模块内部具有两个 8 位寄存器:指令寄存器(IR)和数据寄存器(DR)。用户可以通过 RS 和 R/W 输入信号的组合选择指定的寄存器,进行相应的操作。下表中列出了组合选择方式:(手册有误,已更正)
6、 忙标志位 BF:忙标志 BF=1 时,表明模块正在进行内部操作,此时不接受任何外部指令和数据。当 RS=0、R/W=1 以及 E 为高电平时,BF 输出到 DB7。每次操作之前最好先进行状态字检测,只有在确认 BF=0 之后,MPU 才能访问模块
7、显示数据寄存器:DDRAM 地址与 LCD 显示屏上的显示位置的对应关系如:执行显示移位操作时,对应的 DDRAM 地址也发生移位,每行 16 个字符的显示,共有 2 行。移位前的地址对应关系。
8、指令说明:
3、设置输入模式:
三:编程
1、程序效果:
2、程序.c文件
#include “LCD1602.h”
#include “string.h”
void InspectBusyFlag( ) ;
void Delayxms(unsigned int t) //@11.0592MHz
{
unsigned char i, j;
unsigned int x;
for(x=0;x
{
nop
();
i = 4;
j = 146;
do
{
while (–j);
} while (–i);
}
}
void Wr_OneByte2Lcd1602(char DatorCmd,char val)
{
InspectBusyFlag( );
Delayxms(1);
RS = DatorCmd; //0、指令寄存器 1、数据寄存器
RW = 0; //0读操作、1写操作
EN = 1;
P0 = val;
nop
();
nop
();
nop
();
EN = 0;
Delayxms(1);
}
void Rd_OneByte2Lcd1602(char DatorCmd,char val)
{
EN = 0;
RS = DatorCmd; //0、指令寄存器 1、数据寄存器
RW = 0; //0读操作、1写操作
EN = 1;
nop
();
P0 = val;
}
void InspectBusyFlag( ) //检查忙标志位,BF=1表示正在忙碌中
{
P0 = 0xff;
RS = 0;
RW = 1;
EN = 1;
Delayxms(1);
while (0x80&P0);
EN = 0;
}
void LCD1602_Init(void)
{
Wr_OneByte2Lcd1602(CMD,0x38);
Delayxms(5);
Wr_OneByte2Lcd1602(CMD,0x38);
Wr_OneByte2Lcd1602(CMD,0x01);
Wr_OneByte2Lcd1602(CMD,0x06);
Delayxms(5);
Wr_OneByte2Lcd1602(CMD,0x0C);
}
void Display_CharOnLcd(unsigned char x,unsigned char y,char val)
{
if( 0==y )
{
Wr_OneByte2Lcd1602(CMD,0x80 + x);
}
else
{
Wr_OneByte2Lcd1602(CMD,0xC0 + x);
}
Wr_OneByte2Lcd1602(DAT,val);
}
void Display_StrOnLcd1602(unsigned char x,unsigned char y,char
p)
{
char num,i;
num = strlen§;
for(i=0;i
{
Delayxms(2);
Display_CharOnLcd(x+i,y,
(p+i)) ;
}
}
一、 学习要点(串行多总线类外设):
1、 正确分析时序图;
2、 多总线(多条数据线区别于DHT11这类单总线控制线不算)操作的传感器,要区单总线的传感器DHT11等,单总线时位操作的而“多总线”是字节操作的,不用8次for循环处理数据;
3、 判忙函数中,检测P0^7引脚时要提前赋值P0=0XFF,因为51单片机检测高电平时,首先要给检测的引脚赋值高电平;
4、 操作时序既要遵循也要适时的加入小延时等待机器响应。
二、手册分析
二、手册分析
1、结构块图
2、引脚功能图
3、写操作时序:
4、读操作时序
5、指令寄存器(IR)和数据寄存器(DR):(图2-5)
模块内部具有两个 8 位寄存器:指令寄存器(IR)和数据寄存器(DR)。用户可以通过 RS 和 R/W 输入信号的组合选择指定的寄存器,进行相应的操作。下表中列出了组合选择方式:(手册有误,已更正)
6、 忙标志位 BF:忙标志 BF=1 时,表明模块正在进行内部操作,此时不接受任何外部指令和数据。当 RS=0、R/W=1 以及 E 为高电平时,BF 输出到 DB7。每次操作之前最好先进行状态字检测,只有在确认 BF=0 之后,MPU 才能访问模块
7、显示数据寄存器:DDRAM 地址与 LCD 显示屏上的显示位置的对应关系如:执行显示移位操作时,对应的 DDRAM 地址也发生移位,每行 16 个字符的显示,共有 2 行。移位前的地址对应关系。
8、指令说明:
3、设置输入模式:
三:编程
1、程序效果:
2、程序.c文件
#include “LCD1602.h”
#include “string.h”
void InspectBusyFlag( ) ;
void Delayxms(unsigned int t) //@11.0592MHz
{
unsigned char i, j;
unsigned int x;
for(x=0;x
{
nop
();
i = 4;
j = 146;
do
{
while (–j);
} while (–i);
}
}
void Wr_OneByte2Lcd1602(char DatorCmd,char val)
{
InspectBusyFlag( );
Delayxms(1);
RS = DatorCmd; //0、指令寄存器 1、数据寄存器
RW = 0; //0读操作、1写操作
EN = 1;
P0 = val;
nop
();
nop
();
nop
();
EN = 0;
Delayxms(1);
}
void Rd_OneByte2Lcd1602(char DatorCmd,char val)
{
EN = 0;
RS = DatorCmd; //0、指令寄存器 1、数据寄存器
RW = 0; //0读操作、1写操作
EN = 1;
nop
();
P0 = val;
}
void InspectBusyFlag( ) //检查忙标志位,BF=1表示正在忙碌中
{
P0 = 0xff;
RS = 0;
RW = 1;
EN = 1;
Delayxms(1);
while (0x80&P0);
EN = 0;
}
void LCD1602_Init(void)
{
Wr_OneByte2Lcd1602(CMD,0x38);
Delayxms(5);
Wr_OneByte2Lcd1602(CMD,0x38);
Wr_OneByte2Lcd1602(CMD,0x01);
Wr_OneByte2Lcd1602(CMD,0x06);
Delayxms(5);
Wr_OneByte2Lcd1602(CMD,0x0C);
}
void Display_CharOnLcd(unsigned char x,unsigned char y,char val)
{
if( 0==y )
{
Wr_OneByte2Lcd1602(CMD,0x80 + x);
}
else
{
Wr_OneByte2Lcd1602(CMD,0xC0 + x);
}
Wr_OneByte2Lcd1602(DAT,val);
}
void Display_StrOnLcd1602(unsigned char x,unsigned char y,char
p)
{
char num,i;
num = strlen§;
for(i=0;i
{
Delayxms(2);
Display_CharOnLcd(x+i,y,
(p+i)) ;
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
LCD1602
液晶显示屏
编程
请问如何驱动
LCD1602
液晶显示屏
?
2022-01-17
1743
怎样使用单片机去控制
LCD1602
液晶显示屏
显示
时间等信息
2021-09-01
3811
LCD1602
液晶显示屏
的操作流程是怎样的
呢
2022-01-26
2440
STM32是怎样通过IIC去控制
LCD1602
液晶显示屏
的
呢
2022-01-26
4388
STM32是怎样去控制
LCD1602
液晶显示屏
的
2021-12-15
2510
有关C51的
LCD1602
液晶显示
相关知识汇总
2022-01-26
2732
LCD1602
液晶屏
显示
2018-04-29
4935
对于STM32F103C8T6使用I2C模块驱动
LCD1602
液晶显示屏
出现乱码是怎么回事?
2018-04-24
12201
有关
LCD1602
的基本知识都总结在这里了
2021-07-19
5584
LCD1602
液晶显示屏
在51单片机上的应用是什么?
2021-07-23
913
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分