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 段码液晶屏核心库。