stm32f103c8t6对LCD1602显示屏初始化介绍
时间: 2023-07-28 21:06:35 浏览: 90
对于STM32F103C8T6与LCD1602显示屏的初始化,通常需要使用GPIO口控制LCD显示屏。以下是一般的初始化流程:
1. 确定使用的引脚,将其设置为输出模式。
2. 初始化LCD显示屏,包括清屏、设置光标位置、设置显示模式等。
3. 将数据写入LCD显示屏的数据寄存器中,这可以通过向GPIO口写入数据实现。
下面是一个示例代码,可以根据需要进行修改:
```c
#include "stm32f10x.h"
#define RS GPIO_Pin_13
#define EN GPIO_Pin_14
#define D4 GPIO_Pin_15
#define D5 GPIO_Pin_0
#define D6 GPIO_Pin_1
#define D7 GPIO_Pin_2
void delay_ms(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<7200;j++);
}
void lcd_command(unsigned char cmd)
{
GPIO_ResetBits(GPIOB,RS);
GPIO_Write(GPIOB,(GPIO_ReadOutputData(GPIOB)&0x00FF)|cmd<<8);
GPIO_SetBits(GPIOB,EN);
delay_ms(1);
GPIO_ResetBits(GPIOB,EN);
delay_ms(10);
}
void lcd_data(unsigned char dat)
{
GPIO_SetBits(GPIOB,RS);
GPIO_Write(GPIOB,(GPIO_ReadOutputData(GPIOB)&0x00FF)|dat<<8);
GPIO_SetBits(GPIOB,EN);
delay_ms(1);
GPIO_ResetBits(GPIOB,EN);
delay_ms(10);
}
void lcd_init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = RS|EN|D4|D5|D6|D7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
delay_ms(50);
lcd_command(0x30);
delay_ms(5);
lcd_command(0x30);
delay_ms(5);
lcd_command(0x30);
delay_ms(5);
lcd_command(0x20);
lcd_command(0x28);
lcd_command(0x08);
lcd_command(0x01);
lcd_command(0x06);
lcd_command(0x0C);
}
void lcd_puts(unsigned char *str)
{
while(*str)
lcd_data(*str++);
}
int main(void)
{
lcd_init();
lcd_puts("Hello, world!");
while(1);
}
```
这是一个简单的例子,其中使用了GPIO口控制LCD显示屏。在实际应用中,还需要根据具体情况进行相应的修改。
阅读全文