发布时间:2025-12-10 19:23:37 浏览次数:9
【无标题】lcd1602模块介绍及编写使用程序「建议收藏」Lcd1602液晶,单片机
Lcd1602 液晶,从它的名字我们就可以看出它的显示容量,显示2行,每行16个字符的液晶,
对于单片机的学习最主要还是要学会查看产品数据手册,即使相同的功能模块也会由于不同的生产厂家不同而有所差异,下面结合数据手册对Lcd1602内容进行一个分享
Lcd1602 液晶一共 16 个引脚,每个引脚的功能,都可以在它的数据手册上获得,在进行程序编写之前得弄明白
引脚1,2,15,16这里就不做介绍了,只需要按照他的数据手册引脚说明对应接入电路就OK 引脚3,液晶显示偏压信号,可以看见液晶显示时是通过增强对比,观察小黑点得到显示的内容。引脚3外部接下拉电阻来确定显示的黑点和不显示的之间的对比度
代码如下(示例):
void LcdInit1602(){ LcdWriteCmd(0x38); // 16*2显示,5*7点阵,8位数据口LcdWriteCmd(0x08); //关闭显示LcdWriteCmd(0x0C); // 开显示,不显示光标LcdWriteCmd(0x06); // 地址加1,当写入数据后光标右移LcdWriteCmd(0x01); // 清屏} 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
读操作时序
写操作时序
(1)读状态:RS=L,WR=H,E=H,P0=状态
bit7busy()主函数部分,do…while()判断是否忙位
Lcd1602_DB = 0xFF; Lcd1602_RS = 0; Lcd1602_WR = 1; Lcd1602_E = 1; sta = Lcd1602_DB; //读取状态字 对控制器每次进行读写操作前,都必须进行读写检测,确保bit7为0,表示不忙可以进行读写,将其封装成函数void bit7busy(); (2)读数据:RS=H,WR=H,E=H ,P0=数据
(3)写指令:RS=L,WR=L,P0=指令码,E=高脉冲(前三项准备好,使能引脚拉高拉低读取指令码到1602)
(4)写数据:RS=H,WR=L,P0=数据,E=高脉冲
void LcdWriteCmd(unsigned char cmd){ bit7busy(); //将忙位检测封装成函数Lcd1602_RS = 0; //选择写指令Lcd1602_WR = 0; //选择写Lcd1602_E = 0; //E使能拉低P0=cmd; //把指令送入P0DelayMs(2); //延时一小会儿,让1602准备接收数据Lcd1602_E = 1; //使能线电平变化上升沿,命令送入1602的8位数据口DelayMs(2); //延时,让数据发送Lcd1602_E = 0; //使能线拉低}void LcdWriteDat(unsigned char dat){ bit7busy();Lcd1602_RS = 1; //选择写数据Lcd1602_WR = 0; //选择写Lcd1602_E = 0; //E使能拉低P0=dat;DelayMs(2); Lcd1602_E = 1; DelayMs(2); Lcd1602_E = 0; } 数据手册里面还有时间上的要求,在51里面不需要额外操作来满足,但在运行速度快点的单片机,可以试着加延时
在这之前先了解一下,1602 液晶内部带了 80 个字节的显示 RAM,用来存储我们发送的数据
第一行RAM地址从 0x00到 0x27,第二行地址从 0x40 到 0x67,
其中
第一行 0x00 到 0x0F与液晶上第一行 16 个字符显示位置相对应的,
第二行 0x40 到 0x4F 是与第二行 16 个字符显示位置相对应的
由于是字符显示,与ACSII字符表对应
void LcdShowStr(unsigned char y,unsigned char x,unsigned char *str,unsigned char len){ if(y==1) // 第一行 LcdWriteCmd(0x80+x); // 第一行显示起始地址 0x80第一行第一个字符地址 else // 第二行 LcdWriteCmd(0x80+0x40+x); // 第二行显示起始地址 0x80+0x40是第二行第一个字符地址while(len--){ LcdWriteDat(*str++);}} 显示个hello在液晶上
LcdShowStr(1,0,"hello",5) 作为一名学生,这也算是我学习的小记录,如果有不妥的地方欢迎指出