STM32 CubeIDE 4线驱动LCD1602
1、LCD1602简介
LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字),能显示的字符数是32,LCD1602内置了字库。带ASCII码字库,不能显示中文。
1.1、引脚介绍
LCD1602有16条引脚,还有14条引脚的,与16脚的相比缺少了背光电源A(15脚)和地线K(16脚)。
1.2 、LCD1602 基本时序操作
RS:RS为寄存器选择,高电平1选择数据寄存器,低电平0时选择指令寄存器。
R/W:R/W为读写信号线,高电平1时进行读操作,低电平0时进行写操作
EN:EN端为使能端,写操作时,下降沿使能。读操作时,E高电平有效
读状态。输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。
读数据。输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。
写命令。输入RS=0,RW=0,E=高脉冲。输出:无。
写数据。输入RS=1,RW=0,E=高脉冲。输出:无。
2、LCD1602 显示
使用高4位数据线的接法,即4线并行模式(不同于8线并行模式操作),D0~D3这4个口悬空,据传输只需要通过D4-D7。翻译移植项目,来源https://controllerstech.com/interface-lcd-16x2-with-stm32-without-i2c/
LCD1602与STM32引脚连接:
LCD1602 | MCU |
---|---|
D4 | PA4 |
D5 | PA5 |
D6 | PA6 |
D7 | PA7 |
RS | PA1 |
RW | PA2 |
EN | PA3 |
2.1 、建立工程文件
打开调试引脚
开启外部时钟:
配置时钟树:
开启定时器1,定时间仅仅就为了定时,可以任意选择:
选择管脚:
2.2、程序移植
创建文件 LCD1602.c 和LCD1602.h 头文件。
LCD1602.h 头文件内容
#ifndef INC_LCD1602_H_
#define INC_LCD1602_H_
void lcd_init (void); // initialize lcd
void lcd_send_cmd (char cmd); // send command to the lcd
void lcd_send_data (char data); // send data to the lcd
void lcd_send_string (char *str); // send string to the lcd
void lcd_put_cur(int row, int col); // put cursor at the entered position row (0 or 1), col (0-15);
void lcd_clear (void);
LCD1602.c 文件内容:
#include <LCD1602.h>
#include "stm32f1xx_hal.h"
/*********** Define the LCD PINS below ****************/
#define RS_Pin GPIO_PIN_1
#define RS_GPIO_Port GPIOA
#define RW_Pin GPIO_PIN_2
#define RW_GPIO_Port GPIOA
#def