首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

一、实现功能

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

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

二、接线图

三、材料清单

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

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

数码管的个数可以少于或等于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效果

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OfLLMhF7nJiKG4twGx7wW2HA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券