初级会员

- 积分
- 56
- 金钱
- 56
- 注册时间
- 2019-10-15
- 在线时间
- 14 小时
|

楼主 |
发表于 2020-12-2 23:08:19
|
显示全部楼层
/*******************LCD1602初始化************************/
void LCD1602_GPIO_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//开A,B口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
//RS=PB5,RW=PB4,EN=PB3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数初始化GPIOB
//LCD1602的8跟数据线PA0~PA7
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);//根据设定参数初始化GPIOA
}
void LCD_init(void)
{
LCD_Write_Command(0x38);//设置LCD两行显示,一个数据由5*7点阵表示,数据由8跟线传输
LCD_Write_Command(0x0c);//开整体显示,关光标,不闪烁
LCD_Write_Command(0x06);//设定输入方式,增量不移位
LCD_Write_Command(0x01);//清除屏幕显示
LCD_Write_Command(0x80);//设置数据指针起点
}
/*******************写指令函数************************/
void LCD_Write_Command(unsigned char com)
{
EN=0; //使能
RS=0; //写指令
RW=0; //选择写入
GPIO_Write(GPIOA, 0X00FF&com);//该函数一般用来往一次性一个GPIO的多个端口设置
delay_ms(1);
EN=1;
delay_ms(5);
EN=0;
}
/*******************写数据函数************************/
void LCD_Write_Date(unsigned char date)
{
EN=0; //使能
RS=1; //写数据
RW=0; //选择写入
GPIO_Write(GPIOA, 0X00FF&date);//GPIOA的第八位用来作为8位数据口
delay_ms(1);
EN=1;
delay_ms(5);
EN=0;
}
|
|