新手用FlexLua低代码单片机开发TM1638八位数码管和矩阵键盘

96 篇文章 0 订阅
32 篇文章 0 订阅

TM1638八位数码管和16矩阵键盘

本文基于 FlexLua 低代码单片机技术,脱离复杂单片机C语言开发。即使新手也可很容易用FlexLua零门槛开发各种功能丰富稳定可靠的 IoT 硬件,更多学习教程可参考 FlexLua 官网。

一、实现功能

本篇章实现了Core外接一个包含8位数码管和16个按键的模块,每当按下不同的按键时,数码管上会有不同的显示。

该模块的主控芯片型号是TM1638,一款低成本的数码管和键盘专用驱动芯片,非常适用于IO口引脚数量偏少的芯片。

二、接线图

3a6a9d1335ee91d0834ce4e36fc02a53.jpeg

三、材料清单

  • TM1638 8位数码管&16按键模块

6e3271afbb1313224f2711fe4aa8e089.jpeg

您可以根据上面提供的硬件资料里的原理图,自己裁剪定制一款数码管和按键模块,但需要注意的是:

  • 数码管的个数可以少于或等于8个,但不要超过8个
  • 您需要保证显示的数字最多有效位数不超过数码管的位数
  • 按键的个数可以少于或等于16个,但不要超过16个

四、完整代码

--配置数码管矩阵键盘模块的引脚DIO,CLK,STB分别占用Core的D7,D6,D5引脚,并开始工作
LIB_SegLedsAndMatrixKeysConfig("D7","D6","D5")
--开始大循环
while(GC(1) == true)
do
--查询矩阵键盘是否有按键按下
keypress_flag,key_pos = LIB_MatrixKeysRead()
if keypress_flag == 1 then
--如果按键S1按下
if key_pos == 1 then
--数码管显示0.001,"3"表示有3个小数
LIB_SegLedsWrite(1, "3", "LEVEL1")
--如果按键S2按下
elseif key_pos == 2 then
--数码管显示-0.002,"3"表示有3个小数
LIB_SegLedsWrite(-2, "3", "LEVEL3")
else
--剩下的14个按键,当每个按键按下时,数码管会显示每个按键的整数值(3-16),
--并且显示的亮度也是最亮的LEVEL8等级
LIB_SegLedsWrite(key_pos, "0", "LEVEL8")
end
end
end


如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

五、代码运行结果

下图是当按下按键S1时,数码管上显示的0.001效果

266aabf335be6fc4fb515b0ace01ebe7.jpeg

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值