基于32单片机F103C8T6的人体红外自动门控系统,利用lcd1602a显示记录人数,请帮我写出lcd1602a的初始化代码
时间: 2024-02-13 16:04:53 浏览: 84
STM32F103C8T6的LCD1602代码
好的,以下是基于32单片机F103C8T6的人体红外自动门控系统的lcd1602a初始化代码:
```
#include "stm32f10x.h"
#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 Delay_us(u32 us);
void LCD_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
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(GPIOA, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(20000);
GPIO_ResetBits(GPIOA, LCD_RS | LCD_RW | LCD_EN);
GPIO_SetBits(GPIOA, LCD_D4 | LCD_D5);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(500);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
GPIO_ResetBits(GPIOA, LCD_D4);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_ResetBits(GPIOA, LCD_D4);
GPIO_ResetBits(GPIOA, LCD_D5);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
GPIO_SetBits(GPIOA, LCD_D5);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
GPIO_ResetBits(GPIOA, LCD_D5);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_D4 | LCD_D5);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
GPIO_ResetBits(GPIOA, LCD_D4 | LCD_D5);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_EN);
Delay_us(5);
GPIO_ResetBits(GPIOA, LCD_EN);
Delay_us(5000);
GPIO_SetBits(GPIOA, LCD_D4 | LCD_D5);
Delay_us(5000);
}
void Delay_us(u32 us)
{
u32 i;
for(i = 0; i < us * 8; i++);
}
```
这是一个比较基础的lcd1602a初始化代码,只是简单的将lcd1602a的各个引脚配置成输出模式,并进行了一系列初始化操作。如果您需要更加详细的代码,可以参考一些lcd1602a的库文件或者教程。
阅读全文