news 2026/6/23 4:44:18

[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/6/20 11:08:32

传输标准:企业应如何保障本地网、传输网与集团专网质量一致性

执行本地网运行标准、落实传输网质量标准、保障集团专网质量标准 摘要 本文为企业IT部门、信息化负责人及运维团队提供标准化传输体系建设方案&#xff0c;通过明确本地网、传输网与集团专网的分层质量管控规则&#xff0c;支撑可视化运行监控、标准化交付与平台化运维&#…

作者头像 李华
网站建设 2026/6/23 0:42:53

AI写论文实用攻略!4个AI论文生成工具,帮你解决论文写作难题!

在2025年&#xff0c;随着学术写作智能化的发展&#xff0c;越来越多的研究者开始尝试使用AI写论文的工具。很多AI论文写作工具在应对硕士和博士等长篇论文时&#xff0c;常常缺乏必要的理论深度或逻辑严密性&#xff0c;导致无法满足专业论文写作的实际需求。虽然AI写专著和AI…

作者头像 李华
网站建设 2026/6/16 11:12:58

AI写论文的高效之选!4款AI论文生成工具,让职称论文写作更简单!

在学术论文写作中面临的挑战与解决方案 在撰写期刊论文、毕业论文或职称论文的过程中&#xff0c;学术工作者常常会遇到诸多挑战。人工进行论文撰写时&#xff0c;面临着海量文献&#xff0c;寻找相关资料犹如在大海中寻宝&#xff1b;繁琐的格式要求使人感到无比困扰&#xf…

作者头像 李华