当前位置: 首页 > news >正文

LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块

常量

常量

类型

解释

lcd.font_opposansm8

font

8号字体

lcd.font_unifont_t_symbols

font

符号字体

lcd.font_open_iconic_weather_6x_t

font

天气字体

lcd.font_opposansm10

font

10号字体

lcd.font_opposansm12

font

12号字体

lcd.font_opposansm16

font

16号字体

lcd.font_opposansm18

font

18号字体

lcd.font_opposansm20

font

20号字体

lcd.font_opposansm22

font

22号字体

lcd.font_opposansm24

font

24号字体

lcd.font_opposansm32

font

32号字体

lcd.font_opposansm8_chinese

font

8号中文字体

lcd.font_opposansm10_chinese

font

10号中文字体

lcd.font_opposansm12_chinese

font

12号中文字体

lcd.font_opposansm16_chinese

font

16号中文字体

lcd.font_opposansm18_chinese

font

18号中文字体

lcd.font_opposansm20_chinese

font

20号中文字体

lcd.font_opposansm22_chinese

font

22号中文字体

lcd.font_opposansm24_chinese

font

24号中文字体

lcd.font_opposansm32_chinese

font

32号中文字体

lcd.init(tp, args)

lcd显示屏初始化

参数

传入值类型

解释

string

lcd类型,当前支持:
st7796
st7789
st7735
st7735v
st7735s
gc9a01
gc9106l
gc9306x
ili9486
custom

table

附加参数,与具体设备有关:
pin_pwr(背光)为可选项,可不设置
port:spi端口,例如0,1,2…如果为device方式则为”device”
pin_dc:lcd数据/命令选择引脚
pin_rst:lcd复位引脚
pin_pwr:lcd背光引脚 可选项,可不设置
direction:lcd屏幕方向 0:0° 1:180° 2:270° 3:90°
w:lcd 水平分辨率
h:lcd 竖直分辨率
xoffset:x偏移(不同屏幕ic 不同屏幕方向会有差异)
yoffset:y偏移(不同屏幕ic 不同屏幕方向会有差异)

userdata

spi设备,当port = “device”时有效

返回值

例子

-- 初始化spi0的st7735s 注意:lcd初始化之前需要先初始化spi
spi_lcd = spi.deviceSetup(0,20,0,0,8,2000000,spi.MSB,1,1)
log.info("lcd.init",
lcd.init("st7735s",{port = "device",pin_dc = 17, pin_pwr = 7,pin_rst = 19,direction = 2,w = 160,h = 80,xoffset = 1,yoffset = 26},spi_lcd))

lcd.close()

关闭lcd显示屏

参数

返回值

例子

-- 关闭lcd
lcd.close()

lcd.on()

开启lcd显示屏背光

参数

返回值

例子

-- 开启lcd显示屏背光
lcd.on()

lcd.off()

关闭lcd显示屏背光

参数

返回值

例子

-- 关闭lcd显示屏背光
lcd.off()

lcd.sleep()

lcd睡眠

参数

返回值

例子

-- lcd睡眠
lcd.sleep()

lcd.wakeup()

lcd唤醒

参数

返回值

例子

-- lcd唤醒
lcd.wakeup()

lcd.invon()

lcd反显

参数

返回值

例子

-- lcd反显
lcd.invon()

lcd.invoff()

lcd反显关闭

参数

返回值

例子

-- lcd反显关闭
lcd.invoff()

lcd.cmd(cmd)

lcd命令

参数

传入值类型

解释

int

cmd

返回值

例子

-- lcd命令
lcd.cmd(0x21)

lcd.data(data)

lcd数据

参数

传入值类型

解释

int

data

返回值

例子

-- lcd数据
lcd.data(0x21)

lcd.setColor(back,fore)

lcd颜色设置

参数

传入值类型

解释

int

背景色

int

前景色

返回值

例子

-- lcd颜色设置
lcd.setColor(0xFFFF,0x0000)

lcd.draw(x1, y1, x2, y2,color)

lcd颜色填充

参数

传入值类型

解释

int

左上边缘的X位置.

int

左上边缘的Y位置.

int

右下边缘的X位置.

int

右下边缘的Y位置.

string

字符串或zbuff对象

返回值

例子

-- lcd颜色填充
local buff = zbuff.create({201,1,16},0x001F)
lcd.draw(20,30,220,30,buff)

lcd.clear(color)

lcd清屏

参数

传入值类型

解释

int

屏幕颜色 可选参数,默认背景色

返回值

例子

-- lcd清屏
lcd.clear()

lcd.fill(x1, y1, x2, y2,color)

lcd颜色填充

参数

传入值类型

解释

int

左上边缘的X位置.

int

左上边缘的Y位置.

int

右下边缘的X位置,不含

int

右下边缘的Y位置,不含

int

绘画颜色 可选参数,默认背景色

返回值

例子

-- lcd颜色填充
lcd.fill(20,30,220,30,0x0000)

lcd.drawPoint(x0,y0,color)

画一个点.

参数

传入值类型

解释

int

点的X位置.

int

点的Y位置.

int

绘画颜色 可选参数,默认前景色

返回值

例子

lcd.drawPoint(20,30,0x001F)

lcd.drawLine(x0,y0,x1,y1,color)

在两点之间画一条线.

参数

传入值类型

解释

int

第一个点的X位置.

int

第一个点的Y位置.

int

第二个点的X位置.

int

第二个点的Y位置.

int

绘画颜色 可选参数,默认前景色

返回值

例子

lcd.drawLine(20,30,220,30,0x001F)

lcd.drawRectangle(x0,y0,x1,y1,color)

从x / y位置(左上边缘)开始绘制一个框

参数

传入值类型

解释

int

左上边缘的X位置.

int

左上边缘的Y位置.

int

右下边缘的X位置.

int

右下边缘的Y位置.

int

绘画颜色 可选参数,默认前景色

返回值

例子

lcd.drawRectangle(20,40,220,80,0x001F)

lcd.drawCircle(x0,y0,r,color)

从x / y位置(圆心)开始绘制一个圆

参数

传入值类型

解释

int

圆心的X位置.

int

圆心的Y位置.

int

半径.

int

绘画颜色 可选参数,默认前景色

返回值

例子

lcd.drawCircle(120,120,20,0x001F)

lcd.drawQrcode(x, y, str, size)

缓冲区绘制QRCode

参数

传入值类型

解释

int

x坐标

int

y坐标

string

二维码的内容

int

显示大小 (注意:二维码生成大小与要显示内容和纠错等级有关,生成版本为1-40(对应 21x21 - 177x177)的不定大小,如果和设置大小不同会自动在指定的区域中间显示二维码,如二维码未显示请查看日志提示)

返回值

返回值类型

解释

nil

无返回值

例子


lcd.setFont(font)

设置字体

参数

传入值类型

解释

int

font lcd.font_XXX 请查阅常量表

返回值

例子

-- 设置为字体,对之后的drawStr有效,调用lcd.drawStr前一定要先设置-- 若提示 "only font pointer is allow" , 则代表当前固件不含对应字体, 可使用云编译服务免费定制
-- 云编译文档: https://wiki.luatos.com/develop/compile/Cloud_compilation.html-- lcd库的默认字体均以 lcd.font_ 开头
lcd.setFont(lcd.font_opposansm12)
lcd.drawStr(40,10,"drawStr")
sys.wait(2000)
lcd.setFont(lcd.font_opposansm12_chinese) -- 具体取值可参考api文档的常量表
lcd.drawStr(40,40,"drawStr测试")

lcd.drawStr(x,y,str,fg_color)

显示字符串

参数

传入值类型

解释

int

x 横坐标

int

y 竖坐标 注意:此(x,y)为左下起始坐标

string

str 文件内容

int

fg_color str颜色 注意:此参数可选,如不填写则使用之前设置的颜色,绘制只会绘制字体部分,背景需要自己清除

返回值

例子

-- 显示之前先设置为中文字体,对之后的drawStr有效
lcd.setFont(lcd.font_opposansm12)
lcd.drawStr(40,10,"drawStr")
sys.wait(2000)
lcd.setFont(lcd.font_opposansm16_chinese)
lcd.drawStr(40,40,"drawStr测试")

lcd.drawGtfontGb2312(str,size,x,y)

使用gtfont显示gb2312字符串

参数

传入值类型

解释

string

str 显示字符串

int

size 字体大小 (支持16-192号大小字体)

int

x 横坐标

int

y 竖坐标

返回值

例子

-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312("啊啊啊",32,0,0)

lcd.drawGtfontGb2312Gray(str,size,gray,x,y)

使用gtfont灰度显示gb2312字符串

参数

传入值类型

解释

string

str 显示字符串

int

size 字体大小 (支持16-192号大小字体)

int

gray 灰度[1阶/2阶/3阶/4阶]

int

x 横坐标

int

y 竖坐标

返回值

例子

-- 注意, gtfont是额外的字体芯片硬件, 需要外挂在SPI总线才能调用本函数的
lcd.drawGtfontGb2312Gray("啊啊啊",32,4,0,40)

lcd.drawGtfontUtf8(str,size,x,y)

使用gtfont显示UTF8字符串

参数

传入值类型

解释

string

str 显示字符串

int

size 字体大小 (支持16-192号大小字体)

int

x 横坐标

int

y 竖坐标

返回值

例子

lcd.drawGtfontUtf8("啊啊啊",32,0,0)

lcd.drawGtfontUtf8Gray(str,size,gray,x,y)

使用gtfont灰度显示UTF8字符串

参数

传入值类型

解释

string

str 显示字符串

int

size 字体大小 (支持16-192号大小字体)

int

gray 灰度[1阶/2阶/3阶/4阶]

int

x 横坐标

int

y 竖坐标

返回值

例子

lcd.drawGtfontUtf8Gray("啊啊啊",32,4,0,40)

lcd.getSize()

获取屏幕尺寸

参数

返回值

返回值类型

解释

int

宽, 如果未初始化会返回0

int

高, 如果未初始化会返回0

例子

log.info("lcd", "size", lcd.getSize())

lcd.drawXbm(x, y, w, h, data)

绘制位图

参数

传入值类型

解释

int

X坐标

int

y坐标

int

位图宽

int

位图高

int

位图数据,每一位代表一个像素

返回值

例子

-- 取模使用PCtoLCD2002软件即可 阴码 逐行 逆向
-- 在(0,0)为左上角,绘制 16x16 "今" 的位图
lcd.drawXbm(0, 0, 16,16, string.char(0x80,0x00,0x80,0x00,0x40,0x01,0x20,0x02,0x10,0x04,0x48,0x08,0x84,0x10,0x83,0x60,0x00,0x00,0xF8,0x0F,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x00
))

lcd.showImage(x, y, file)

显示图片,当前只支持jpg,jpeg

参数

传入值类型

解释

int

X坐标

int

y坐标

string

文件路径

返回值

例子

lcd.showImage(0,0,"/luadb/logo.jpg")

lcd.flush()

主动刷新数据到界面, 仅设置buff且禁用自动属性后使用

参数

返回值

返回值类型

解释

bool

成功返回true, 否则返回nil/false

例子


lcd.setupBuff(conf, onheap)

设置显示缓冲区, 所需内存大小为 2×宽×高 字节. 请衡量内存需求与业务所需的刷新频次.

参数

传入值类型

解释

userdata

conf指针, 不需要传

bool

true使用heap内存, false使用vm内存, 默认使用vm内存, 不需要主动传

返回值

返回值类型

解释

bool

是否成功

例子

-- 初始化lcd的buff缓冲区, 可理解为FrameBuffer区域.
lcd.setupBuff()

lcd.autoFlush(enable)

设置自动刷新, 需配合lcd.setupBuff使用

参数

传入值类型

解释

bool

是否自动刷新,默认为true

返回值

例子

-- 设置buff 并禁用自动更新
lcd.setupBuff()
lcd.autoFlush(false)
-- 禁止自动更新后, 需要使用 lcd.flush() 主动刷新数据到屏幕

lcd.rgb565(r, g, b, swap)

RGB565颜色生成

参数

传入值类型

解释

int

红色, 0x00 ~ 0xFF

int

绿色, 0x00 ~ 0xFF

int

蓝色, 0x00 ~ 0xFF

bool

是否翻转, true 翻转, false 不翻转. 默认翻转

返回值

返回值类型

解释

int

颜色值

例子

-- 本API支持多种模式, 参数数量分别是 1, 2, 3, 4
-- 1. 单参数形式, 24bit RGB值, swap = true, 推荐
local red =   lcd.rgb565(0xFF0000)
local green = lcd.rgb565(0x00FF00)
local blue =  lcd.rgb565(0x0000FF)-- 2. 两参数形式, 24bit RGB值, 增加swap的设置
local red =   lcd.rgb565(0xFF0000, true)
local green = lcd.rgb565(0x00FF00, true)
local blue =  lcd.rgb565(0x0000FF, true)-- 3. 三参数形式, 红/绿/蓝, 各8bit
local red = lcd.rgb565(0xFF, 0x00, 0x00)
local green = lcd.rgb565(0x00, 0xFF, 0x00)
local blue = lcd.rgb565(0x00, 0x00, 0xFF)-- 4. 四参数形式, 红/绿/蓝, 各8bit, 增加swap的设置
local red = lcd.rgb565(0xFF, 0x00, 0x00, true)
local green = lcd.rgb565(0x00, 0xFF, 0x00, true)
local blue = lcd.rgb565(0x00, 0x00, 0xFF, true)

相关文章:

LuatOS-SOC接口文档(air780E)--lcd - lcd驱动模块

常量 常量 类型 解释 lcd.font_opposansm8 font 8号字体 lcd.font_unifont_t_symbols font 符号字体 lcd.font_open_iconic_weather_6x_t font 天气字体 lcd.font_opposansm10 font 10号字体 lcd.font_opposansm12 font 12号字体 lcd.font_opposansm16 font…...

敏捷是怎么提高工作效率的

敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法,适用于各行各业,被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊,激发个体斗志,释放出巨大…...

【C++】哈希的应用 -- 布隆过滤器

文章目录 一、布隆过滤器提出二、布隆过滤器概念三、布隆过滤器哈希函数个数的选择四、布隆过滤器的实现1.布隆过滤器的插入2.布隆过滤器的查找3.布隆过滤器删除4.完整代码实现 五、布隆过滤器总结1.布隆过滤器优点2.布隆过滤器缺陷3.布隆过滤器的应用4.布隆过滤器相关面试题 一…...

如何在Git中修改远程仓库地址

原文(可不登录复制代码):如何在Git中修改远程仓库地址-北的杂货间 Git是广泛使用的分布式版本控制系统,它允许开发者在本地仓库上工作,并将更改上传到远程仓库。然而,有时候你可能需要修改远程仓库的地址&…...

Go语言的sync.Once()函数

sync.Once 是 Go 语言标准库 sync 包提供的一个类型,它用于确保一个函数只会被执行一次,即使在多个 goroutine 中同时调用。 sync.Once 包含一个 Do 方法,其签名如下: func (o *Once) Do(f func()) Do 方法接受一个函数作为参数…...

修改 Stable Diffusion 使 api 接口增加模型参数

参考:https://zhuanlan.zhihu.com/p/644545784 1、修改 modules/api/models.py 中的 StableDiffusionTxt2ImgProcessingAPI 增加模型名称 StableDiffusionTxt2ImgProcessingAPI PydanticModelGenerator("StableDiffusionProcessingTxt2Img",StableDiff…...

微信小程序自定义组件及会议管理与个人中心界面搭建

一、自定义tabs组件 1.1 创建自定义组件 新建一个components文件夹 --> tabs文件夹 --> tabs文件 创建好之后win7 以上的系统会报个错误:提示代码分析错误,已经被其他模块引用,只需要在 在project.config.json文件里添加两行配置 &…...

UiPath:一家由生成式AI驱动的流程自动化软件公司

来源:猛兽财经 作者:猛兽财经 总结: (1)UiPath(PATH)的股价并没有因为生成式AI的炒作而上涨,但很可能会成为主要受益者。 (2)即使在严峻的宏观环境下,UiPath的收入还在不…...

使用AI编写测试用例——详细教程

随着今年chatGPT的大热,每个行业都试图从这项新技术当中获得一些收益我之前也写过一篇测试领域在AI技术中的探索:软件测试中的AI——运用AI编写测试用例现阶段AI还不能完全替代人工测试用例编写,但是如果把AI当做一个提高效率的工具&#xff…...

又哭又笑,这份面试宝典要是早遇到就好了

01、算法原理 选择排序(Selection sort)是一种简单直观的排序算法。 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素&#…...

订单30分钟自动关闭的五种解决方案

1 前言 在开发中,往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务 。那么这里就会产生一个问题,这…...

【vSphere 8 自签名 VMCA 证书】企业 CA 签名证书替换 vSphere VMCA CA 证书Ⅰ—— 生成 CSR

目录 替换拓扑图证书关系示意图说明 & 关联博文1. 默认证书截图2. 使用 certificate-manager 生成CSR2.1 创建存放CSR的目录2.2 记录PNID和IP2.3 生成CSR2.4 验证CSR 参考资料 替换拓扑图 证书关系示意图 本系列博文要实现的拓扑是 说明 & 关联博文 因为使用企业 …...

【diffusion model】扩散模型入门

写在最前,参加DataWhale 10月组队学习。 参考资料: HuggingFace 开源diffusion-models-class 1.扩散模型介绍 2.调用模型生成一张赛博风格的猫咪图片 2.1 安装依赖包 %pip install -qq -U diffusers datasets transformers accelerate ftfy pyarrow9…...

[Spring]为什么Spring动态代理默认使用CGlib,而不是JDK代理?

文章目录 原因一:CGlib不需要接口原因二:CGlib效率高原因三:JDK代理会导致注解失效如果希望使用JDK代理扩展AOP in Spring Boot, is it a JDK dynamic proxy or a Cglib dynamic proxy?SpringSpringBoot 原因一:CGlib不需要接口 …...

最长上升子序列(二分)代码模板

用二分的思想求最长上升子序列的思想就是保持单调性,用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中,但是要保持单调性,q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…...

存储优化知识复习一详细版解析

存储优化 知识复习一 一、 选择题 1、1948 年,____提出了“信息熵”(shāng) 的概念,解决了对信息的量化度量问题。 A、薛定谔 B、香农 C、克劳修斯 D、纳什 【参考答案】B2、 RAID2.0技术下,LUN是建立在____上。 A、硬盘 B、条带 C、Chun…...

“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“

11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…...

微信小程序会议OA系统其他页面

前言: 及上一文章:https://blog.csdn.net/djssubddbj/article/details/133895170?spm1001.2014.3001.5501我们所写的会议OA的首页,在这个上面我们继续完成我们的会议OA系统,这是我们的本期所要完成的页面 自定义组件 微信小程序…...

LabVIEW中使用Get LV Class Default Value 出现错误1498

LabVIEW中使用Get LV Class Default Value 出现错误1498 在LabVIEW中开发了一个应用程序,其中包含可以在执行时动态配置插件的基类。生成可执行文件后,当应用程序要执行子类时,收到以下错误信息。 Error1498 occurred at Gen LV Class Defa…...

RabbitMQ中的核心概念和交换机类型

目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer:生产者,就是投递消息的一方。生产者创建消息,然后发布到RabbitMQ中。消息一般可以包含两个部分:消息体和附加消息。 消息体…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...