【蓝桥杯嵌入式】LCD屏的原理图解析与代码实现(第十三届省赛为例)——STM32

文章介绍了如何进行蓝桥杯嵌入式竞赛的LCD屏操作,包括STM32CubeMX的配置,LCD屏的原理图解析,以及使用官方文件进行工程配置。通过实例展示了LCD屏的初始化、清屏、设置颜色和显示文本等基本功能,并提供了一道省赛题目的示例代码,帮助读者理解和实践。
摘要由CSDN通过智能技术生成

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。📈


目录

原理图解析

 设置STM32CubeMX

配置文件

测试LCD屏函数

实例运用


原理图解析

观察LCD的原理图,LCD的引脚比较多,在下一个步骤设置STM32CubeMX时,最好一一对应地去设置,以免缺漏。

但需要注意的是,在官方文件的实例代码中,已有LCD.c与.h文件,我们可以直接移动到我们的工程文件即可

 设置STM32CubeMX

对照原理图将各个引脚设置好即可

配置文件

这一步与上一步选择一个便可。推荐使用官方资料中的文件,因为方便快捷,且不易出错。

在官方资料中找到fonts.h与lcd.h,还有lcd.c三个文件,复制到我们工程文件bsp中。 

 打开keil5

右击左侧Project中的bsp文件,点击添加文件到bsp中,选中lcd.c添加即可

测试LCD屏函数

我们打开刚刚找lcd.c文件同文件夹中的main.c,部分如下:

	LCD_Init();                //LCD初始化
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
	
	LCD_Clear(Blue);                //LCD清屏
	LCD_SetBackColor(Blue);         //LCD背景颜色
	LCD_SetTextColor(White);        //LCD文本颜色
	
	LCD_DisplayStringLine(Line0, (uint8_t *)"                    ");
	LCD_DisplayStringLine(Line1, (uint8_t *)"                    ");
	LCD_DisplayStringLine(Line2, (uint8_t *)"      LCD Test      ");
	LCD_DisplayStringLine(Line3, (uint8_t *)"                    ");
	LCD_DisplayStringLine(Line4, (uint8_t *)"                    ");
	
	LCD_SetBackColor(White);
	LCD_SetTextColor(Blue);

	LCD_DisplayStringLine(Line5, (uint8_t *)"                    ");
	LCD_DisplayStringLine(Line6, (uint8_t *)"       HAL LIB      ");
	LCD_DisplayStringLine(Line7, (uint8_t *)"                    ");
	LCD_DisplayStringLine(Line8, (uint8_t *)"         @80        ");
	LCD_DisplayStringLine(Line9, (uint8_t *)"                    ");

可以看到,LCD的初始化已经是现成的了,不需要我们再去写,所以我们在给LCD初始化时直接调用  “ LCD_Init();  ”  即可。

下面还有三个函数,作用分别如下:

    LCD_Clear(Blue);               LCD清屏,并选择清屏后的颜色
    LCD_SetBackColor(Blue);     LCD背景颜色
 LCD_SetTextColor(White);        LCD文本颜色

最后一个函数就是指定在第几行什么位置显示上面文本了,如:

LCD_DisplayStringLine(Line2, (uint8_t *)"      LCD Test      ");

就是在LCD屏第三行,显示      LCD Test      ,空格也是占格数的哦。

可以将这一部分拷贝到自己的主函数中,然后烧入开发板中去试试,看看有什么效果。

实例运用

我们以第十三届省赛题中的LCD为例子试一试:

题目如下:

 写代码时,一定要注意行数与列数必须和题目中一样哦(特别是空格要数对),大家可以先写出来,再看下面的代码,有什么异同欢迎评论哦。

代码实现

int X_shop = 1,Y_shop = 8;
char text[30];
sprintf(text,"        SHOP   ");
LCD_DisplayStringLine(Line1, (uint8_t *)text);

sprintf(text,"     X:%d",X_shop);
LCD_DisplayStringLine(Line3, (uint8_t *)text);
		
sprintf(text,"     Y:%d",Y_shop);
LCD_DisplayStringLine(Line4, (uint8_t *)text);

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勾栏听曲_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值