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液晶屏教程相关推荐

  1. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

  2. MCU驱动和RGB驱动的液晶屏的区别

    概况来讲,RGB驱动需要的硬件条件高,比如用STM32F429的LTDC+DMA2D模块,外加SDRAM作为显存.而MCU接口,STM32F407系列的控制器就整合了这个模块,包含6800和8080两 ...

  3. arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏

    上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...

  4. 通过 I2C 驱动 LCD1602 液晶屏(51单片机)

    通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...

  5. stm32 arduino 驱动jlx液晶屏

    stm32 arduino 驱动jlx液晶屏 1.说明 单片机这次用的是STM32F103C8T6,烧成arduino用,库还是我们的老朋友u8g2.液晶屏型号是JLX 240160G-676,SPI ...

  6. 单通道驱动LVDS驱动1080P液晶屏

    上周末把单通道LVDS驱动1080P液晶屏调通了.通过FPGA接收单8的LVDS输入,内部一个倍频,数据组合格式如下:

  7. STM32F103软件模拟SPI接口驱动ILI9486液晶屏

    STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...

  8. STM32——FSMC(灵活的静态存储器控制器)驱动TFTLCD液晶屏

    TFTLCD液晶屏介绍 TFTLCD即薄膜晶体管液晶显示器.它与无源TN-LCD.STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰 ...

  9. 阿里云HaaS100驱动LCD液晶屏的方法(含fb.h错误解决方法)

    摘要:HaaS团队提供的各种外设组件中,已经有了液晶屏驱动.本文介绍一下如何使用vscode编程,在液晶屏上随机显示黑色的矩形. 软件:vscode,aos studio 硬件:haas100,spi ...

最新文章

  1. vue3启动项目时,自动打开浏览器怎么配置?
  2. 累加器配上委托也可以很吊
  3. python的可变对象和不可变对象
  4. FreeSql (八)插入数据时指定列
  5. 7Python全栈之路系列之Django表单
  6. html在电脑上转换字体怎么变了,怎样通过电脑把汉字转换为小篆字体?小篆字体转换器如何使用?...
  7. 数字化中台前导--企业架构TOGAF简介
  8. 优米网:20部电影,哈佛商学院学生必看   下载地址
  9. 自控原理学习笔记-系统稳定性分析(1)-BIBO稳定及Routh判据
  10. 论文笔记:A novel DRM scheme for accommodating expectations of personal use
  11. 方正飞鸿智能信息平台产品白皮书(一)
  12. coreldraw x7怎样设置禁网_cdr怎么优化? coreldraw x7优化设置的详细教程
  13. linux裸设备详解,Linux裸设备管理详解(原创)
  14. 运营管理最新版史蒂文森_《运营管理(英文版第11版注解版国际经典原版教材)》(美)威廉J.史蒂文森著【摘要 书评 在线阅读】-苏宁易购图书...
  15. Map.containsKey() 的一个使用场景.
  16. 作也 努力努力在努力
  17. edgeR/limma/DESeq2差异基因分析→ggplot2作火山图→biomaRt转换ID并注释
  18. 电信公司Mahindra Comviva利用VoltActiveData来部署实时客户价值
  19. RoadFlow设置流程分支
  20. k64 datasheet学习笔记21--Direct Memory Access Multiplexer (DMAMUX)

热门文章

  1. 【微服务】—— Nacos注册中心
  2. LCD液晶屏的9大秘诀
  3. 落纱机器人_纺织智能化的代表---艾菲特Z-03环锭纺智能落纱机器人
  4. 毕业设计-基于微信小程序投票系统
  5. A3Mall电商平台——功能测试(测试报告)
  6. win10系统出现错误代码0x80073712的解决办法
  7. 全球五分之一的人听力受损,你有预防听力损伤吗?
  8. softmax函数的正推原理——softmax前世今生系列(1)
  9. python之文件操作(txt文本的读取写入及处理方法)
  10. 【ICCVIT 2023征稿通知】计算机、视觉与智能技术国际会议