使用STM32CubeMX中的LCD驱动段式LCD(1)

这是我的第二篇博客,坚持把自己的一点一滴博客上,增进一点点知识。因为项目的需求,需要驱动段式LCD,我也没有用过驱动芯片和单片机直接驱动,我花了两三天的时间看了各种资料最后得到的一点点心得,希望对你们有帮助。有什么不对的地方,希望你们能提出宝贵的意见

使用芯片为STM32L4系列芯片,段式LCD为1/4DUTY 1/3BAIS 4*20
1.对于STM32CubeMX的时钟和系统配置就不说了
使用STM32CubeMX中的LCD驱动段式LCD(1)_第1张图片
在这里插入图片描述
2.LCD配置
我这边只是测试,使显示2个数字,具体根据你需要显示的SEG勾选
使用STM32CubeMX中的LCD驱动段式LCD(1)_第2张图片
使用了内部电压,我一些资料时说选择外部电压才不会有错误,这个我这边还不是很理解,暂时不会有这个错误
使用STM32CubeMX中的LCD驱动段式LCD(1)_第3张图片

3.然后就可以创建工程了,在此之前最后把还串口配置了方便调试

4.打开工程后你会发现有一些函数可以使用
具体功能你们自己看里面的功能介绍。我强调的是,主要用的两个函数是HAL_LCD_Write()和HAL_LCD_UpdateDisplayRequest()
在使用HAL_LCD_Write()后,必须要更新HAL_LCD_UpdateDisplayRequest(),不然的话就显示不出来
使用STM32CubeMX中的LCD驱动段式LCD(1)_第4张图片
5.根据你的段式LCD的屏幕编码写出,以下数组
使用STM32CubeMX中的LCD驱动段式LCD(1)_第5张图片
6.具体如何算,需要你自己琢磨,只有自己想通了,才是自己的(如果实在想不通,可以在下方评论)

使用STM32CubeMX中的LCD驱动段式LCD(1)_第6张图片
7.写完了之后还需要写一个函数具体功能为转换字符

/*******************************************************************************
* Function Name   : ConvertNum
* Description     : 查找输入参数对应的字符编码
* Inputs          : InputNum--显示字符
* Outputs         : None
* Return          : None
* Notes           : None
*******************************************************************************/
void ConvertNum(uint8_t InputNum) 
{
 uint16_t Num, tmp = 0;
 uint8_t i;

 if((InputNum>='0')&&(InputNum<='9'))
  {
  Num=NumberMap[InputNum-'0'];
  }
  else
  {
    Num=0;
  }
  for(i = 0;i < 4; i++)
  {
    tmp = Num & mask[i];
    LCD_DisBuffer[i] = (uint8_t)(tmp >> (uint8_t)shift[i]);
  }

使用STM32CubeMX中的LCD驱动段式LCD(1)_第7张图片
9.具体显示
在这里插入图片描述
具体实现就是这样子,谢谢

你可能感兴趣的:(使用STM32CubeMX中的LCD驱动段式LCD(1))