news 2026/11/3 9:57:07

[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/11/3 1:55:56

基于 ESP32 的雨伞遗忘提醒挂钩设计与实现

引言 下雨天出门忘带伞、到家忘收伞是生活中常见的小烦恼,尤其是匆忙出门时,雨伞遗落在挂钩上往往会导致出行不便。本文基于 ESP32 微控制器设计一款低成本、易实现的 “雨伞遗忘” 提醒挂钩,通过压力检测判断雨伞是否悬挂、人体红外检测判断人员是否离开,当检测到 “有伞…

作者头像 李华
网站建设 2026/11/3 8:33:14

传输标准:企业应如何统一资源分级、负载配置与广域连通指标

制定传输资源分级标准、实施路由系统负载配置、达成广域网路由连通指标 摘要 本文为企业IT部门、信息化负责人及运维团队提供核心价值&#xff1a;通过可视化运行监控系统&#xff0c;支撑系统规划、标准化交付与平台化运维&#xff0c;实现高确定性的ICT基础设施管理&#x…

作者头像 李华
网站建设 2026/11/3 8:34:31

AI写论文超神组合!4款AI论文写作工具,为你的毕业论文保驾护航!

AI论文写作工具推荐 还在为撰写期刊论文而烦恼吗&#xff1f;面对海量的文献、复杂的格式以及无休止的修改&#xff0c;使得学术工作者们的效率普遍不高&#xff01;别担心&#xff0c;接下来我将推荐四款实测过的AI论文写作工具&#xff0c;它们能从论文文献检索、论文大纲生…

作者头像 李华
网站建设 2026/11/3 20:30:34

类的访问权限:public、private 与 protected 详解

类的访问权限&#xff1a;public、private 与 protected 详解 在C面向对象编程中&#xff0c;类的三大访问权限&#xff08;public、private、protected&#xff09;是实现封装特性的核心&#xff0c;也是连接类的定义与对象使用的关键纽带。上一篇博客《C 类与对象&#xff1…

作者头像 李华
网站建设 2026/11/2 3:45:30

【大咖专家领衔报告 | 南京航空航天大学航空学院主办 | EI检索会议征稿 | JPCS(ISSN:1742-6596) 出版】2026年航空航天工程与机械工程国际学术会议(AEME 2026)

2026年航空航天工程与机械工程国际学术会议&#xff08;AEME 2026) 2026 International Conference on Aerospace Engineering and Mechanical Engineering 2026年3月6-8日&#xff0c;中国北京&#xff08;会议线下举行&#xff09; 大会官网&#xff1a;www.icaeme.org【参…

作者头像 李华
网站建设 2026/11/2 3:42:24

简单理解:2.4G WIFI 辅助 LBS 定位 核心原理与实现解析

2.4G WIFI 辅助 LBS&#xff08;基于位置的服务&#xff09;定位&#xff0c;是利用 2.4G WIFI 的 AP 热点指纹 基站定位补盲的混合定位方案&#xff0c;核心解决纯卫星定位&#xff08;GPS / 北斗&#xff09;在室内 / 地下 / 高楼遮挡场景的失效问题&#xff0c;同时弥补纯基…

作者头像 李华