[学习日记]驱动LCD1602

本文使用proteus仿真通过AT89C52驱动LCD1602(HD44780驱动-16线)

引脚介绍

在这里插入图片描述

序号引脚引脚说明序号引脚引脚说明
1VSS电源地9D2数据位2
2VDD电源正10D3数据位3
3VEE显示对比度11D4数据位4
4RS数据/命令12D5数据位5
5RW读/写13D6数据位6
6E使能14D7数据位7
7D0数据位015BLA背光正
8D1数据位116BLK背光负

其中proteus中没有BLA和BLK引脚,但使用模块时是有的。

指令集

序号指令RSRWD7D6D5D4D3D2D1D0
1清屏0000000001
2光标复位000000001x
3输入方式设置00000001I/DS
4显示开关控制0000001DCB
5光标或字符移位控制000001S/CR/Lxx
6功能设置00001DLNFxx
7字符发生存储器地址设置0001字符发生存储器地址
8数据存储器地址设置001显示数据存储器地址
9读忙标志或地址01BF计数器地址
10写入数据至CGRAM或DDRAM10要写入的数据内容
11从CGRAM或DDRAM中读取数据11读取的数据内容
接下来说明一下表中的符号设置
  1. 指令3:
    I/D表示光标的移动方向,高电平右移,低电平左移;
    S表示显示屏上所有文字是否左移或右移,高电平表示有效,低电平表示无效。
  2. 指令4:
    D用于控制整体显示的开与关,高电平表示开显示,低电平表示关显示;
    C用于控制光标的开与关,高电平表示有光标,低电平表示无光标;
    B用于控制光标是否闪烁,高电平闪烁,低电平不闪烁。
  3. 指令5:S/C表示在高电平时移动显示的文字,低电平时移动光标。
  4. 指令6:
    DL表示在高电平时为8位总线,低电平时为4位总线;
    N表示在低电平时为单行显示,高电平时双行显示;
    F表示在低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。
  5. 指令7:字符发生器RAM地址设置。
  6. 指令8:DDRAM地址设置。
  7. 指令9:BF为忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平则表示不忙。

使用例程

初始化流程:功能设置(指令6)---->显示开关控制(指令4)---->输入方式设置(指令3)---->清屏(指令1)

void LCD_Init(void)
{
	LCD_WriteCmd(0x38);	//显示16*2	5*7/字符	8线数据
	LCD_WriteCmd(0x0C);	//开显示	不显示光标
	LCD_WriteCmd(0x06);	//地址加1,当写入数据后光标右移
	LCD_WriteCmd(0x01);	//清屏
}

显示字符串流程:设置光标位置(指令8)—>写入显示字符(指令10)

void LCD_SetPos(unsigned char line, unsigned char column)	//设置光标位置
{
	(line == 0) ? LCD_WriteCmd(0x80+column) : LCD_WriteCmd(0x80+0x40+column);
}

void LCD_ShowStr(unsigned char line, unsigned char column, unsigned char *str)
{
	LCD_SetPos(line, column);
	while(*str != '\0') LCD_WriteData(*str++);
}

接着就是补充写命令函数以及写数据函数

void LCD_WriteCmd(unsigned char cmd)
{
	LCD_RS = 0;
	LCD_RW = 0;
	LCD_EN = 0;
	P0 = cmd;
	delay_ms(2);
	LCD_EN = 1;
	delay_ms(2);
	LCD_EN = 0;
}

void LCD_WriteData(unsigned char dat)
{
	LCD_RS = 1;
	LCD_RW = 0;
	LCD_EN = 0;
	P0 = dat;
	delay_ms(2);
	LCD_EN = 1;
	delay_ms(2);
	LCD_EN = 0;
}

由于51的速度有点慢,所以不用像STM32一样 加延时之类的。
简单的初始化和显示字符串步骤就是这样的(更多玩法反正我觉得没必要不如上大屏幕,看着爽)。

最后使用proteus仿真时的接线为(其中P0口需要接上拉电阻4.7k)
P0.0—>D0
P0.1—>D1
P0.2—>D2
P0.3—>D3
P0.4—>D4
P0.5—>D5
P0.6—>D6
P0.7—>D7
P2.5—>E
P2.6---->RW
P2.7—>RS

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余十三_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值