news 2026/6/10 14:24:46

[STM32L5] 【STM32L562E_DK开发板】--4.LCD显示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32L5] 【STM32L562E_DK开发板】--4.LCD显示

本篇讲述驱动LCD显示。
一.原理
开发板使用204*240 RGB LCD。原理如下



二.代码准备
1.GPIO引脚配置如下,主要是复位引脚、背光引脚、电源控制引脚。


2.LCD FMC接口配置


至此,实现硬件引脚配置。后面以STM32Cube MCU Packages安装包下的BSP库为基础代码展开。
3.LCD初始化。在SystemHardwareInit函数内实现,包含GPIO引脚初始化与设置

复制
  1. staticvoidSystemHardwareInit(void)
  2. {
  3. /*
  4. ......
  5. */
  6. LCD_UTILS_Drv_t lcdDrv;
  7. /* Set UTIL_LCD functions */
  8. lcdDrv.DrawBitmap = BSP_LCD_DrawBitmap;
  9. lcdDrv.FillRGBRect = BSP_LCD_FillRGBRect;
  10. lcdDrv.DrawHLine = BSP_LCD_DrawHLine;
  11. lcdDrv.DrawVLine = BSP_LCD_DrawVLine;
  12. lcdDrv.FillRect = BSP_LCD_FillRect;
  13. lcdDrv.GetPixel = BSP_LCD_ReadPixel;
  14. lcdDrv.SetPixel = BSP_LCD_WritePixel;
  15. lcdDrv.GetXSize = BSP_LCD_GetXSize;
  16. lcdDrv.GetYSize = BSP_LCD_GetYSize;
  17. lcdDrv.SetLayer = BSP_LCD_SetActiveLayer;
  18. lcdDrv.GetFormat = BSP_LCD_GetFormat;
  19. UTIL_LCD_SetFuncDriver(&lcdDrv);
  20. /* Clear the LCD */
  21. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  22. /* Set the display on */
  23. if(BSP_LCD_DisplayOn(0) != BSP_ERROR_NONE)
  24. {
  25. Error_Handler();
  26. }
  27. }

4.LCD刷屏显示红、绿、蓝

复制
  1. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_RED);
  2. HAL_Delay(1000);
  3. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_GREEN);
  4. HAL_Delay(1000);
  5. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_BLUE);
  6. HAL_Delay(1000);

5.LCD显示字符串

复制
  1. UTIL_LCD_SetFont(&Font16);
  2. /* Set the LCD Text Color */
  3. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_LIGHTMAGENTA);
  4. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLUE);
  5. UTIL_LCD_FillRect(0,0,240,30, UTIL_LCD_COLOR_LIGHTMAGENTA);
  6. /* Display LCD messages */
  7. UTIL_LCD_DisplayStringAt(0,10, (uint8_t*)"STM32L562E-DK Board", CENTER_MODE);

6.LCD显示图像
(1)制作200*200像素图片,使用Image2Lcd工具加载设置如下图所示,生成图像数组。


(2)编写画图函数

复制
  1. voidLCD_ShowPicture(uint16_tx,uint16_ty,uint16_tcolumn,uint16_trow,uint32_t*pic)
  2. {
  3. uint16_tm,h;
  4. uint32_t*data=(uint32_t*)pic;
  5. for(h=0+y;h<row+y;h++)//60
  6. {
  7. for(m=0+x;m<column+x;m++)//180
  8. {
  9. // LCD_Fast_DrawPoint(m,h,*data++);
  10. UTIL_LCD_SetPixel(m,h,*data++);
  11. }
  12. }
  13. }

7.main函数

复制
  1. intmain(void)
  2. {
  3. /* STM32L5xx HAL library initialization:
  4. - Systick timer is configured by default as source of time base, but user
  5. can eventually implement his proper time base source (a general purpose
  6. timer for example or other time source), keeping in mind that Time base
  7. duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
  8. handled in milliseconds basis.
  9. - Set NVIC Group Priority to 3
  10. - Low Level Initialization
  11. */
  12. HAL_Init();
  13. /* Configure the System clock to have a frequency of 110 MHz */
  14. SystemClock_Config();
  15. /* For better performances, enable the instruction cache in 1-way direct mapped mode */
  16. HAL_ICACHE_ConfigAssociativityMode(ICACHE_1WAY);
  17. if(HAL_ICACHE_Enable() != HAL_OK)
  18. {
  19. /* Initialization Error */
  20. Error_Handler();
  21. }
  22. /* System common Hardware components initialization (Leds, button, joystick and LCD) */
  23. SystemHardwareInit();
  24. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_RED);
  25. HAL_Delay(5000);
  26. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_GREEN);
  27. HAL_Delay(5000);
  28. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_BLUE);
  29. HAL_Delay(5000);
  30. /* Clear the LCD */
  31. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  32. UTIL_LCD_SetFont(&Font16);
  33. /* Set the LCD Text Color */
  34. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_WHITE);
  35. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLACK);//UTIL_LCD_COLOR_BLACK//UTIL_LCD_COLOR_BLUE
  36. // UTIL_LCD_FillRect(0, 0, 240, 30, UTIL_LCD_COLOR_LIGHTMAGENTA);
  37. /* Display LCD messages */
  38. UTIL_LCD_DisplayStringAt(0,10, (uint8_t*)"STM32L562E-DK Board", CENTER_MODE);
  39. // UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_LIGHTMAGENTA);
  40. // UTIL_LCD_FillRect(0, 18, 240, 19, UTIL_LCD_COLOR_LIGHTMAGENTA);
  41. UTIL_LCD_DrawHLine(0,25,240,UTIL_LCD_COLOR_LIGHTMAGENTA);
  42. //UTIL_LCD_DrawBitmap(0, 0, (uint8_t *)gImage_1);
  43. LCD_ShowPicture(20,40,200,200,(uint32_t*)gImage_1);
  44. HAL_Delay(100);
  45. /* Infinite loop */
  46. while(1)
  47. {
  48. }
  49. }



三.测试
编译烧录后。LCD分别显示红绿蓝刷品,显示字符串及图像。效果如下。







ps:资源图片







---------------------
作者:dirty123
链接:https://bbs.21ic.com/forum.php?mod=viewthread&tid=3435986
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 8:21:41

[STM32L5] 【STM32L562E_DK开发板】--3.串口打印

本篇讲述串口打印功能。 一.原理与准备 1.开发板套件配有一个PMOD扩展板&#xff0c;上面有串口接线端子CN2.硬件接线如下。 2.由扩展板接到主板上&#xff0c;反向找出串口引脚PC10、PC11&#xff0c;查阅datasheet分别为UART3 TX、RX.如下图红框所示。 3.开发板上使用到了…

作者头像 李华
网站建设 2026/6/7 15:46:11

解锁激光加工密码:功率、频率、脉宽、占空比全解析

引言 激光加工,又被称作镭射加工,是指利用高能量密度的激光束照射材料表面,使材料发生汽化、熔化、颜色变化等现象,从而实现对材料的加工处理 。作为 20 世纪人类的四大发明之一,激光加工已广泛应用于工业、军事、科研和日常生活等众多领域。 由于镭射光束具有高亮度、高…

作者头像 李华
网站建设 2026/5/30 2:48:29

论文:项目团队绩效域

一、项目背景2024年11月&#xff0c;我作为项目经理&#xff0c;参与到由XX市政务服务管理办公室发起的“AI民‘声’地图系统”项目的建设工作中。该项目为期6个月&#xff0c;总预算为206万元&#xff0c;目标是构建一个集数据可视化、智能分析与决策支持功能于一体的民生诉求…

作者头像 李华
网站建设 2026/6/10 9:56:29

本科生必看!千笔写作工具,人气爆表的AI论文写作软件

你是否曾为论文选题发愁&#xff0c;绞尽脑汁却难以下笔&#xff1f;是否在反复修改中感到力不从心&#xff0c;又担心查重率过高&#xff1f;面对繁杂的格式要求和文献检索难题&#xff0c;许多学生都深陷“论文焦虑”。别再独自挣扎&#xff0c;千笔AI——一款专为本科生量身…

作者头像 李华
网站建设 2026/6/10 10:04:11

黑客技术可以学,但千万别乱用!

黑客技术可以学&#xff0c;但千万别乱用&#xff01; 为什么说黑客技术可以学&#xff0c;但是千万不能乱用呢&#xff1f; 黑客都把技术用到哪了&#xff0c;来看看黑客干的事就知道了 黑客技术让你的电脑挖矿&#xff0c;黑掉你的银行卡&#xff0c;都是小咖级别&#xff0…

作者头像 李华
网站建设 2026/6/10 10:00:11

NMEA0183协议入门:格式、原理与应用全解析

目录 一、 初学者基础认知 1. 协议定位与核心作用 2. 协议特点&#xff08;适合初学者理解&#xff09; 3. 标准通信参数 二、 协议核心&#xff1a;帧格式详解 1. 起始符&#xff1a;$ 2. 地址域&#xff1a;aaXXX 3. 数据域&#xff1a;data1,data2,...,dataN 4. 校…

作者头像 李华