STM32F103LCD1602代码
时间: 2023-11-12 19:06:18 浏览: 76
以下是一个简单的使用STM32F103和LCD1602的代码示例,你可以根据实际情况进行修改:
```c
#include "stm32f10x.h"
#include "delay.h"
#define LCD_RS_H GPIO_SetBits(GPIOB,GPIO_Pin_12)
#define LCD_RS_L GPIO_ResetBits(GPIOB,GPIO_Pin_12)
#define LCD_RW_H GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define LCD_RW_L GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define LCD_EN_H GPIO_SetBits(GPIOB,GPIO_Pin_14)
#define LCD_EN_L GPIO_ResetBits(GPIOB,GPIO_Pin_14)
void LCD_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void LCD_Init(void)
{
delay_init();
LCD_GPIO_Config();
GPIO_SetBits(GPIOB, GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_15);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_14);
delay_ms(50);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
delay_ms(50);
GPIO_SetBits(GPIOB, GPIO_Pin_14);
delay_ms(50);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
LCD_WriteCmd(0x28); // function set
LCD_WriteCmd(0x0c); // display on, cursor off, blink off
LCD_WriteCmd(0x06); // entry mode set, increment
LCD_WriteCmd(0x01); // clear display
}
void LCD_WriteCmd(uint8_t cmd)
{
LCD_RS_L;
LCD_RW_L;
GPIO_Write(GPIOB, cmd);
LCD_EN_H;
delay_us(1);
LCD_EN_L;
}
void LCD_WriteData(uint8_t data)
{
LCD_RS_H;
LCD_RW_L;
GPIO_Write(GPIOB, data);
LCD_EN_H;
delay_us(1);
LCD_EN_L;
}
void LCD_WriteString(char *str)
{
while(*str != '\0')
{
LCD_WriteData(*str);
str++;
}
}
int main(void)
{
LCD_Init();
LCD_WriteCmd(0x80);
LCD_WriteString("Hello, world!");
while(1);
}
```
注意,以上代码仅提供参考,具体实现需要根据你的硬件配置和需求进行修改。
阅读全文