🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏
🪔本系列专栏 - 蓝桥杯嵌入式_勾栏听曲_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);