跳转至

ht1621 - 液晶屏驱动(HT1621/HT1621B)

作者:江访

一、概述

ht1621 液晶屏驱动库是 LuatOS 的段码液晶屏驱动库,支持 HT1621/HT1621B 等驱动芯片,提供简单的段码显示功能;

ht1621 库主要功能:

1、液晶屏初始化:支持 HT1621/HT1621B 芯片初始化;

2、段码显示:支持数字和简单字符显示;

3、背光控制:支持背光开关控制;

注意事项:

1、需要接 3 个 GPIO 引脚:CS、DATA、WR;

2、需要给 ht1621 接好供电;

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

3、更加完整和详细的 demo,请参考 LuatOS 仓库 中各个产品目录下的 demo/ht1621

2.1 核心代码

-- 本核心示例演示ht1621库的基本使用流程:
-- 1、初始化ht1621液晶屏
-- 2、开启背光
-- 3、显示数字和小数点

-- HT1621液晶屏驱动 - 基于实际测试的段码映射
-- 假设连接:
-- CS引脚: GPIO29
-- DATA引脚: GPIO30  
-- WR引脚: GPIO31

-- 段码映射
local segment_map = {
    a = 0x80,  -- 顶部横线
    b = 0x08,  -- 右上竖线
    c = 0x02,  -- 右下竖线
    d = 0x01,  -- 底部横线
    e = 0x20,  -- 左下竖线
    f = 0x40,  -- 左上竖线
    g = 0x04,  -- 中间横线
    dp = 0x10  -- 小数点
}

-- 附数字0-9的值表
-- 0,1,2,3,4,5,6,7,8,9
-- 0xeb,0x0a,0xad,0x8f,0x4e,0xc7,0xe7,0x8a,0xef,0xcf

-- 清屏函数
function clear_display()
    for i = 0, 11 do
        ht1621.data(seg, i, 0x00)
    end
end

-- 主函数
local function main()
    -- 初始化HT1621
    local seg = ht1621.setup(29, 30, 31)

    -- 打开LCD显示
    ht1621.lcd(seg, true)
    -- 初始化延时
    sys.wait(100)  
    -- 清屏,调用的上面的函数
    clear_display()
    sys.wait(100)
    ht1621.data(seg, 0, 0xef | 0x10)  -- 按位或运算符,显示数字外还显示小数点
    ht1621.data(seg, 2, 0xef | 0x10)
    ht1621.data(seg, 4, 0xef | 0x10)
    ht1621.data(seg, 6, 0xef | 0x10)
    ht1621.data(seg, 8, 0xef | 0x10)
    ht1621.data(seg, 10, 0xef | 0x10)

end

-- 运行主函数
sys.taskInit(main)

2.2 效果演示

三、常量详解

核心库常量,顾名思义是由合宙 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

ht1621 - 液晶屏驱动(HT1621/HT1621B)核心库没有常量。

四、函数详解

4.1 ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen)

功能

初始化 ht1621;

注意事项

需要正确连接 CS、DATA、WR 三个引脚;

参数

pin_cs

参数含义:片选引脚;
**数据类型**number
**取值范围**GPIO编号
**是否必选**:必须传入此参数;
**注意事项**:填模块的GPIO编码
**参数示例**4

pin_data

参数含义:数据引脚;
**数据类型**number
**取值范围**GPIO编号
**是否必选**:必须传入此参数;
**注意事项**:填模块的GPIO编码
**参数示例**5

pin_wr

参数含义:WR引脚
**数据类型**number
**取值范围**GPIO编号
**是否必选**:必须传入此参数;
**注意事项**:填模块的GPIO编码
**参数示例**3

cmd_com_mode

参数含义:命令模式;
**数据类型**number
**取值范围**0-255,默认0x52
**是否必选**:可选传入此参数;
**注意事项**:具体值请查阅硬件手册;
**参数示例**0x52

cmd_rc

参数含义:内部RC振荡器
**数据类型**number
**取值范围**0-255,默认0x30
**是否必选**:可选传入此参数;
**注意事项**:具体值请查阅硬件手册;
**参数示例**0x30

cmd_sysen

参数含义:系统振荡器开;
**数据类型**number
**取值范围**0-255,默认0x02
**是否必选**:可选传入此参数;
**注意事项**:具体值请查阅硬件手册;
**参数示例**0x02

返回值

local seg = ht1621.setup(pin_cs, pin_data, pin_wr, cmd_com_mode, cmd_rc, cmd_sysen)

seg

含义说明:ht1621对象
**数据类型**userdata
**取值范围**:有效的ht1621对象
**注意事项**:后续操作需要此对象;
**返回示例**userdata

示例

-- 初始化ht1621
local seg = ht1621.setup(29, 30, 31)

4.2 ht1621.lcd(seg, onoff)

功能

LCD 背光开关;

注意事项

控制液晶屏背光;

参数

seg

参数含义:ht1621对象
**数据类型**userdata
**取值范围**ht1621.setup返回的对象
**是否必选**:必须传入此参数;
**注意事项**:需要先初始化;
**参数示例**seg

onoff

参数含义:背光开关;
**数据类型**boolean
**取值范围**true-开,false-关;
**是否必选**:必须传入此参数;
**注意事项**:暂无;
**参数示例**true

返回值

示例

-- 开启背光
ht1621.lcd(seg, true)

-- 关闭背光
ht1621.lcd(seg, false)

4.3 ht1621.data(seg, addr, sdat)

功能

显示数据;

注意事项

在指定地址显示数据;

参数

seg

参数含义:ht1621对象
**数据类型**userdata
**取值范围**ht1621.setup返回的对象
**是否必选**:必须传入此参数;
**注意事项**:需要先初始化;
**参数示例**seg

addr

参数含义:显示地址;
**数据类型**number
**取值范围**0-11
**是否必选**:必须传入此参数;
**注意事项**:超过11无效;
**参数示例**0

sdat

参数含义:显示数据;
**数据类型**number
**取值范围**0-255
**是否必选**:必须传入此参数;
**注意事项**:具体值对应段码;
**参数示例**0xeb

返回值

示例

-- 在地址0显示数字1
ht1621.data(seg, 0, 0xeb)

-- 数字0-9的值表:
-- 0: 0xeb, 1: 0x0a, 2: 0xad, 3: 0x8f, 4: 0x4e
-- 5: 0xc7, 6: 0xe7, 7: 0x8a, 8: 0xef, 9: 0xcf

4.4 ht1621.cmd(seg, cmd)

功能

发送指令;

注意事项

向 ht1621 发送控制指令;

参数

seg

参数含义:ht1621对象
**数据类型**userdata
**取值范围**ht1621.setup返回的对象
**是否必选**:必须传入此参数;
**注意事项**:需要先初始化;
**参数示例**seg

cmd

参数含义:控制指令;
**数据类型**number
**取值范围**0-255
**是否必选**:必须传入此参数;
**注意事项**:具体指令请查阅硬件手册;
**参数示例**0x30

返回值

示例

-- 发送指令
ht1621.cmd(seg, 0x30)

五、产品支持说明

支持 LuatOS 开发的产品是否支持 HT1621/HT1621B 段码液晶屏,可以查看选型手册中对应型号是否支持 HT1621/HT1621B 段码液晶屏核心库。