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

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

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

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_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);

http://www.lryc.cn/news/24932.html

相关文章:

  • 论文学习——Reproducing Activation Function for Deep Learning
  • 【趣味学Python】Python基础语法讲解
  • 虚拟局域网VLAN的实现机制
  • Mask R-CNN 算法学习总结
  • Gorm -- 添加记录
  • go提高升阶(四) I/O流学习
  • 【代码随想录训练营】【Day28】第七章|回溯算法|93.复原IP地址|78.子集|90.子集II
  • Get请求和Post请求区别
  • static关键字
  • A Comprehensive Tool for Modeling CMOS Image-Sensor-Noise Performance论文总结及翻译
  • 嘀嗒出行再闯IPO:千军万马我无懈
  • MATLAB算法实战应用案例精讲-【优化算法】增强型鲸鱼优化算法(EWOA)(附matlab代码实现)
  • 登录Oracle数据库遇到ORA-01017密码错误的解决办法
  • 10个黑客基础教程!简单有效
  • JPA之实体之间的关系
  • 如何在 C++ 中调用 python 解析器来执行 python 代码(三)?
  • 【Linux】gcc/g++/gdb的使用
  • 浅浅谈一谈B树和B+树
  • Keil新建一个国民32位MCU工程
  • webpack.config.js与package.json文件的配置
  • 超详细Eclipse配置JDK
  • 成功解决numpy.linalg.LinAlgError: SVD did not converge in Linear Least Squares
  • Allegro如何设置铜皮避让的优先级操作指导
  • (Trie Tree)字典树
  • MQTT的学习之Mosquitto集群搭建
  • TS面向对象
  • Python进阶-----高阶函数map() 简介和使用
  • GPU会变得更便宜吗?GPU 定价更新
  • IDEA如何创建一个springboot项目
  • Netty核心功能以及线程模型