设为首页 加入收藏

TOP

普冉PY32系列(六) 通过I2C接口驱动PCF8574扩展的1602LCD(一)
2023-07-23 13:28:48 】 浏览:64
Tags:普冉 PY32 系列 通过 I2C PCF8574 1602LCD

目录

1602 LCD

1602LCD 是工业上常用的模块, 在工厂交通运输设备上经常能见到. 1602LCD 的字符显示为两行, 每行16个字符, 字符基于5×8的像素矩阵

驱动芯片为 HD44780, 工作电压为5V, 市场上还有使用型号 HD44780U 的1602LCD, 这个型号可以兼容3.3V的电压

PIN脚功能

Pin Name Function
1 Ground 地 (0V)
2 Vcc 供电 5V (4.7V – 5.3V), 注意不能用3.3V供电
3 Vo / VEE 对比度调节. 连接一个可变电阻, 过高无法分辨显示的字符, 过低字符太淡无显示
4 RS 寄存器选择(Register Select), 低电平为命令寄存器, 高电平为数据寄存器
5 Read/write 读写选择, 低电平写入, 高电平读取
6 Enable EN 闲时处于低电平, 当需要执行指令前几个毫秒将EN拉高, 执行完再拉低
7~14 DB0~DB7 8-bit 数据pin
15 Led+ LED 背光电源
16 Led- LED 背光接地

RS (Register Select)

1602LCD有两组寄存器, 命令寄存器和数据寄存器, RS用于数据和命令寄存器的切换

实际使用时, 需要配合 EN 和 R/W

  • 在 EN = 1, R/W = 0, RS = 1 时, 往数据寄存器写入的字符会用于展示.
  • EN = 1, R/W = 0, RS = 0 时, 往命令寄存器写入, 用于发送指令, 例如: 初始化, 清空屏幕, 设置光标位置, 控制显示等

指令编码

以下是各指令位的说明

/*-------------------------------------------------------------
*   Instruction     D7  D6  D5  D4  D3  D2  D1  D0             
*   ==============================================             
*   Display clear   0   0   0   0   0   0   0   1              
*   Cursor home     0   0   0   0   0   0   1   *              
*   Entry Mode Set  0   0   0   0   0   1  I/D  S              
*   Display On/Off  0   0   0   0   1   D   C   B              
*   Curs/Disp shift 0   0   0   1  S/C R/L  *   *              
*   Function Set    0   0   1   DL  N   F   *   *              
*   CG RAM addr set 0   1   ---------Acg---------              
*   DD RAM addr set 1   -------------Add---------              
*                                                              
*   Meaning:                                                   
*   *     - nonvalid bit                                       
*   Acg   - CG RAM address (CHARACTER GENERATOR)               
*   Add   - DD RAM address (DATA DISPLAY)                      
*   AC    - adress counter                                     
*                                                              
*   I/D   - 1-increment, 0-decrement                           
*   S     - 1-display shift, 0-no display shift                
*   D     - 1-display ON, 0-display OFF                        
*   C     - 1-cursor ON, 0-cursor OFF                          
*   B     - 1-blink ON, 0-blink OFF                            
*   S/C   - 1-display shift, 0-cursor movement                 
*   R/L   - 1-right shift, 0-left shift                        
*   DL    - 1-8 bits data transfer, 0-4 bits data transfer     
*   N     - 1-1/16 duty, 0-1/8 or 1/11 duty                    
*   F     - 1-5x10 dot matrix, 0-5x7 dot matrix                
*   BF    - 1-internal operation in progress, 0-display ready  
*                                                              
\**************************************************************/

配合 EN = 1, R/W = 0, RS = 0 时, 往命令寄存器写入, 可以执行以下指令

No. Hex Binary 命令说明
1 01 0000 0001 清除显示
2 02 0000 001x 光标回原位
3 04 0000 0100 向左移动光标(两个bit分别控制方向左右, 光标还是屏幕)
4 06 0000 0110 向右移动光标
5 05 0000 0101 向右移显示
6 07 0000 0111 向左移动显示
7 08 0000 1000 显示关闭, 光标关闭(三个bit分别控制屏幕显示, 光标显示, 光标闪烁)
8 0A 0000 1010 显示关闭, 光标打开
9 0C 0000 1100 显示打开, 光标关闭
10 0E 0000 1110 显示打开, 光标闪烁
11 0F 0000 1111 显示打开, 光标闪烁
12 10 0001 00xx 将光标位置向左移动(两个bit分别控制光标还是屏幕, 左移还是右移)
13 14 0001 01xx 将光标位置向右移动
14 18 0001 10xx 将整个显示屏向左移动
15 1C 0001 11xx 将整个显示屏向右移动
16 28 0010 10xx 4位, 2行, 5x8矩阵(三个bit分别控制4位还是8位,一行还是两行,5x10还是5x8)
17 20 0010 00xx 4位, 1行, 5x8矩阵
18 38 0011 10xx 8位, 2行, 5×8
19 4x 01xx xxxx 设置 CGRAM 地址, 后面6个bit是地址, 在这个指令之后发送或接收数据
20 8x 1xxx xxxx 设置 DDRAM 地址, 后面7个bit是地址, 在这个指令之后发送或接收数据
21 80 1000 0000 将光标强制移动到开头(第一行)
22 C0 1100 0000 将光标强制移动到开头(第二行)

显示自定义字符

自定义字符要在 CG-RAM 中设置. CG-RAM地址从 0x40 开始到 0x7F 共 64 byte, 可以创建8个字符, 每个字符8个byte. 在这些地址创建字符后, 就可以在LCD中显示.

CG-RAM 地址和命令

No. Addr. Command
0 0x40 0
1 0x48 1
2 0x50 2
3 0x58 3
4 0x60 4
5 0x68 5
6 0x70 6
7 0x78 7

上面的表中可以看到每个字符的起始地址及其打印命令, 例如第一个字符的地址是 [0x40, 0x47], 使用命令0可以输出这个字符, 第二个字符的地址[0x48, 0x55], 使用命令1输出.

自定义字符时, 每个字符是5x8的点阵, 5是列数, 8是行数. 对应字母b的点阵可以表示为

char b[7] = {0x10,0x10,0x16,0x19,0x11,0x11,0x1E};
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇轻松玩转makefile | 变量与模式 下一篇树莓派烧录ubuntu 20.04.5

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目