利用原有的LCD驱动程序实现一些操作。从其他文件复制lcd.c和lcd.h和fonts.h到自己的工程下,再打开keil5点击魔法棒右边的按钮,选Application/User在Add Files加入lcd.c。同时应用头文件(#include"lcd.h")
LCD_Init()初始化
LCD_Clear(Black);清屏使lcd变为某颜色
LCD_SetTextColor(White);设置文本颜色
LCD_SetBackColor(Black);设置文本背景颜色
LCD_DisplayStringLine(u8 Line, u8 *ptr) Line(0~9行)在某行显示ptr(想显示的字符串)长度最长为20
LCD_DisplayStringLine(Line0,(uint8_t*)"HELLO");//可在第0行显示HELLO,需注意要强制类型转换。
sprintf()可将其他类型格式化为字符串,其余功能与printf相同。需要引用头文件(#include"stdio.h")
sprintf()和LCD_DisplayStringLine(u8 Line, u8 *ptr) 共同使用,定义一个char buf[21]作为字符缓冲区,利用sprintf将想输入的字符串输入到缓冲区内,再用LCD_DisplayStringLine(u8 Line, u8 *ptr)显示。
实现用按键切换lcd页面,以及选中行。
思路:定义一个变量lcd_page来记录当前页面,按键按下时修改界面。line_flag选中行数
按键部分代码:按键1按下时页面切换及lcd_page++,一共有三页(0,1,2),进行越界判断一旦超过3就重新置0。每次切换时lcd清屏。按键2按下如果页面在第三面则选中行数增加,越界判断,一共有三行,超出清零。
在第一页第一行显示HELLO,第二页第二行显示J。
当页面在第二页分别在1,2 ,3行显示usled:usled具体数值(usled在定时器内每隔1ms加1)
return 0和return 1。初始为黑色背景白色文字。若选中即line_flag与行数相同则使其背景变为绿色的,每次设置完选中背景颜色,都需要在此设置回原来的颜色。
实现:在上面的基础设置按键三在页面二count1:0,count2:0,count3:0按下时选中行的数字加一。
按键部分增加判断页面是否为第二页,行数为选中的行,行数相对应的变量count1/count2/count3实现加一。
lcd第三页的设置实现选中背景显示绿色,以及显示按键增加后的具体值,没选中的则保持原状。
在学习lcd时将按键的知识与lcd融会贯通,更好的掌握了按键的操作。一开始怎么样都无法在lcd上显示,经仔细检查代码发现代码写在了GPIO初始化之前就无法完成对应操作了,将代码移到lcd初始化后就可以实现功能了,学习过程中遇到的难题要学会主动思考解决问题,具体的分析原因。我觉得遇见问题反而还能提升自己解决问题的能力,也是很不错的。就这样完成了!end!
标签:第三次,lcd,stm32,LCD,选中,按键,页面,u8 From: https://blog.csdn.net/2301_80307650/article/details/144169539