STM32驱动LCD1602程序(调试已成功)「建议收藏」 您所在的位置:网站首页 stm32驱动程序错误 STM32驱动LCD1602程序(调试已成功)「建议收藏」

STM32驱动LCD1602程序(调试已成功)「建议收藏」

2023-11-20 05:05| 来源: 网络整理| 查看: 265

大家好,又见面了,我是你们的朋友全栈君。

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 实验室设备网 版权所有