【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

这篇具有很好参考价值的文章主要介绍了【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解决LCD与LED显示冲突问题

  不知道大家在开发过程中有没有碰到:LCD与LED同时(宏观上的同时)点亮时产生的LED状态紊乱问题

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示LCD与LED显示冲突现象图

  为了解决上述问题,小编给出了以下三种解决方案:
方案一:

  每次LCD显示完成数据后,关闭所有LED一次。
  但是使用该方法比较麻烦,并且如果想要反转LED的状态,还必须使用变量保存上一次LED的状态。详细代码可见下图:

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

方案2:借助寄存器BRR

  STM32中是将BRR定义为:
__IO uint32_t BRR; //!< GPIO Bit Reset register, Address offset: 0x28
  其意思为:GPIO 位复位寄存器;也就是说可以通过该寄存器将值复位(置0);
  由于HAL库中提供了该寄存器的操作接口,我们直接使用该接口即可:void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);,其中参数1为GPIO分组,参数2为GPIO引脚,参数3为重置或设置。
具体操作可见下图的详细代码:

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

方案3:修改LCD的显示函数

  通过阅读官方提供的LCD源码以及小编自己的LED显示函数,得知导致LED显示紊乱的“罪魁祸首”是LCD显示修改了LED对应引脚的值,那么我们是不是可以修改LCD的显示函数呢?🤔🤔🤔
  由于LCD每次显示一定需要修改LED对应引脚的值,那么是不是可以在LCD显示前保存LED的值呢。😉😉😉
  在GPIO组结构体中,寄存器ODR输出端寄存器内部存储输出数据,因此在显示前保存寄存器ODR的值,显示完成后在恢复即可。
经过小编查找,发现有LCD显示与最终三个函数有关,因此,只需要在这三个函数起始位置保存ODR的值,事后恢复即可,函数为:

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);

示例操作代码可见下图:

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

  上述三种方法的实质:无非是先保存值,然后恢复😒😒😒。实质上是一样的,因此,只要大家明白这个思路,那么解决这个方法还是很简单的。

解决LCD显示翻转问题

  首先大家来看看G1~G320是怎么的吧,其位置分布图为:

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
  由于官方提供了三个芯片手册,即932x系列与8230芯片,因此,咱首先要弄清楚自己手上的开发板附带的LCD显示屏的驱动芯片属于啥型号。   LCD硬件初始化时,其初始化函数如下:
【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
  由于其初始化只有两种情况,经测试,小编的LCD驱动使用的是下面那种,因此,其芯片手册是属于ILI932x的。   经过查找芯片手册(两个芯片手册其实差不多):

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

这段话说的是:
IL19325的LCD驱动电路由一个720输出源极驱动器(S1~S720)和一个320输出门组成驱动器(G1 ~ G320)。当输入720“位数据时,显示模式数据被锁存并生成驱动波形。用于扫描栅极线的栅极驱动器输出VGH或VGL水平。源极驱动器720个源极输出的移位方向由SS位和用GS位设置来自栅极驱动器的栅极输出的移位方向。 栅极驱动器的扫描模式为用SM位设置。这些位允许为LCD模块设置适当的扫描方法。

  最终确定可以控制LCD显示内容反转的两个控制器为GS与SS这两位。

GS的相关描述
【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
  结合G1~G320的位置图有:
  当GS = 0时,扫描方向为G1 ~ G320。(可以理解为从左往右
  当GS = 1时,扫描方向为G320 ~ G1。(可以理解为从右往左

  但是这玩意,它不是一个单独的寄存器,它只是一个寄存器里的一部分,即R60。
【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

SS的相关描述

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
  SS:选择源驱动输出的移位方向。
  当SS = 0时,输出的移位方向从S1至S720(可以理解为输出方向从上往下
  当SS = 1时,输出的移位方向从S720至S1(可以理解为输出方向从下往上

  因为,如果需要实现自己的翻转模式,只需要控制SS与GS的值即可:
方式一: 显示刷新时,按照从上往下,从左往右的顺序刷新

LCD_WriteReg(R1  , 0x0000); //从上往下
LCD_WriteReg(R96 , 0x2700); //从左往右

方式二:显示刷新时,按照从上往下,从右往左的顺序刷新

LCD_WriteReg(R1  , 0x0000);  //从上往下
LCD_WriteReg(R96 , 0xA700); //从右往左

方式三:显示刷新时,按照从下往上,从左往右的顺序刷新

LCD_WriteReg(R1  , 0x0100); //从下往上
LCD_WriteReg(R96 , 0x2700); //从左往右

方式四:显示刷新时,按照从下往上,从右往左的顺序刷新

LCD_WriteReg(R1  , 0x0100); //从下往上
LCD_WriteReg(R96 , 0xA700); //从右往左

(由于翻转后,小编码不清楚东南西北,因此采用这种方式表达🤣🤣🤣。)

【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示
测试结果图

  蓝桥杯官方给的驱动就采用第一种方式,因此一直以来显示的数据咱都看起来是正的。😉😉😉文章来源地址https://www.toymoban.com/news/detail-411258.html

到了这里,关于【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

    🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人主

    2024年02月03日
    浏览(37)
  • 蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(一)——LED

    2023年2月10日,距离第十四届蓝桥杯正式比赛还有不到两个月的样子,从今天开始正式备赛。之前博主有看过野火的教程,学的是STM32F103。蓝桥杯嵌入式组现在用的是STM32G431,板子在二手平台上买的,视频参考b站up主01Studio相关教程(后面提到简写为教程)。学习的模块按照教

    2024年01月25日
    浏览(45)
  • 蓝桥杯嵌入式STM32G431RBT6竞赛指南与模板——最后的绝唱

    谨以此文和我去年前的一篇蓝桥杯单片机的教程构成电子类的 青铜双壁. 国信长天单片机竞赛训练之原理图讲解及常用外设原理(遗失的章节-零)_昊月光华的博客-CSDN博客     目录 时钟树 串口重定向:printf输出 动态点灯(点灯大师) 按键(常用状态机) 同一时刻对多个按键按

    2024年02月07日
    浏览(35)
  • 蓝桥杯嵌入式STM32G431RBT6的学习(总大纲)(HAL库学习)板子介绍

    我写蓝桥杯嵌入式大概用到的外设,都是非常常用的。我在这里汇总一下。 蓝桥杯嵌入式基础模块——GPIO的使用(新板)STM32G431(HAL库开发)_薛定谔的猫咪死了的博客-CSDN博客 蓝桥杯嵌入式基础模块——串口的使用(新板)STM32G431(HAL库开发)_薛定谔的猫咪死了的博客-C

    2024年02月02日
    浏览(33)
  • 蓝桥杯嵌入式CT117E-M4学习笔记02-STM32G431RBT6芯片学习

    首先学习了解一下蓝桥杯嵌入式CT117E-M4开发板的主控芯片STM32G431RBT6,本文仅为个人学习成果总结,如有错误,恳请指正。 上图为STM32CubeMX选型界面,如图可以看出STM32G431RBT6具有以下特点和硬件集成。 采用Cortex-M4 32位RISC核心架构,工作频率最高可达170Mhz。 128kBytes的FLASH,32

    2023年04月09日
    浏览(40)
  • STM32开发环境搭建&工程创建(嵌入式学习)

    简介 STM32CubeMX是STMicroelectronics公司提供的一款集成开发环境(IDE)工具,用于快速配置和初始化STM32微控制器系列的软件工程。它提供了图形化界面和交互式工具,使开发者能够轻松地生成STM32微控制器的初始化代码和配置文件。 STM32CubeMX具有以下主要功能和特点: 微控制器

    2024年02月11日
    浏览(45)
  • STM32 PWM模式与输出比较模式的区别。PWM占空比不生效,在STM32CubeMX中配置PWM的两种模式——蓝桥杯嵌入式

      🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都已更新完毕,欢迎大家前往订阅本专题🎏 🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题 🎏【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题 🎏【蓝桥杯嵌入式】蓝桥杯第十三届

    2023年04月15日
    浏览(39)
  • 嵌入式物联网STM32实战开发代码例程库

    几百个例程清单,CSDN下载地址: https://download.csdn.net/download/weixin_39804904/88671879 开发例程清单(持续新增中,欢迎点赞关注): 0001基于STM32F103单片机GPIO实现控制LED灯闪烁的程序代码0001.rar 0002基于STM32F103单片机GPIO实现按键KEY的检测程序代码0002.rar 0003基于STM32F103单片机GPIO实现

    2024年02月02日
    浏览(30)
  • 嵌入式系统开发13——STM32输出PWM实现呼吸灯

    本文主要介绍在STM32F103C8T6上,利用定时器输出PWM波形,进而驱动LED实现呼吸灯。 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。 脉冲宽度调制(PWM) ,是

    2023年04月08日
    浏览(61)
  • [蓝桥杯嵌入式]STM32G431——第十二届第一场省赛停车计费系统真题及程序设计代码详解

    最近,我报名了今年的蓝桥杯嵌入式比赛,为此刷了一下以往的真题。以下是我对十二届蓝桥杯省赛真题的一些思路和心得,还有一些具体代码的实现。 1、相关模块 第十二届比赛主要用到的模块包括:LED、KEY、LCD、TIM、USART 2、重难点分析 这道题主要目的是做一个停车管理

    2024年01月18日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包