STM32驱动LCD1602程序(调试已成功)「建议收藏」 | 您所在的位置:网站首页 › stm32驱动程序错误 › STM32驱动LCD1602程序(调试已成功)「建议收藏」 |
大家好,又见面了,我是你们的朋友全栈君。 IO接线: RS PA8 RW PB6 E PB7 LCD1602_IO PB8-PB15 所有的口都配置成开漏输出,并且所有的口都通过10k电阻上拉至5V,部分电路图如下: 在这里插入图片描述程序代码 LCD1602.C #include"lcd1602.h" void LCD1602_GPIO_Init_Out()//LCD1602端口初始化,配置为输出 { GPIO_InitTypeDef GPIO_InitStructrue; RCC_APB2PeriphClockCmd(LCD1602_Timer_GPIOA | LCD1602_Timer_GPIOB, ENABLE);//使能端口时钟 GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_OD;//开漏输出 GPIO_InitStructrue.GPIO_Pin = LCD1602_RS; GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_10MHz;//低速输出 GPIO_Init(LCD1602_GPIOA, &GPIO_InitStructrue);//初始化 GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_Out_OD;//开漏输出 GPIO_InitStructrue.GPIO_Pin = LCD1602_RW | LCD1602_E | LCD1602_IO ; GPIO_InitStructrue.GPIO_Speed = GPIO_Speed_10MHz;// 低速输出 GPIO_Init(LCD1602_GPIOB, &GPIO_InitStructrue);//初始化 } void LCD1602_GPIO_Init_Inupt()//LCD1602端口初始化,配置为输入 { GPIO_InitTypeDef GPIO_InitStructrue; RCC_APB2PeriphClockCmd(LCD1602_Timer_GPIOB, ENABLE);//使能端口时钟 GPIO_InitStructrue.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 GPIO_InitStructrue.GPIO_Pin = GPIO_Pin_15; GPIO_Init(LCD1602_GPIOB, &GPIO_InitStructrue);//初始化 } void LCD1602_WaitReady(void)//用于LCD忙检测 { u8 sta = 0; LCD1602_GPIO_Init_Out();//LCD1602端口初始化,配置为输出 GPIOB->ODR =0xff00; LCD1602_RS_RESET(); LCD1602_RW_SET();//读状态 LCD1602_GPIO_Init_Inupt();//LCD1602端口初始化,配置为输入 do{ LCD1602_E_SET(); sta = GPIO_ReadInputDataBit(LCD1602_GPIOB, GPIO_Pin_15); LCD1602_E_RESET(); } while(sta); LCD1602_GPIO_Init_Out();//LCD1602端口初始化,配置为输出 } void LCD1602_WriteCmd(u16 cmd)//用于写指令 { LCD1602_WaitReady();//等待液晶准备好 LCD1602_RS_RESET(); LCD1602_RW_RESET();//写指令 GPIOB->ODR &=((cmdODR &=((date ODR &=((cmdODR &=((date |
CopyRight 2018-2019 实验室设备网 版权所有 |