登录/注册

stm32f103驱动1602

更多

使用STM32F103驱动1602液晶屏(基于HD44780控制器)的关键步骤如下:


硬件连接

1602引脚 功能 STM32连接 备注
VSS 电源地 GND
VDD 电源正 3.3V/5V LCD工作电压(一般5V)
VO 对比度调节 接10K电位器中间脚 调节显示对比度
RS 命令/数据 任意GPIO(如PA0) 高电平:数据,低电平:命令
RW 读/写 GND 接地表示写模式
E 使能信号 任意GPIO(如PA1) 下降沿触发
D4-D7 数据线 4个GPIO(如PA2-PA5) 4位模式仅用高4位
A/K 背光正极 3.3V+限流电阻 可选,接220Ω电阻到电源

软件驱动步骤

1. GPIO初始化(以HAL库为例)

void LCD_GPIO_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟

    // 配置RS、E、D4-D7为推挽输出
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

2. 基本时序函数

// 写命令函数
void LCD_WriteCmd(uint8_t cmd) {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // RS=0(命令模式)

    // 发送高4位
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, (cmd >> 4) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D4
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, (cmd >> 5) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D5
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, (cmd >> 6) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D6
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, (cmd >> 7) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D7

    // 触发使能信号E
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // E=1
    HAL_Delay(1); // 保持时间 >450ns
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // E=0

    // 发送低4位(重复操作)
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, (cmd >> 0) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D4
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, (cmd >> 1) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D5
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, (cmd >> 2) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D6
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, (cmd >> 3) & 0x01 ? GPIO_PIN_SET : GPIO_PIN_RESET); // D7

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
    HAL_Delay(1);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}

// 写数据函数(与写命令类似,仅RS=1)
void LCD_WriteData(uint8_t dat) {
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // RS=1(数据模式)
    // ... 其余代码同LCD_WriteCmd
}

3. LCD初始化

void LCD_Init(void) {
    HAL_Delay(50); // 上电延时 >40ms

    // 进入4位模式
    LCD_WriteCmd(0x33); // 8位模式初始化尝试
    LCD_WriteCmd(0x32); // 切换到4位模式

    // 设置显示参数
    LCD_WriteCmd(0x28); // 4位模式,2行显示,5x8点阵
    LCD_WriteCmd(0x0C); // 开显示,无光标
    LCD_WriteCmd(0x06); // 输入方式:写入后光标右移
    LCD_WriteCmd(0x01); // 清屏
    HAL_Delay(2);
}

4. 显示字符串

void LCD_Print(char *str) {
    while (*str) {
        LCD_WriteData(*str++);
    }
}

// 示例:在首行显示"Hello"
LCD_WriteCmd(0x80); // 设置地址到第一行首
LCD_Print("Hello");

注意事项

  1. 对比度调节:若屏幕全黑或全白,调节VO引脚电位器。
  2. 延时问题HAL_Delay精度不足时,可用for循环实现微秒级延时。
  3. 背光控制:若需动态控制背光,可将背光引脚接GPIO并添加PWM调光。

通过以上步骤即可完成STM32F103对1602液晶屏的基础驱动,实际应用时可根据需求优化代码结构。

STM32F103VET6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

ARM系列STM32F103芯片的解密方法

本文介绍ARM系列STM32F103芯片的解密方法,其内核是Cortex-M3,内存从16K-512K都有。

2024-02-28 11:20:34

stm32f103 flash模拟eeprom

STM32F103是意法半导体(STMicroelectronics)推出的一款32位单片机系列,该系列芯片具有高性能和丰富的外设接口,广泛应用于工业控制、消费电子、汽车电子等领域。其中

2024-01-09 11:21:36

基于STM32F103的DAC8411驱动程序

基于STM32F103的DAC8411驱动程序,亲测可用,欢迎大家一起交流

资料下载 faddist 2022-08-28 11:21:31

STM32F103用户使用手册

STM32F103用户使用手册

资料下载 倚東聽海 2021-12-06 09:47:21

基于STM32f103的输入捕获测频率和占空比

基于STM32f103的输入捕获测频率和占空比

资料下载 shyshyshy 2021-08-02 10:10:24

基于STM32f103的FFT频率测试程序下载

基于STM32f103的FFT频率测试程序下载

资料下载 shyshyshy 2021-08-02 10:07:20

基于STM32f103使用的DAC正弦波

基于STM32f103使用的DAC正弦波

资料下载 shyshyshy 2021-08-02 10:05:00

ARM系列STM32F103芯片的解密方法

破解STM32F103芯片的方法

2023-09-19 09:03:40

基于STM32F103单片机设计

情况,基于STM32F103单片机设计一个数字电压表仿真设计。该设计应满足的功能要求为: 1、以STM32单片机为控制核心设计数字电压表;  2、可以测量0~3.3V输入电压值;  3、液晶屏LCD

2023-09-10 09:53:04

ch32v103stm32f103的区别

ch32v103与stm32f103的区别  Ch32v103与STM32f103

2023-08-22 15:49:00

STM32F103 GPIO内部电路图讲解

STM32F103 GPIO内部电路图讲解

2023-02-01 16:32:14

基于STM32F103单片机的矩阵按键设计

本实验使用STM32F103单片机,主题代码通用的。

2022-12-09 17:18:46

基于STM32F103的LCD1602显示1602液晶为5V电压驱动概述

一、概述基于STM32F103的LCD1602显示1602液晶为5V电压驱动

2022-02-28 07:08:38

stm32f030和stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

7天热门专题 换一换
相关标签