在蓝桥杯嵌入式官方给我们提供好了,LCD显示的底层源码,我们只需要,记住里面的API函数,会用这些函数就行。
在官方给的资料中找到这个文件名字DK117_G4 Data Packet->开发板驱动文件里面就是所有的底层文件有两种类型,一种是基于HAL库的一种是标准库的。里面有LCD的底层驱动,还有IIC的底层驱动(软件模仿IIC驱动)。
fonts.h文件是底层文字库,这个也是必须需要的,要不然找不到文字的扫描显示。



在STM32CubeMX生成的文件下面建一个LCD文件夹,存放上面复制的三个文件。

打开Keil建一个分组名为LCD
刚刚加载进去的LCD文件,会报错因为文件名,不一样,需要这样修改
未修改时

修改好了

按照下面的顺序把头文件加载进去

加载完成点击OK就行了。
我为大家介绍一下LCD底层的函数
LCD初始化函数:
| 函数 | void LCD_Init(void) |
| 参数 | 无 |
| 返回值 | 无 |
| 作用 | 初始化LCD,这个很重要,在使用LCD之前一定要初始化 |
函数LCD_SetTextColor()
| 函数 | void LCD_SetTextColor(vu16 Color) |
| 参数 | 表示颜色 |
| 返回值 | 无 |
| 作用 | 这是文本颜色函数,参数是表示,在LCD显示字体颜色 |
函数LCD_SetBackColor()
| 函数 | void LCD_SetBackColor(vu16 Color) |
| 参数 | 表示颜色 |
| 返回值 | 无 |
| 作用 | 这是文本背景颜色函数,参数是表示,在LCD显示字体的背景色 |
函数LCD_Clear()
| 函数 | void LCD_Clear(vu16 Color) |
| 参数 | 表示颜色 |
| 返回值 | 无 |
| 作用 | 清除函数,可以清除全屏,参数是,清屏之后屏幕是什么颜色的 |
函数void LCD_DisplayStringLine(u8 Line, u8 *ptr);
| 函数 | void LCD_DisplayStringLine(u8 Line, u8 *ptr) |
| 参数 | Line:表示数据放在滴几行,一个由10行 ptr:在LCD显示的数据,仅支持字符串。 |
| 返回值 | 无 |
| 作用 | 在LCD固定位置显示数据 |
常用的函数不多,这几个是必用的函数。
我为大家重定义一下这个 LCD_DisplayStringLine()函数,可以实现变量的显示。
利用这个sprintf()函数,可以重新定义一下。
- #include <stdarg.h>
- //可以实时打印变量
-
- void LcdSprintf(u8 Line,char *format,...)
- {
- char String[50];
- va_list arg;
- va_start(arg,format);
- vsprintf(String,format,arg);
- va_end(arg);
-
- LCD_DisplayStringLine(Line,String);
- }
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- char table[]="cuwsxhiax";
-
- /* USER CODE END 1 */
-
- /* MCU Configuration--------------------------------------------------------*/
-
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
-
- /* USER CODE BEGIN Init */
-
- /* USER CODE END Init */
-
- /* Configure the system clock */
- SystemClock_Config();
-
- /* USER CODE BEGIN SysInit */
-
- /* USER CODE END SysInit */
-
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- /* USER CODE BEGIN 2 */
-
- LCD_Init(); //LCD初始化
- LCD_Clear(Black);//清除屏幕,并且显示黑色
- LCD_SetBackColor(Black);//设置字体背景色
- LCD_SetTextColor(White);//设置字体颜色
- /* USER CODE END 2 */
-
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- u8 i=25;
-
- LcdSprintf(Line3," i=%d",i);
- LcdSprintf(Line4," sxhuaxjn");
-
- /* USER CODE END WHILE */
-
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
