IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 面向应用学习stm32(3)-LCD屏的显示 -> 正文阅读

[嵌入式]面向应用学习stm32(3)-LCD屏的显示

前导:本文的目的与,意在于面向应用的学习单片机,故不会涉及太多的原理知识,例如寄存器之类的。

主要目的在于面向应用的学习单片机,学会单片机的基础用法,开发板采取野火的指南者f103。

作者大二小白,写的不好的地方轻点喷,欢迎评论区交流

全部工程代码开源在Gitee仓库

一 LCD简介

LCD是一类常见的彩色显示屏,常常作为输出设备接入在单片机上,提供给用户交互页面。

其显示是通过点亮屏幕上的像素点显示的,例如320*240的LCD屏幕,就可以分别点亮指定坐标上的像素点,做到显示的效果

二 LCD例程简单讲解

2.1 例程

Gitee仓库里的LCD_Base复制到你要存的目录下,打开查看,可以看到主函数里调用了一行LCD测试函数

里面有详细的注释

image-20220505141757235

image-20220505141823736

运行后会发现,LCD屏会根据注释里所说的运行。

大致阅读之后,应该能够掌握屏幕的基础使用。

接下来,我们来阅读一下lcd的头文件。

2.2 头文件部分

基本上属于一个功能对应一个函数,在上面的例程里也都用了我们大部分情况下会使用的函数。

image-20220505142126311

颜色的宏定义,可以用在设置背景色和字体颜色。

image-20220505142353188

三 小实验

把之前的两个led的小实验整合lcd屏幕的显示

3.1 需求

显示之前的key1_flag,key2_flag,以及统计两个按键被按下的次数。

3.2解决思路

首先,既然要展示那些参数,参数本身是变量,那我们就需要动态展示。

如果是下图这种写死字符串的形式的话,那我们的参数就永远不会改变了,永远只能显示该字符串的内容

	ILI9341_DispStringLine_EN(LINE(1),"KEY1_Flag:1");
	ILI9341_DispStringLine_EN(LINE(2),"KEY2_Flag:1");
	ILI9341_DispStringLine_EN(LINE(4),"KEY1_Count:1");
	ILI9341_DispStringLine_EN(LINE(5),"KEY2_Count:1");

所以我们要使用 sprintf

sprintf指的是字符串格式化
sprintf(char *string, char *format [,argument,…]);
主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。

举个例子

char buf[20];
//把后面格式化的数据写入到buf里
sprintf(buf,"KEY1_Flag:%d",KEY1_Flag)
//展示出来
ILI9341_DispStringLine_EN(LINE(1),buf);

这样的写法,当我们的KEY1_Flag变量改变时,随着while(1)的刷新,就会显示新的字符串。

所以思路如下

  • sprintf 结合 ILI9341_DispStringLine_EN 显示数据
  • 按键按下时记录,并改变显示的变量

3.3 代码

由于该工程内已经集成了KEY和LED的文件,所以可以轻松的控制按键和LED,通过前两篇里的那些函数。

char disp[20];

int key1_flag = 0;
int key2_flag = 0;
int key1_count = 0;
int key2_count = 0;

void LCD_Show()
{
	sprintf(disp,"KEY1_Flag:%d",key1_flag);
	ILI9341_DispStringLine_EN(LINE(1),disp);
	
	sprintf(disp,"KEY2_Flag:%d",key2_flag);
	ILI9341_DispStringLine_EN(LINE(2),disp);
	
	sprintf(disp,"KEY1_Count:%3d",key1_count);
	ILI9341_DispStringLine_EN(LINE(4),disp);
	
	sprintf(disp,"KEY2_Count:%3d",key2_count);
	ILI9341_DispStringLine_EN(LINE(5),disp);
}
void KEY_Control()
{
	char key = KEY_Scan();
	if(key=='1'){
		key1_flag = !key1_flag;
		key1_count++;
	}
	if(key=='2'){
		key2_flag = !key2_flag;
		key2_count++;
	}
}
	while (1)
	{
		LCD_Show();
		KEY_Control();
	}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:17:54  更:2022-05-08 08:19:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:25:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码