Luat模块应用手册-指南-Luat二次开发教程指南-设备驱动-LCD屏幕驱动

disp接口

简介

LCD全称是Liquid Crystal Display,是指液晶显示屏,属于平面显示器的一种。
合宙Cat.1模块LCD接口主要用来UI设计,包括LCD初始化,图片显示操作,文字显示操作等。

LCD接口控制

LCD的库由底层core实现,相关API接口如下:

API接口描述
disp.init()初始化LCD驱动配置
disp.clear()清空显示
disp.update()刷新数据到LCD
disp.puttext()显示文字
disp.putimage()显示文字
disp.drawrect()显示矩形框
disp.setcolor()设置前景色
disp.setbkcolor()设置背景色
disp.putqrcode()显示二维码
disp.loadfont()加载字体文件
disp.setfont()设置当前显示字体
disp.sleep()控制LCD是否进入休眠
disp.write()向LCD控制器写入命令
disp.getlcdinfo()获取屏幕分辨率和位深度
disp.close()关闭显示模块

详细的API介绍见luat core API

接口名称AIR724脚位逻辑名
LCD_CS对应管脚39LCD_CS/WAKEUP_OUT/GPIO_3
LCD_RS对应管脚58LCD_DC/NET_STATUS/GPIO_1
LCD_RST对应管脚56LCD_RST/W_DISABLE/GPIO_6
LCD_DIO对应管脚41LCD_DATA/GPIO_0
LCD_CLK对应管脚40LCD_CLK/AP_WAKEUP_MODULE/GPIO_2
V_LCD对应管脚81VCC_LCD

disp初始化屏幕

local function init()
    local para =
    {
        width = 128, --分辨率宽度,128像素;用户根据屏的参数自行修改
        height = 160, --分辨率高度,160像素;用户根据屏的参数自行修改
        bpp = 16, --位深度,彩屏仅支持16位
        bus = disp.BUS_SPI4LINE, --LCD专用SPI引脚接口,不可修改
        xoffset = 2, --X轴偏移
        yoffset = 1, --Y轴偏移
        freq = 13000000, --spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
        pinrst = pio.P0_6, --reset,复位引脚
        pinrs = pio.P0_1, --rs,命令/数据选择引脚
        --初始化命令序列
        --前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
        --延时类型:后两个字节表示延时时间(单位毫秒)
        --命令类型:后两个字节命令的值
        --数据类型:后两个字节数据的值
        initcmd =
        {
            0x00020011,
            0x00010078,
            --0x00020021, -- 反显
            0x000200B1,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B2,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B3,
            0x00030002,
            0x00030035,
            0x00030036,
            0x00030002,
            0x00030035,
            0x00030036,
            0x000200B4,
            0x00030007,
            0x000200C0,
            0x000300A2,
            0x00030002,
            0x00030084,
            0x000200C1,
            0x000300C5,
            0x000200C2,
            0x0003000A,
            0x00030000,
            0x000200C3,
            0x0003008A,
            0x0003002A,
            0x000200C4,
            0x0003008A,
            0x000300EE,
            0x000200C5,
            0x0003000E,
            0x00020036,
            0x000300C0,
            0x000200E0,
            0x00030012,
            0x0003001C,
            0x00030010,
            0x00030018,
            0x00030033,
            0x0003002C,
            0x00030025,
            0x00030028,
            0x00030028,
            0x00030027,
            0x0003002F,
            0x0003003C,
            0x00030000,
            0x00030003,
            0x00030003,
            0x00030010,
            0x000200E1,
            0x00030012,
            0x0003001C,
            0x00030010,
            0x00030018,
            0x0003002D,
            0x00030028,
            0x00030023,
            0x00030028,
            0x00030028,
            0x00030026,
            0x0003002F,
            0x0003003B,
            0x00030000,
            0x00030003,
            0x00030003,
            0x00030010,
            0x0002003A,
            0x00030005,
            0x00020029,
        },
        --休眠命令
        sleepcmd = {
            0x00020010,
        },
        --唤醒命令
        wakecmd = {
            0x00020011,
        }
    }
    disp.init(para)
    disp.clear()
    disp.update()
end

--控制SPI引脚的电压域
pmd.ldoset(15,pmd.LDO_VLCD)
init()

命令序列在手册中的位置:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o6a4hn59-1624500220443)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210430093151180_20200531002935157_QQ图片20200531002929.png “ST7735S 命令”)]

disp使用示例

--清空LCD显示缓冲区
disp.clear()
if lcd.WIDTH==128 and lcd.HEIGHT==128 then
     --显示logo图片
      disp.putimage("/lua/logo_"..(lcd.BPP==1 and "mono.bmp" or "color.png"),lcd.BPP==1 and 41 or 0,lcd.BPP==1 and 18 or 0)
elseif lcd.WIDTH==240 and lcd.HEIGHT==320 then
     disp.puttext(common.utf8ToGb2312("欢迎使用Luat"),lcd.getxpos(common.utf8ToGb2312("欢迎使用Luat")),10)
    --显示logo图片
     disp.putimage("/lua/logo_color_240X320.png",0,80)
else
    --从坐标16,0位置开始显示"欢迎使用Luat"
    disp.puttext(common.utf8ToGb2312("欢迎使用Luat"),lcd.getxpos(common.utf8ToGb2312("欢迎使用Luat")),0)
    --显示logo图片
    disp.putimage("/lua/logo_"..(lcd.BPP==1 and "mono.bmp" or "color.png"),lcd.BPP==1 and 41 or 1,lcd.BPP==1 and 18 or 33)
end
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()

常见问题

为什么屏幕点不亮
1. 检查SPI (四线制)
2. 检查V_LCD是否有电压输出,正常3.2V

相关资料以及购买链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值