LCD配置


lcd.h可以不放在keil中 但在main.c中需要lcd.h
点亮屏幕的函数
LCD_Init();//为什么需要先初始化
LCD_Clear(Red);
为什么需要先初始化?
在调用 LCD_Clear(Red)
之前,必须先调用 LCD_Init()
,原因如下:
(1) 硬件未初始化时无法操作
-
如果 LCD 控制器和驱动芯片没有初始化,硬件处于未知状态,无法响应任何操作。
-
例如,如果没有配置 GPIO 引脚的功能,LCD 屏幕无法接收数据;如果没有配置时钟信号,LCD 屏幕无法正常显示。
(2) 显存未分配时无法写入
-
LCD_Clear(Red)
的作用是将整个屏幕填充为红色,这需要向显存中写入颜色数据。 -
如果显存没有分配或未正确配置,写入操作会导致程序崩溃或硬件错误。
(3) 驱动芯片未配置时无法显示
-
LCD 驱动芯片需要接收特定的初始化命令序列,才能正确解析显存中的数据并显示。
-
如果没有初始化,LCD 屏幕可能无法显示任何内容,或者显示异常(如花屏、闪烁等)。
LCD函数
用 const
定义的变量是只读的,不能被修改。
LCD_DisplayStringLine
可以在LCD第一行Line0显示出“ Hello World”
sprintf
防止溢出
如果字符串长度超过了LCD的显示宽度,可能会导致显示异常或数据溢出。通过定义一个固定大小的缓冲区(例如char buf[21]
,20个字符加上一个终止符\0
),可以确保字符串不会超出LCD的显示范围。
sprintf的第二个参数是格式化后的字符串,咱们用一个时间变量来测试(why???)
在显示屏上显示按键按下的次数
啊啊啊啊啊啊啊啊!终于知道这里一开始怎么count不会因为按键加1,屏幕上变化了!
大家复制工程的时候,如果不是复制的key按键相关的工程,一定要到图形化界面CubeMx中把key的引脚配置好。
LCD换页
注意:每次换页的清屏操作写在哪里,不能写在下面图片的空格处,不然会出现每个页面都是闪烁出现。
LCD高亮显示
hang的代码一开始不是很会写。用三个if-else就可以突出某行了
LCD_SetBackColor();
LCD_SetTextColor();
第三个按钮,决定那一行加1
优化一下:
因为uint8_t最大为255,所以最大就是三位数
所以用%03d,然后前面加空格,后面加空格 让它居中。
注意:
每次换页的时候,最好再设置一下下面这个地方!但是不知道为啥