ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > [蓝桥杯嵌入式有手就行]6_LCD

[蓝桥杯嵌入式有手就行]6_LCD

原创 嵌入式/内核开发 作者:工具人呵呵 时间:2023-10-15 10:39:09 0 删除 编辑


前言

一、LCD模块分析

1、原理图

2、LCD显示过程及原理(不考,会用就行)

二、软件部分

1.导入库文件

1、复制文件

2、添加进keil工程

2、代码实例

三、问题 

1、有时我只更改一个字,却要全屏清除,快了就会闪屏,看着难受

2、自定义颜色

3、关于格式化字符

总结

前言 

注:本系列基于2023年蓝桥杯实战情况就行编写,所有软件均采用2023年赛点资源包

LCD是最简单也是最复杂的。简单是因为,你只需要记住4个函数,复杂是因为,程序功能基本以界面作为划分,合理的规划变得尤为重要。

在编程时,我个人习惯按照各个界面去划分不同的功能,以便防止干扰。


一、LCD模块分析

这个比较简单,我们只需要导入三个现成的库文件,即可。


1、原理图

在这里插入图片描述


2、LCD显示过程及原理(不考,会用就行)

二、软件部分

1.导入库文件

1、复制文件

在这里插入图片描述

从液晶驱动参考程序中,复制以下三个文件到我们的工程下对应的目录。


文件夹    文件

src         lcd.c

Inc         lcd.h,fonts.h

2、添加进keil 工程

添加后别忘了点击build,这样头文件 才会被引用,否则不会有代码提示。

在这里插入图片描述

如果你不是放在Inc文件夹,那么需要手动添加头文件路径。

在这里插入图片描述


2、代码实例

以下代码请写在while(1)或者LCD操作之前


 

LCD_Init();
 LCD_Clear(White);//清屏
 LCD_SetBackColor(White);//背景设置为白色
 LCD_SetTextColor(Black);//字体设置为黑色

接着我们就可以编写功能代码了。


void hello(void)
{
int n=1;
unsigned char str[21];
sprintf((char *)str,"%d" ,n);
LCD_DisplayStringLine(Line4, (unsigned char *)"    Hello,world.   ");
LCD_DisplayStringLine(Line5, str);
}

库文件中定义了行数和列数。从Line0到Line9一共10行,每行20个字符。注意:题目中示意图大概率第一行是1不是0,也就是Line n-1


三、问题

1、有时我只更改一个字,却要全屏清除,快了就会闪屏,看着难受

可以使用LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii)函数。

在这里插入图片描述

这里4点坐标为(注意方向):


点   坐标

a     (0,15)

b    (0,319)

c    (216,15)

d    (216,319)

2、自定义颜色

关于颜色,可能就不太好计算了。

在这里插入图片描述

这里采用的是16位二进制数来表示颜色,依次是5红,6绿,5蓝


3、关于格式化字符

名称                      符号

字符                       %c

整数                       %d

浮点数                    %f

不带先导十六进制     %x

百分号                    %%

自动补0                  %02d

指定小数位              %.2f

总结

lcd比较简单,但是是所有功能的基础,一定要能熟练运用。

下一篇文章,我们将分析串口,这应该算是蓝桥杯噩梦(做过停车场计费系统的应该知道)。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70050091/viewspace-3117698/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-01-01

  • 博文量
    35
  • 访问量
    5027