【CubeIDE】MiniUI驱动ili9341液晶屏教程
0x00 前言
MiniUI是笔者为一位非常要好的朋友兼师父基于C++开发的屏幕驱动框架,MiniUI分为两部分(如图),抽象层(Abstract layer)继承了底层驱动操作LCD的基础API,例如画点(DrawPixel)填充色彩(FillColor),抽象层负责对用户提供操作LCD的抽象级别API,用户不必关注对LCD的操作细节,MiniUI的名字源于她的设计理念,轻便,可移植,简单,MiniUI已完全开源。
开源地址:https://gitee.com/NackBT/mini-ui/tree/master/
0x01 CubeIDE图形化配置
闲言少叙,虽然笔者使用CubeIDE,但是CubeMX+Keil也是可以的,只要是HAL库就可以,但无论是CubeIDE还是Keil,都必须配置为C++工程。
笔者使用的是stm32f407vet6。
1.新建工程
新建完工程,别忘了配置调试接口RCC和时钟树
2.配置三个输出GPIO
IO名不用和图片里的一样,但是数量必须是三个。
DC(RS)最好设置为High Speed
3.配置SPI
4.使用更大的堆栈
ps:如果程序无法运行或者驱动多块屏幕,可以尝试使用比图片中更大的堆栈
图形化配置到此为止,设置完堆栈就可生成代码了
5.stm32与ili9341接线线序
stm32 ili9341
RST ----> RST // 复位线(低电平复位)
DCRS ----> DC // 命令数据选择 有的模块叫RS
BLED ----> LED // 背光LED
NSS ----> CS // SPI片选线(低电平选中)
MOSI ----> SDI // SPI主发从收数据线
SCK ----> SCK // SPI时钟线(频率不建议大于20m)
6.项目中导入MiniUI
直接把ili9341的底层驱动和MiniUI框架拖进Inc文件夹
然后将main.c重命名为main.cpp,如果要重新生成代码,必须将main.cpp改回main.c再生成代码,生成完代码再改回main.cpp
然后将main.c重命名为main.cpp,如果要重新生成代码,必须将main.cpp改回main.c再生成代码,生成完代码再改回main.cpp
然后将main.c重命名为main.cpp,如果要重新生成代码,必须将main.cpp改回main.c再生成代码,生成完代码再改回main.cpp
重要的事情说三遍
至此基础配置以及完成
0x02 编写初始化代码
1.在main.cpp中包含MiniUI
2.创建一个MiniUI对象
用了几个lcd屏就创建几个,使用时分别调用对象的成员函数即可(C艹真香)
3.编写初始化程序
0x03 MiniUI 函数库使用方法
0.食用前必备知识
MiniUI 的坐标定义
颜色: MiniUI的颜色有两种表示方法:
a. MiniUI的底层驱动头文件中已经定义好了常用颜色,在输入颜色参数是直接用定义好的宏
#define RGB565_BLACK 0x0000
#define RGB565_NAVY 0x000F
#define RGB565_DGREEN 0x03E0
#define RGB565_DCYAN 0x03EF
#define RGB565_MAROON 0x7800
#define RGB565_PURPLE 0x780F
#define RGB565_OLIVE 0x7BE0
#define RGB565_LGRAY 0xC618
#define RGB565_DGRAY 0x7BEF
#define RGB565_BLUE 0x001F
#define RGB565_GREEN 0x07E0
#define RGB565_CYAN 0x07FF
#define RGB565_RED 0xF800
#define RGB565_MAGENTA 0xF81F
#define RGB565_YELLOW 0xFFE0
#define RGB565_WHITE 0xFFFF
b.直接输入RGB565格式的颜色值(不推荐)
1.画点函数
该函数共有三个参数
- x:横坐标
- y:纵坐标
- color:颜色
使用例程:
使用效果:
2.画线函数
该函数共有5个参数:
- 线段其中一点的x坐标
- 线段其中一点的y坐标
- 线段另外一点的x坐标
- 线段另外一点的y左边
- 线段的颜色
使用例程:
使用效果:
3.画矩形函数
该函数共有六个参数:
- 第一二,三四个参数为矩形对角线上两点坐标
- 第5个参数是否填充矩形(矩形是否为实心的),为ture时填充,false时不填充
- 第六个参数为颜色
使用例程:
使用效果:
4.画圆函数
该函数共5个参数:
- 第一二个参数为圆心的横纵坐标
- 第三个参数为圆的半径
- 第四个参数为是否填充,为ture时填充,false时不填充
- 第五各参数为圆的颜色
ps:该函数由于圆的解算有问题,导致不填充时圆的两侧会缺像素点少像素点
使用例程:
使用结果:
5.字符打印函数
16*16字符打印函数:
32*32字符打印函数:
ps:虽然是16*16或者32*32,但实际宽度为16*8和32*16
使用例程:
使用效果:
【CubeIDE】MiniUI驱动ili9341液晶屏教程相关推荐
- ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能
最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...
- MCU驱动和RGB驱动的液晶屏的区别
概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...
- arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏
上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...
- 通过 I2C 驱动 LCD1602 液晶屏(51单片机)
通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...
- stm32 arduino 驱动jlx液晶屏
stm32 arduino 驱动jlx液晶屏 1.说明 单片机这次用的是STM32F103C8T6,烧成arduino用,库还是我们的老朋友u8g2.液晶屏型号是JLX 240160G-676,SPI ...
- 单通道驱动LVDS驱动1080P液晶屏
上周末把单通道LVDS驱动1080P液晶屏调通了.通过FPGA接收单8的LVDS输入,内部一个倍频,数据组合格式如下:
- STM32F103软件模拟SPI接口驱动ILI9486液晶屏
STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...
- STM32——FSMC(灵活的静态存储器控制器)驱动TFTLCD液晶屏
TFTLCD液晶屏介绍 TFTLCD即薄膜晶体管液晶显示器.它与无源TN-LCD.STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰 ...
- 阿里云HaaS100驱动LCD液晶屏的方法(含fb.h错误解决方法)
摘要:HaaS团队提供的各种外设组件中,已经有了液晶屏驱动.本文介绍一下如何使用vscode编程,在液晶屏上随机显示黑色的矩形. 软件:vscode,aos studio 硬件:haas100,spi ...
最新文章
- vue3启动项目时,自动打开浏览器怎么配置?
- 累加器配上委托也可以很吊
- python的可变对象和不可变对象
- FreeSql (八)插入数据时指定列
- 7Python全栈之路系列之Django表单
- html在电脑上转换字体怎么变了,怎样通过电脑把汉字转换为小篆字体?小篆字体转换器如何使用?...
- 数字化中台前导--企业架构TOGAF简介
- 优米网:20部电影,哈佛商学院学生必看 下载地址
- 自控原理学习笔记-系统稳定性分析(1)-BIBO稳定及Routh判据
- 论文笔记:A novel DRM scheme for accommodating expectations of personal use
- 方正飞鸿智能信息平台产品白皮书(一)
- coreldraw x7怎样设置禁网_cdr怎么优化? coreldraw x7优化设置的详细教程
- linux裸设备详解,Linux裸设备管理详解(原创)
- 运营管理最新版史蒂文森_《运营管理(英文版第11版注解版国际经典原版教材)》(美)威廉J.史蒂文森著【摘要 书评 在线阅读】-苏宁易购图书...
- Map.containsKey() 的一个使用场景.
- 作也 努力努力在努力
- edgeR/limma/DESeq2差异基因分析→ggplot2作火山图→biomaRt转换ID并注释
- 电信公司Mahindra Comviva利用VoltActiveData来部署实时客户价值
- RoadFlow设置流程分支
- k64 datasheet学习笔记21--Direct Memory Access Multiplexer (DMAMUX)