当前位置: 首页 > news >正文

[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所有,任何人未经允许禁止转载。

http://www.jsqmd.com/news/341072/

相关文章:

  • 2026年卡西欧手表批发公司排名中靠谱的品牌有哪些值得推荐 - 工业品网
  • 小户型如何实现高级定制感?2026年全屋定制品牌推荐与排名,直击预算与效果痛点 - 品牌推荐
  • 2026年靠谱的卫浴家具五金/全屋家具五金厂家推荐及采购指南 - 品牌宣传支持者
  • 向量数据库_Zvec
  • 2026 最新云南/昆明房屋/写字楼/卫生间/工程/厨房堵漏维修公司TOP5评测!专业技术+全场景服务权威榜单发布,守护建筑防水安全 - 品牌推荐2026
  • wps的翻译功能需要收费,如何破解?
  • 2月3日
  • AI写论文必看攻略!4款AI论文生成工具,让论文写作不再难!
  • 丝芭马年新春活动:各地春晚活动齐开花,人文关怀凝聚温暖力量 - 博客万
  • 新手必看!微信立减金回收入门全攻略 - 团团收购物卡回收
  • 2026年溧阳好用的实木箱包装厂家推荐,靠谱生产商有哪些 - mypinpai
  • 2026年口碑好的上海地砖LED显示屏/LED显示屏厂家推荐及选择参考 - 品牌宣传支持者
  • 2026年可靠的亚克力制品/亚克力加工厂家选购指南与推荐 - 品牌宣传支持者
  • 2026年广东聚氨酯平板大型厂家排名,哪家性价比高值得推荐 - 工业推荐榜
  • 如何做出改变?个人成长与职业发展的实用指南
  • Win8一键安装PHP环境工具推荐,快速搭建本地开发测试平台
  • 2026年2月权威榜单:设计美学与生活品质双重维度推荐的全屋定制品牌Top10 - 品牌推荐
  • 总结资质齐全的方志馆设计企业,诚信知名的公司选哪家 - mypinpai
  • 不同场景微信立减金处理技巧,闲置、自用皆有妙招 - 团团收购物卡回收
  • 2026年360全包围汽车脚垫正规供应商推荐,广州车百强 - 工业设备
  • 2026年常州口碑好的木箱包装厂商推荐,专业按需定制企业全解析 - myqiye
  • 2026年江苏软件开发实力厂家推荐榜:小程序开发、APP开发专业服务商深度解析与口碑优选 - 品牌企业推荐师(官方)
  • 2026年热门的亚克力展示架/高端美妆亚克力展示架最新TOP厂家排名 - 品牌宣传支持者
  • 2026年塑料超声波焊接机国内厂家口碑排名,声科智能优势凸显 - 工业推荐榜
  • 2026 最新云南昆明防水材料推荐:房屋/写字楼/卫生间/工程/厨房场景TOP5品牌评测!专业品质守护建筑防水安全 - 品牌推荐2026
  • 2026年口碑好的有机肥/堆肥技术有机肥最新TOP厂家排名 - 品牌宣传支持者
  • 探讨聚氨酯异形件来图定制,四川地区专业厂家有哪些 - 工业品网
  • 选购木箱包装,常州哪家制造厂值得选,专业经验来支招 - 工业品牌热点
  • 日志禁用提示原因与启用方法
  • 高效沉淀池行业十大品牌及知名厂家推荐 - 品牌推荐大师1