关于lcd1602A的使用
遵守公司关于网络使用的规定 #生活常识# #职场技巧# #网络素养#
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
lcd1602引脚

状态字的说明:

RAM映射地址:

控制接口的时序:
1.读的时序

2.写的时序

3.时序的相关参数

读状态:RS = L,R/W = H,EN = H
读数据:RS = H,R/W = H,EN = H
写指令:RS = L,R/W = L,D0~D7 = 指令码,EN = 高脉冲
写数据:RS = H,R/W = L,D0~D7 = 数据,EN = 高脉冲
LCD1602指令(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
(X表示1or0都行,一般是0)
1.工作方式设置指令:
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 DL N F X X
DL:设置数据接口位数。
DL=1:8位数据接口(D7—D0);DL=0:4位数据接口(D7—D4)。
N=0:一行显示;N=1:两行显示。
F=0:5×8点阵字符;F=1:5×10点阵字符。
例如:8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。
2.显示开关控制指令:0 0 0 0 0 0 1 D C B
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
D=1:显示开,D=0:显示关。
C=1:光标显示,C=0:光标不显示。
B=1:光标闪烁,B=0:光标不闪烁。
3.进入模式设置指令:0 0 0 0 0 0 0 1 I/D S
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
I/D=1:写入新数据后光标右移;I/D=0:写入新数据后光标左移。
S=1:显示移动;S=0:显示不移动。
4.光标或显示移动指令:0 0 0 0 0 1 S/C R/L X X
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
在需要进行整屏移动时,这个指令非常有用,可以实现屏幕的滚动显示效果。初始化时不使用这个指令。
5.清屏指令:0 0 0 0 0 0 0 0 0 1
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
清除屏幕显示内容。光标返回屏幕左上角。执行这个指令时需要一定时间。
6.光标归位指令:0 0 0 0 0 0 0 0 1 X
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
光标返回屏幕左上角,它不改变屏幕显示内容。
7.设置CGRAM地址指令:0 0 0 1 a a a a a a
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
8.设置DDRAM地址指令:0 0 1 a a a a a a a
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
这个指令用于设置DDRAM地址。在对DDRAM进行读写之前,首先要设置DDRAM地址,然后才能进行读写。前面我们说过,DDRAM就是LCD1602的显示存储器。我们要在它上面进行显示,就要把要显示的字符写入DDRAM。同样,我们想知道DDRAM某个地址上有什么字符,也要先设置DDRAM地址,然后将它读出到单片机。
9.读忙信号和地址计数器AC:0 1 BF a a a a a a a
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
对于单片机来说,LCD1602属于慢速设备。当单片机向其发送一个指令后,它将去执行这个指令。这时如果单片机再次发送下一条指令,由于LCD1602速度较慢,前一条指令还未执行完毕,它将不接受这新的指令,导致新的指令丢失。当BF=1,表示LCD1602正忙,不能接受单片机的指令;当BF=0,表示LCD1602空闲,可以接收单片机的指令。RS=0,表示是指令;RW=1,表示是读取。LCD1602维护了一个地址计数器AC,用来记录下一次读写CGRAM或DDRAM的位置。
10.写数据到CGRAM或DDRAM指令:1 0 d d d d d d d d
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
RS=1,数据;RW=0,写。指令执行时,要在DB7—DB0上先设置好要写入的数据,然后执行写命令。
11.从CGRAM或DDRAM读数据指令:1 1 d d d d d d d d
(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0)
RS=1,数据;RW=1,读。先设置好CGRAM或DDRAM的地址,然后执行读取命令。数据就被读入后DB7—DB0。
#include<reg52.h> //52头文件, #define uint8 unsigned char //常用的两个宏定义 #define uint16 unsigned int sbit RS = P2^0; //1602的控制引脚定义 sbit RW = P2^1; sbit EN = P2^2; uint8 Data1[7]="welcom!"; //显示的数据 uint8 Data2[11]=" 2 3 2 1 "; void DelayMS(uint16 dly); //函数的声明 bit BUSY(void); //液晶模块的声明 void Write_cmd(uint8 cmd); void Write_dat(uint8 dat); void LCD_Init(void); void main(void) { uint8 i; LCD_Init(); //LCD初始化 while(1) { Write_cmd(0x85); //第一行 80H+地址码 for(i=0;i<7;i++) Write_dat(Data1[i]); Write_cmd(0xc2); //第二行 80+42,第二行第三个位置开始 for(i=0;i<11;i++) Write_dat(Data2[i]); } } void DelayMS(uint16 dly) //12Mhz晶振延时MS { uint16 x,y; for(x=dly;x>0;x--) for(y=124;y>0;y--); } bit BUSY(void) //检测LCD1602是否处于忙状态;返回1,则BUSY;返回0,则OK { bit Bit; RS = 0; RW = 1; EN = 1; DelayMS(1); Bit = (bit)(P0 & 0x80); //最高位为忙信号位 EN = 0; return Bit; } void Write_cmd(uint8 cmd) //写命令 控制命令 { while(BUSY()); //测忙 RS = 0; RW = 0; EN = 0; P0 = cmd; EN = 1; DelayMS(1); EN = 0; } void Write_dat(uint8 dat) //写数据 dat 传入要显示的数据 { while(BUSY()); //测忙 RS = 1; RW = 0; EN = 0; P0 = dat; EN = 1; DelayMS(1); EN = 0; } void LCD_Init(void) //液晶的初始化 { Write_cmd(0x38); //功能设置,8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38 DelayMS(1); Write_cmd(0x0c); //显示开关控制,00001100 显示开,光标不显示,光标不闪烁 DelayMS(1); Write_cmd(0x06); //输入方式设置,00000110 I/D=1:写入新数据后光标右移;S=0:显示不移动。 DelayMS(1); Write_cmd(0x01); //清除LCD的显示内容 DelayMS(1); } 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
网址:关于lcd1602A的使用 https://www.yuejiaxmz.com/news/view/1415234
相关内容
关于柔顺剂的使用关于电脑使用的技巧
关于使用电脑的保养
关于使用电脑的小贴士
关于电脑使用的实用技巧
关于使用智能家居的建议
关于未来 Raphael AI 的使用心得
关于电脑硬件的使用和维护
python中关于迭代器的使用
关于空调使用温馨提示

