1602指令表

1602液晶显示器指令详解
1602液晶模块的操作主要通过11条指令实现,包括清屏、光标控制、显示开关、移位及功能设置等。这些指令详细定义了显示模式、光标移动方向、显示开关闭以及字符点阵大小等参数,确保了模块的正常工作和用户交互。
部署运行你感兴趣的模型镜像

1602模块的设定,读写,与光标控制都是通过指令来完成,共有11条指令,如下:

指令

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

1

清屏

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示控制

0

0

0

0

0

0

1

D

C

B

5

光标/字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志和地址

0

1

BF

计数器地址

10

写数据到指令7.8所设地址

1

0

要写的数据

11

从指令7.8所设的地址读数据

1

1

读出的数据

指令1:清显示,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。

指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电
平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。(有些模块是 DL:高电平时为8位总线,低电平时为4位总线)

指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数。(将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符)

指令8:置显示地址,第一行为:00H——0FH,第二行为:40H——4FH。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

转载于:https://www.cnblogs.com/king-77024128/articles/2065533.html

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

### LCD1602 指令集使用教程 #### 基本概念 LCD1602 是一种常见的字符型液晶显示器,具有两行每行十六个字符的显示能力。其工作电压通常为5V,在初始化和操作过程中需要遵循特定的指令集来实现各种功能。 #### 主要引脚说明 - **VSS**: 接地引脚。 - **VDD**: 连接到电源正极 (通常是 5V)。 - **VO**: 对比度调节端口;通过可变电阻调整对比度。 - **RS**: 寄存器选择信号线,用于区分命令还是数据传输模式。“0”表示向控制器发送一条控制命令,“1”则意味着传送的是待显示的数据[^3]。 - **RW**: 读写控制位,当设置成低电平(即“0”)时允许微处理器往 LCD 中写入信息;反之高电平时可以从设备里获取状态报告或其他反馈消息。 - **E**: 启用脉冲触发输入端,用来同步内部逻辑电路的动作周期并确认当前正在处理的操作已经完成。每当此针脚经历一次由高至低的变化过程之后就会立即生效相应的动作。 - **D0-D7**: 数据总线接口,负责传递实际要呈现出来的 ASCII 编码文字串或者是配置参数给模块解析执行。 #### 初始设定流程 启动阶段应当按照下面给出的一系列步骤来进行必要的准备工作: ```c void lcd_init(void){ delay_ms(15); //等待超过15ms以确保供电稳定 write_command(0x38); // 设置显示模式:8-bit, 2 行, 字符字体大小 5×7 点阵 delay_us(40); write_command(0x0C); // 开启显示,关闭光标以及闪烁效果 delay_us(40); write_command(0x06); // 自动增量地址计数器,无移屏 delay_us(40); write_command(0x01); // 清除整个屏幕上的内容 delay_ms(2); } ``` 上述代码片段展示了如何利用 C 语言编写函数 `lcd_init` 来完成基本的硬件初始化任务。这里调用了几个辅助性的子程序如 `delay_ms`, `write_command` 和 `delay_us` ,它们分别实现了毫秒级延时、发出单条命令以及微妙级别暂停的功能[^1]。 #### 发送字符与字符串的方法 一旦完成了前面提到的基础环境搭建,则可以继续定义新的 API 函数以便于后续的应用开发人员能够更加方便快捷地操纵该器件输出想要表达的信息。 ```c // 显示一个单独的ASCII字符 void lcd_put_char(char ch){ RS_HIGH(); // 将寄存器切换到接收数据的状态 RW_LOW(); // 设定为写入方式 send_data(ch); // 调用底层驱动层提供的API进行真正的I/O交互 } // 打印一整句连续的话语直到遇到终止符'\0' void lcd_print(const char *str){ while(*str != '\0'){ lcd_put_char(*(str++)); } } ``` 以上两个例子中的宏定义 (`RS_HIGH()`, `RW_LOW()`) 及其他未展示的支持库均需依据具体平台特性自行补充完善。此外值得注意的是,由于大多数情况下我们都是按照行优先顺序逐次填充各单元格内的数值,因此一般不需要额外考虑行列索引定位的问题——除非涉及到特殊需求下的自定义布局设计[^2]。 #### 定位游标的技巧 除了简单的打印之外,有时还需要精确控制光标的所在位置从而实现在任意坐标处更新文本的效果。此时就需要借助专门为此目的设立的相关命令了: ```c void set_cursor(uint8_t row,uint8_t col){ uint8_t addr; switch(row){ case 0:addr=col; break; case 1:addr=col+0x40;break; default:return ; } write_command(addr | 0x80); } ``` 这段源码接受来自用户的行号(`row`)和列号(`col`)作为入口参数,并据此计算出目标地址再配合上固定的偏移量最终形成完整的寻址序列传送给液晶面板去改变内建指针的位置指向新选定的地方准备就绪后即可正常书写其它内容了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值