首页 > 编程知识 正文

a1602是第几代(为什么lcd1602不显示)

时间:2023-05-03 16:53:54 阅读:76612 作者:2810

1602液晶也称为1602字符型液晶,是用于显示字母、数字、符号等的点阵型液晶模块。

16X2液晶屏表示显示的内容为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:2:显示两行。

F=0:58点文字; F=1:510点文字。

例如,8位数据接口、两行显示、58点,即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 )

光标返回到画面的左上角,画面的显示内容不变。

设置CGRAM地址指令:0001 aaaaaa

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 )

设置DDRAM地址命令:001 aaaaaaa

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 )

此命令用于设置DDRAM地址。 在对DDRAM进行读写之前,首先设定DDRAM地址,然后进行读写。 如上所述,DDRAM是液晶屏1602的显示存储器。 要显示在其上,必须将显示的字符写入DDRAM。 同样,如果想知道DDRAM的某个地址包含什么字符,必须首先设置DDRAM地址,然后将其读取到单片机中。

9 .占线信号和地址计数器AC:01BFaaaaaaaaaaa

(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 .将数据写入DDRAM或DDRAM命令336010ddddddd

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 )

RS=1,数据; RW=0,写。 执行命令时,请设定要写入DB7—DB0的数据,然后执行写入命令。

11 .从DDRAM或DDRAM读取数据的指令:1dddddd

(RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 )

RS=1,数据; RW=1,阅读。 设置CGRAM或DDRAM的地址,然后执行读取命令。 读取数据后为DB7—DB0。

#includereg52.h //52头文件,#define uint8 unsigned char //两个常用宏定义# define uint 16 unsignedintsbitrs=p2 ^ 0; //1602的控制引脚定义sbit RW=P2^1; sbit EN=P2^2; uint8 Data1[7]='welcom!' ; //显示的数据uint8 Data2[11]=' 2 3 2 1 '; voiddelayms(uint16dly; //函数声明bitbusy(void ); //液晶模块声明voidwrite_cmd(uint8cmd ); voidwrite_dat(uint8dat; voidLCD_init(void; 语音主(语音) { uint8 i; LCD_Init (; //LCD初始化while(1) write_cmd )0x85 ); //第一行的80H地址码for(I=0; i7; I ) write_dat(data1[I]; write_cmd(0xC2;//第2行80 42,从第2行第3个位置开始for(I=0; i11; I ) write _ dat (数据2 [ I ]; }voidDelayms(uint16dly )//12Mhz晶体振动延迟ms ) uint16x,y; for(x=dly; x0; x-- ) for(y=124; y0; y----; }检测}bitbusy(void )液晶屏1602是否忙; 回到1的话是BUSY; 返回0时OK{ bit Bit; RS=0; RW=1; EN=1; dlayms(1; bit=(bit ) ) P00x80 ); //最高位为忙信号位EN=0; 返回位; }voidwrite_cmd(uint8cmd ) /写入命令控制命令(while ) busy ) ); //忙RS=0; RW=0; EN=0; P0=cmd; EN=1; dlayms(1; EN=0; }voidwrite_dat(uint8dat ) /写入数据dat (传递要显示的数据) while (总线); //忙RS=1; RW=0; EN=0; P0=dat; EN=1; dlayms(1; EN=0; }voidLCD_init(void ) /液晶初始化(write_cmd )0x38 ); //功能设置,8位数据接口,两行显示,58点,即0b00111000或0x 38延迟ms (1; write_cmd(0x0c; //显示开关控制,00001100显示on、光标隐藏、光标非闪烁延迟ms (1; write_cmd(0x06; //输入法设置,00000110 I/D=1:写入新数据后,将光标向右移动; S=0:表示不移动。 dlayms(1; write_cmd(0x01;//清除LCD显示内容的延迟毫秒(1; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。