一、lcd1602
(一)、管脚展示
(二)、管脚释义
穿插:1602:意思:可以显示2行16列字符
(三)、时序图
1、
看的方法:先做垂线时间轴t,可以看到RS先变化(有交叉即变化),然后看到同一垂线上的R/W被拉低,DB0--DB7
改变电平,之后E被拉高,持续TPw
(四)、LCD1602写命令和数据函数
static void lcd_write_cmd(unsigned char byte)
{
RS = 0;//写入命令,R/S被拉低
RW = 0;//写
LCDPORT = byte;
E = 1;//E被拉高
delay_us(10);//延时
E = 0;//E被拉低
}
static void lcd_write_date(unsigned char byte)
{
RS = 1;//写入数据,R/S被拉高
RW = 0;
LCDPORT = byte;
E = 1;
delay_us(10);
E = 0;
}
(四)、LCD初始化函数
static void lcd_init()
{
delay_ms(5);
lcd_write_cmd(0x38);//设置显示位数,行数,点阵值,写四次,防止不成功
delay_ms(5);
lcd_write_cmd(0x38);
delay_ms(5);
lcd_write_cmd(0x38);
delay_ms(5);
lcd_write_cmd(0x38);
delay_ms(5);
lcd_write_cmd(0x08);//设置光标
delay_ms(5);
lcd_write_cmd(0x01);//清屏
delay_ms(5);
lcd_write_cmd(0x06);//设置自动加一位显示
delay_ms(5);
lcd_write_cmd(0x0c);//打开显示
delay_ms(5);
}
(五)、LCD相关命令
(六)、LCD写入函数
void main()
{
lcd_init();//初始化
lcd_write_cmd(0x80);//确定写入地址
lcd_write_data('a');//确定写入值
while(1);
}
(七)、自定义字符显示
1、低六位可编辑:
A5 A4 A3 :表示编辑的是第几个自定义字符
A2 A 1 A0:表示编辑的是某个字符的第几行
2、CGRAM地址范围:从0X40----0X7F,LCD1602为8行5列
3、自定义图形函数
void lcd_display_self()
{
lcd_write_cmd(0x40);//确定写入的CGRAM位置
lcd_write_date(0xff);//低三行全亮,因为LCD只有五位,所以0X1F和0Xff是一样的
lcd_write_date(0xff);//确定过地址之后行数自动加一
lcd_write_date(0xff);
lcd_write_date(0x07);//第四五六行为0000 0111,只两三列
lcd_write_date(0x07);
lcd_write_date(0x07);
lcd_write_date(0x03);//第四五六行为0000 011,只亮两列列
lcd_write_date(0x03);
lcd_write_cmd(0x80+0x40);//确定要显示的DDRAM的地址
lcd_write_date(0);//表示写入的为第0个字符
}
4、CGRAM和DDRAM地址示意: