写一段stm32f103c8t6中初始化LCD1602的程序
时间: 2023-03-02 16:27:46 浏览: 324
STM32F103C8T6配套程序源码-LCD1602显示,stm32f103c8t6驱动彩屏,C,C++
5星 · 资源好评率100%
以下是初始化STM32F103C8T6驱动LCD1602液晶屏的程序示例(使用C语言):
```
#include "stm32f10x.h"
#include "delay.h" // 自定义的延迟函数库
// LCD1602液晶屏引脚定义
#define LCD_RS GPIO_Pin_0
#define LCD_RW GPIO_Pin_1
#define LCD_EN GPIO_Pin_2
#define LCD_D4 GPIO_Pin_4
#define LCD_D5 GPIO_Pin_5
#define LCD_D6 GPIO_Pin_6
#define LCD_D7 GPIO_Pin_7
void LCD_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOB时钟
// 设置LCD1602引脚为输出模式
GPIO_InitStructure.GPIO_Pin = LCD_RS | LCD_RW | LCD_EN | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void LCD_Init(void)
{
// 首先要等待1602上电稳定
Delay_Ms(100);
// 初始化开始
LCD_WriteCommand(0x38); // 8位数据接口,2行显示,5x7点阵
Delay_Ms(1);
LCD_WriteCommand(0x08); // 关闭显示
Delay_Ms(1);
LCD_WriteCommand(0x01); // 清除显示
Delay_Ms(1);
LCD_WriteCommand(0x06); // 设置输入方式:光标右移,不移动屏幕
Delay_Ms(1);
LCD_WriteCommand(0x0C); // 开启显示,光标关闭,光标闪烁关闭
Delay_Ms(1);
}
void LCD_WriteCommand(uint8_t cmd)
{
GPIO_ResetBits(GPIOB, LCD_RS); // RS引脚为0表示写入的是命令
GPIO_ResetBits(GPIOB, LCD_RW); // RW引脚为0表示写入模式
GPIO_SetBits(GPIOB, LCD_EN); // 使能EN引脚
GPIO_Write(GPIOB, (GPIO_ReadOutputData(GPIOB) & 0xFF00) | cmd); // 写入命令
Delay_Ms(1);
GPIO_ResetBits(GPIOB, LCD_EN); // 禁止EN引脚
}
void LCD_WriteData(uint8_t data)
{
GPIO_SetBits(GPIOB, LCD_RS); // RS引脚为1表示写入的是数据
GPIO_ResetBits(GPIOB, LCD_RW); // RW引脚为0表示写入模式
GPIO_SetBits(GPIOB, LCD_EN); // 使能EN引脚
GPIO_Write(GPIOB, (GPIO_ReadOutputData(GPIOB) & 0xFF00) | data); // 写入数据
Delay_Ms(1);
GPIO_ResetBits(GPIOB, LCD_EN); // 禁止EN引脚
}
```
这是一个简单的初始化程序,其中包含了初始化GPIO引脚和初始化LCD1602的函数。在实际应用中,还需要根据实际情
阅读全文