首先在Cubemx里使能1602管脚
1.c文件
#include "LCD1602.h"
void LCD1602_Writecom(uint8_t com)
{
GPIOA->ODR = 0x00FF; //初始化PA0--PA7 为低电平
HAL_GPIO_WritePin(LCD_RS_GPIO_Port,LCD_RS_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LCD_RW_GPIO_Port,LCD_RW_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_RESET);
HAL_Delay(1);
GPIOA->ODR=(com|0xFF00);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_RESET);
}
void LCD1602_Writedat(uint8_t dat)
{
GPIOA->ODR = 0x00FF; //初始化PA0--PA7 为低电平
HAL_GPIO_WritePin(LCD_RS_GPIO_Port,LCD_RS_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LCD_RW_GPIO_Port,LCD_RW_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_RESET);
HAL_Delay(1);
GPIOA->ODR=(dat|0xFF00);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(LCD_EN_GPIO_Port,LCD_EN_Pin,GPIO_PIN_RESET);
}
void LCD1602_Display(uint8_t row, uint8_t col)
{
uint8_t adder;
if(row==1)
{
adder = 0x80+col;
}
if(row==2)
{
adder = 0xC0+col;
}
LCD1602_Writecom(adder);
}
void LCD_showstr(uint8_t row,uint8_t col,uint8_t *str)
{
LCD1602_Display(row,col);
while(*str!='\0')
{
LCD1602_Writedat(*str++);
}
}
void LCD1602_init()
{
LCD1602_Writecom(0x38);
LCD1602_Writecom(0x0c);
LCD1602_Writecom(0x06);
LCD1602_Writecom(0x01);
}
2..h文件
#ifndef LCD1602_LCD1602_H
#define LCD1602_LCD1602_H
#include "main.h"
void LCD1602_Writecom(uint8_t com);
void LCD1602_Writedat(uint8_t dat);
void LCD1602_Display(uint8_t row,uint8_t col);
void LCD1602_init();
void LCD_showstr(uint8_t row,uint8_t col,uint8_t *str);
#endif //LCD1602_LCD1602_H
3.初始化1602
4.在main()添加函数
文章来源:https://www.toymoban.com/news/detail-781331.html
第一次写博客。文章来源地址https://www.toymoban.com/news/detail-781331.html
到了这里,关于STM32 用HAL库实现LCD1602的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!