• 蓝桥杯嵌入式基础模块——LCD显示器的基本使用(新板)STM32G431(HAL库开发)


            在蓝桥杯嵌入式官方给我们提供好了,LCD显示的底层源码,我们只需要,记住里面的API函数,会用这些函数就行。

    源码位置

            在官方给的资料中找到这个文件名字DK117_G4 Data Packet->开发板驱动文件里面就是所有的底层文件有两种类型,一种是基于HAL库的一种是标准库的。里面有LCD的底层驱动,还有IIC的底层驱动(软件模仿IIC驱动)。

    fonts.h文件是底层文字库,这个也是必须需要的,要不然找不到文字的扫描显示。

     

     

     复制粘贴

    在STM32CubeMX生成的文件下面建一个LCD文件夹,存放上面复制的三个文件。

     

     打开Keil建一个分组名为LCD

    刚刚加载进去的LCD文件,会报错因为文件名,不一样,需要这样修改

    未修改时

    修改好了 

     按照下面的顺序把头文件加载进去

     加载完成点击OK就行了。

    API接口

    我为大家介绍一下LCD底层的函数

    LCD初始化函数:

    函数void LCD_Init(void)
    参数
    返回值
    作用初始化LCD,这个很重要,在使用LCD之前一定要初始化

    函数LCD_SetTextColor()

    函数void LCD_SetTextColor(vu16 Color)
    参数表示颜色
    返回值
    作用这是文本颜色函数,参数是表示,在LCD显示字体颜色

     函数LCD_SetBackColor()

    函数void LCD_SetBackColor(vu16 Color)
    参数表示颜色
    返回值
    作用这是文本背景颜色函数,参数是表示,在LCD显示字体的背景色

    函数LCD_Clear() 

    函数void LCD_Clear(vu16 Color)
    参数表示颜色
    返回值
    作用清除函数,可以清除全屏,参数是,清屏之后屏幕是什么颜色的

    函数void LCD_DisplayStringLine(u8 Line, u8 *ptr); 

    函数void LCD_DisplayStringLine(u8 Line, u8 *ptr)
    参数

    Line:表示数据放在滴几行,一个由10行

    ptr:在LCD显示的数据,仅支持字符串。

    返回值
    作用在LCD固定位置显示数据

    常用的函数不多,这几个是必用的函数。

    我为大家重定义一下这个 LCD_DisplayStringLine()函数,可以实现变量的显示。

    利用这个sprintf()函数,可以重新定义一下。

    1. #include <stdarg.h>
    2. //可以实时打印变量
    3. void LcdSprintf(u8 Line,char *format,...)
    4. {
    5. char String[50];
    6. va_list arg;
    7. va_start(arg,format);
    8. vsprintf(String,format,arg);
    9. va_end(arg);
    10. LCD_DisplayStringLine(Line,String);
    11. }

    主函数

    1. int main(void)
    2. {
    3. /* USER CODE BEGIN 1 */
    4. char table[]="cuwsxhiax";
    5. /* USER CODE END 1 */
    6. /* MCU Configuration--------------------------------------------------------*/
    7. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    8. HAL_Init();
    9. /* USER CODE BEGIN Init */
    10. /* USER CODE END Init */
    11. /* Configure the system clock */
    12. SystemClock_Config();
    13. /* USER CODE BEGIN SysInit */
    14. /* USER CODE END SysInit */
    15. /* Initialize all configured peripherals */
    16. MX_GPIO_Init();
    17. /* USER CODE BEGIN 2 */
    18. LCD_Init(); //LCD初始化
    19. LCD_Clear(Black);//清除屏幕,并且显示黑色
    20. LCD_SetBackColor(Black);//设置字体背景色
    21. LCD_SetTextColor(White);//设置字体颜色
    22. /* USER CODE END 2 */
    23. /* Infinite loop */
    24. /* USER CODE BEGIN WHILE */
    25. while (1)
    26. {
    27. u8 i=25;
    28. LcdSprintf(Line3," i=%d",i);
    29. LcdSprintf(Line4," sxhuaxjn");
    30. /* USER CODE END WHILE */
    31. /* USER CODE BEGIN 3 */
    32. }
    33. /* USER CODE END 3 */
    34. }

    实验现象:

     

  • 相关阅读:
    拓端tecdat|R语言社区主题检测算法应用案例
    leetcode做题笔记160. 相交链表
    新生必看:如何选择适合自己的自考专业?
    第53章 从业务逻辑实现角度整体性理解程序
    总结线程安全问题的原因和解决方案
    前端配置环境和可能出现的问题
    面试题005-Java-JVM(上)
    45-命令行基础操作
    【Android进阶】7、Android各SDK版本的区别与兼容
    MindSpore术语歧义解释
  • 原文地址:https://blog.csdn.net/m0_58832575/article/details/126722578