DSP之LCD1602笔记

目录

1. 指令介绍

lcd1602常用指令

(1) 清屏指令

(2) 光标归位指令

 (3) 进入模式设置指令

(4) 显示开关控制指令

(5) 设定显示屏或光标移动方向指令

(6) 功能设定指令

(7) 设定CGRAM地址指令

 (8)  设定DDRAM地址指令

(9) 读取忙信号或AC地址指令

 (10)  数据写入DDRAM或CGRAM指令一览

(11) 从CGRAM或DDRAM读出数据的指令 

2. 硬件图

3. 软件部分

3.1 初始化 

3.2 写命令

3.3 写数据

3.4 写字符串


1. 指令介绍

字符型LCD引脚定义图

引脚说明:

3脚:用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压0时可以得到最强对比度;

4脚:RS,数据/命令选择端; 当此脚为高电平时,可以对1602进行数据字节的传输操作; 当为低电平时,用于对1602进行输入指令的传输操作;

5脚:0:向LCD1602写入指令或数据; 1:对LCD1602读数据操作;

6脚:使能信号

lcd1602常用指令

(1) 清屏指令

功能:

指令十进制为: 0x01

<a> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCLL码20H;

为什么是20H?

手册有:字符代码0x00~0x0F为用户自定义的字符图形RAM,也就是CGRAM;

            0x20~0x7F为标准的ASCLL码,0xA0~0xFF为日文字符和希腊字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义;

<b> 光标归位;即将光标测回液晶显示屏的左上方;

<c> 将地址计数器(AC)的值设置为0;

(2) 光标归位指令

功能:

十进制为0x02 或0x03

<a> 把光标测回到显示器的左上方;

<b> 把地址计数器(AC)的值设置为0;

<c> 保存DDRAM的内容不变;

 (3) 进入模式设置指令

功能: 设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动;

其中

DB2位     固定为1;

I/D 位       0:写入新数据后光标左移           1:写入新数据后光标右移

S 位         0:写入新数据后显示屏不移动    1:写入新数据后显示屏整体右移一个字符

(4) 显示开关控制指令

功能:控制显示器开/关,光标显示/关闭以及光标是否闪烁;

DB3位   固定为1

D位:      0:显示功能关                1:显示功能开

C位       0:无光标                       1:有光标

B位       0:光标闪烁                 1:光标不闪烁

(5) 设定显示屏或光标移动方向指令

 功能:使光标移位或使整个显示屏幕移位.

S/C           R/L

0                0                光标左移1格,且AC值减1;

0                1                光标右移1格,且AC值加1;

1                0                显示器上字符全部左移1格,但光标不动

1                1                显示器上字符全部右移1格,但光标不动;

(6) 功能设定指令

 

功能: 设定数据总线位数,显示的行数及字型;参数设定情况如下; 

DL         0:数据总线为4位                1:数据总线为8位

N           0:显示1行                        1:显示2行

F           0:5x7点阵/每字符            1:5x10点阵/每字符

(7) 设定CGRAM地址指令

 功能:设定下一个要存入数据的CGRAM的地址;

DB3~DB5为字符号,也就是你将来要显示该字符时要用到的字符地址;(000~111)能定义8个;

DB0~DB2为行号,(000~111)能定义8行;

 (8)  设定DDRAM地址指令

功能:设定下一个要存入数据的DDRAM的地址;

(9) 读取忙信号或AC地址指令

功能:

<a> 读取忙碌信号BF的内容,FB=1表示液晶显示器忙,暂停无法接收单片机发送的数据或指令;当FB=0时,液晶显示器可以接收单片机发送的数据或指令;

<b>  读取地址计数器(AC)的内容

 (10)  数据写入DDRAM或CGRAM指令一览

功能:

<a> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;

<b> 将使用者自己设计的图形存入CGRAM;

        DB5~DB7可为任何数据,一般为000;

        DB0~DB4:对应每行5点的字模数据; 

(11) 从CGRAM或DDRAM读出数据的指令 

 功能:读取DDRAM或CGRAM中的内容

基本操作时序:

读状态:        输入:RS=L,RW=H,E+H                        输出:DB0~DB7=状态字

写指令:        输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码        输出:无

读数据:        输入RS=H,RW=H,E=H;                        输出:DB0~DB7=数据

写数据:        输入:RS=H,RW=L,E=下降沿脉冲 ,DB0~DB7=数据             输出:无

2. 硬件图

其中 RS->gpio0   

        RW接地,保持0;

        E使能脚->接gpio1

        DB0~DB7 -> gpio2~gpio9 

3. 软件部分

3.1 初始化 

void LCD1602_Init(void) 
{
    //1.gpio初始化
    
    DELAY_US(5000);//延迟5ms

    //2.设置8位格式,2行,5x7
    LCD1602_WriteCmd(0x38);

    //3.关显示,不显示光标,光标不闪烁;
	LCD1602_WriteCmd(0x08);

    //4.清除屏幕显示:数据指针清零,所有显示清零;
	LCD1602_WriteCmd(0x01);

    //5.设定输入方式,增量不移位
	LCD1602_WriteCmd(0x06);

    //6.整体显示,关光标,不闪烁
	LCD1602_WriteCmd(0x0c);
}

3.2 写命令

RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入;

void LCD1602_WriteCmd(unsigned char cmd)
{
	LCD1602_EN_SETL;
	LCD1602_RS_SETL;//RS置低,RW引脚已经接地;

    //左移2位原因:D0~D7在硬件上对应gpio2~gpio9;根据硬件决定;    
    //#define LCD1602_DATAPORT	(GpioDataRegs.GPADAT.all)
	LCD1602_DATAPORT=cmd<<2;

	DELAY_US(500);
	LCD1602_EN_SETH;//拉高
	DELAY_US(1000);
}

3.3 写数据

把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入; 

void LCD1602_WriteData(unsigned char dat)
{
	LCD1602_EN_SETL;
	LCD1602_RS_SETH;//RS置高

    //或上0x001原因:写数据时要保证RS(gpio0)为高,虽然上一句已经置为高,但是dat<<2位后会时bit0位为0
	LCD1602_DATAPORT=dat<<2|0x0001;
	DELAY_US(500);
	LCD1602_EN_SETH;//使能
	DELAY_US(1000);
	//LCD1602_EN_SETL;
}

3.4 写字符串

 

(1) 只有第一行的00~0f,第二行的40~4F才能显示,其他地址只能用于存储;

(2) 显示地址时要求最高位D7恒定为高电平1;  

void LCD1602_DispString(char line,char *str)
{
	if(line==1)
		LCD1602_WriteCmd(0x80);//写在0x0处,也就是第一行; 0x8表示显示时D7恒定为1
	else if(line==2)
		LCD1602_WriteCmd(0x80+0x40);//写在0x40处,也就是第二行; 0x80表示显示时D7恒定为1
	else
		return;
	while(*str!='\0')
	{
		LCD1602_WriteData(*str);
		DELAY_US(500);  //延时500us
		str++;
	}
}

 

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天未及海宽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值