0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TM1637数码管模块的使用

冬至子 来源:ZYuanBlogs 作者:激沄RagingWaves 2023-11-01 09:08 次阅读

这个数码管模块有意思的地方不是中间有两个小点,而是它的控制方式:只需要两个引脚就能够控制,通信方式与IIC很像。

TM1637的通信比IIC要简单些,可以作为IIC入门的学习,还是有一定帮助的。

模块简介

先说明一下,TM1637是天微电子的一款驱动芯片数码管是普通的共阳数码管,模块是连接了驱动芯片和数码管的板子,模块的功能不完全代表芯片的功能。

相比于直接使用数码管,这一模块有这些优点:

  1. 占用的IO少,只需要2个IO口就能控制;
  2. 驱动芯片带有显存,不需要占用资源做动态显示;
  3. 不需要写PWM程序,可以直接调节数码管的亮度;
  4. 价格不高,两块多一个,淘宝到处都有卖(误)。

此外,TM1637还有按键扫描功能,可以接8*2bit的矩阵键盘,可惜这模块并没有引出相应的引脚。

相比于IIC的通信方式,TM1637没有设备地址,直接发送数据,且传输数据时是按从低位到高位的顺序。

通信内容

简单介绍完毕,因为这模块只有数码管显示功能,下面就只以控制数码管显示为例,说说怎么玩这个模块。

图片

TM1637芯片引脚图

TM1637的数据指令只有3种,以最高两位比特位B7、B6进行区别:

图片

一个完整数据指令包含四个部分(按传输顺序排列):

  1. 开始命令
  2. 数据指令
  3. 应答信号
  4. 结束命令

1、开始与结束命令

当CLK在高电平时,DIO从高变为低为开始命令,从低变为高为结束命令。

除了开始与结束命令外,在传输其他数据时DIO都不能在CLK为高电平时发生变化,否则会影响数据的传输。

如果在指令或数据传输时发送了结束命令,那么当前传输的指令或数据无效(之前传输的会保留),通信会被初始化。

2、应答信号

当传输数据正确时,TM1637会在第八个时钟的下降沿,产生一个应答信号ACK将DIO拉低,在第九个时钟结束之后释放DIO。

图片

翻译一下就是,每过了8个时钟,在第9个时钟DIO会变为低电平,第10个时钟才可以开始发送下一部分数据。

判断应答信号可以知道数据是否正确传输:先将DIO置高电平,若DIO不被拉低,则数据没有正确传输。

3、数据指令

数据指令有三种:数据命令设置、地址命令与显示数据、显示控制。

图片

  1. 数据命令设置:设置TM1637的通信模式与通信方式。
  2. 显示控制命令设置:设置数码管的亮度。
  3. 地址命令设置:对数码管进行段选和位选。
    说明:为了配合数据手册的时序图,下面按1→3→2的顺序讲,这一顺序不会对实际效果产生影响。

3.1、数据命令设置

数据命令设置包含三部分:数据读写模式设置、地址增加模式设置、测试模式设置。

图片

在控制数码管时,数据读写模式设置、测试模式设置都是固定的,地址增加模式设置可以根据情况进行调整:

自动地址增加模式:

在设置了地址后,每传输完一个显示数据,地址会自动加一,当出现结束命令时停止。

图片

举例:该模式下,假设进行位选选中第二个数码管后发送段选数据,当段选数据完成后,位选会自动选中第三个数码管。

固定地址模式:

在设置了地址后,后面只有一个显示数据,之后发送结束命令。

图片

举例:该模式下,对每位数码管发送段选数据后位选不会自动加一,只能控制一位数码管;若需要控制多位,在发送完一次段选数据后需要再发送下一位数码管的位选数据。

3.2、地址命令设置

这一步开始就是真正的数码管控制了,和直接控制数码管的步骤一样,TM1637先处理地址命令(位选),随后处理显示数据(段选)。

位选:

图片

该模块一共有4位共阳数码管(芯片最多能控制6个),地址从00H到03H,中间的小点由第二位数码管的小数点控制

段选:

图片

显示数据一共8个比特位,从低位到高位对应着数码管的8个段(就是段选,一样一样的),需要注意数码管共阳与共阴的数据是相反的。

例如,需要控制第2位数码管显示数字2,需要发送以下数据(以固定地址模式为例):

图片

  1. 【灰色】发送开始命令;
  2. 【红色】发送地址命令(进行位选)0xC1(1100 0001);
  3. 【绿色】TM1637产生ACK应答;
  4. 【蓝色】发送显示数据(进行段选)0x5B(0101 1011,共阳数码管显示数字2);
  5. 【绿色】TM1637产生ACK应答;
  6. 【黄色】发送结束命令。

3.3、显示命令设置

TM1637可以调节8级占空比:

图片

需要注意,B3控制显示的开关,只有为1时数码管才会进行显示。

编程流程

下面结合一个例子,说说TM1637的通信流程。

假设需要控制第一位数码管显示2,第二位数码管显示3,模式为固定地址模式,亮度为最大亮度。

大致流程:

  1. 发送设置数据;
  2. 发送数码管显示数据;
  3. 发送亮度数据。

第一步:发送设置数据

图片

  1. 发送开始命令;
  2. 进行数据命令设置,发送0x44(0100 0100);
  3. TM1637产生ACK应答;
  4. 发送结束命令;

第二步:发送数码管显示数据

(和上面那个例子一样,看过上面的这里跳过就行了)

图片

  1. *发送开始命令;
    *
  2. 发送地址命令(进行位选)0xC0(1100 0000);
  3. *TM1637产生ACK应答;
    *
  4. 发送显示数据(进行段选)0x5B(0101 1011,共阳数码管显示2);
  5. TM1637产生ACK应答;
  6. 发送结束命令。
  7. *发送开始命令;
    *
  8. 发送地址命令(进行位选)0xC1(1100 0001);
  9. *TM1637产生ACK应答;
    *
  10. 发送显示数据(进行段选)0x4F(0100 1111,共阳数码管显示3);
  11. TM1637产生ACK应答;
  12. 发送结束命令。

第三步:发送亮度数据

图片

  1. *发送开始命令;
    *
  2. 进行显示控制,发送0x8F(1000 1111);
  3. TM1637产生ACK应答;
  4. 发送结束命令。

这里就完成了数码管的显示控制,流程不多,也比较简单。

再进一步,可以写一下计数程序:

图片

前面提到过,TM1637有显存功能,当不对其进行控制时,会一直显示之前显示的数据。

假设之前显示的是1234,然后按上面的例子只对第一、第二位数码管发送了数据,那么显示的的就是2334。

如果不能正常显示,可以检查一下是否没设置亮度,以及数据传输是否按照要求。

这里推荐一个小东西:逻辑分析仪,20多元的、像U盘的那种就够了,这东西在我之前舵机的那篇文章中出现过,但它正真的作用是分析通信的时序,在检查数据传输时非常有用。

最后

兜兜转转最后还是在玩灯哈哈

像上面说的,这芯片的通信方式与IIC类似,正在学习IIC的同学可以尝试一下玩玩这个。

这里只是简单讲了下这一芯片的控制,要想了解这块芯片的更多玩法可以去看官方的数据手册。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89954
  • ACK
    ACK
    +关注

    关注

    0

    文章

    27

    浏览量

    11081
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16912
  • TM1637
    +关注

    关注

    0

    文章

    21

    浏览量

    9332
  • IIC通信
    +关注

    关注

    0

    文章

    17

    浏览量

    2974
收藏 人收藏

    评论

    相关推荐

    在树莓派Pico上使用TM1637 4位数码管模块的方法

    TM1637 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路,内部集成有 MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。
    的头像 发表于 11-30 09:02 1748次阅读
    在树莓派Pico上使用<b class='flag-5'>TM1637</b> 4位<b class='flag-5'>数码管</b><b class='flag-5'>模块</b>的方法

    TM1637驱动共阳数码管 CL2661BH为什么用共阴编码才可以?

    TM1637驱动共阳数码管 CL2661BH为什么用共阴编码才可以?不知道为什么要用共阴的编码
    发表于 02-28 15:08

    为什么TM1637驱动共阳极数码管要用共阴极的编码?

    为什么TM1637驱动共阳极数码管要用共阴极的编码?code unsigned char tab[] = {0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66
    发表于 02-29 22:09

    DS1302时钟模块简介

    【Arduino】使用DS1302时钟模块搭配TM1637四位数码管制作简易电子钟材料准备DS1302时钟模块DS1302芯片简介DS1302时钟
    发表于 07-26 06:34

    如何使用DS1302时钟模块搭配TM1637四位数码管制作简易电子钟?

    如何使用DS1302时钟模块搭配TM1637四位数码管制作简易电子钟?
    发表于 09-26 08:35

    STM32F103单片机驱动TM1637数码管显示模块的方法

    最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。使用的单片机是STM32F103C8T6最小系统使用的
    发表于 12-08 07:08

    TM1637芯片怎么使用

    1,TM1637芯片(大自然的搬运工)芯片介绍 引脚图 时序图 其他关键管脚功能命令格式 封装2,51单片机程序编写I2C总线协议I2C_START():I2C_WR():I2C_ACK
    发表于 01-20 06:59

    如何用2553单片机/TM1637实现按键倒计时响铃以及时间的显示

    TM1637数码管显示。注:TM1637数码管资料如下:资料链接:https://pan.baidu.com/s/1POymj8LqbfPZexBZc-EpXg提取码:up4e本次实验
    发表于 02-23 06:11

    数码管驱动芯片规格书-TM1637_V2[1].1

    数码管驱动芯片规格书-TM1637,LED驱动控制专用电路
    发表于 12-07 14:36 41次下载

    tm1637驱动数码管程序

    本文介绍了tm1637驱动数码管程序,TM1637是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口,数据锁存器,LED高压驱动,键盘扫描等电路。
    发表于 12-19 11:59 4.5w次阅读
    <b class='flag-5'>tm1637</b>驱动<b class='flag-5'>数码管</b>程序

    TM1637 MSP430 单片机 数码管 程序 驱动 G2553

    电子发烧友网站提供《TM1637 MSP430 单片机 数码管 程序 驱动 G2553.pdf》资料免费下载
    发表于 11-19 17:06 21次下载
    <b class='flag-5'>TM1637</b> MSP430 单片机 <b class='flag-5'>数码管</b> 程序 驱动 G2553

    STM32F103单片机驱动TM1637数码管显示模块

    最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。使用的单片机是STM32F103C8T6最小系统 使用的
    发表于 11-25 10:51 85次下载
    STM32F103单片机驱动<b class='flag-5'>TM1637</b><b class='flag-5'>数码管</b>显示<b class='flag-5'>模块</b>

    【Arduino】使用DS1302时钟模块搭配TM1637四位数码管制作简易电子钟

    【Arduino】使用DS1302时钟模块搭配TM1637四位数码管制作简易电子钟材料准备DS1302时钟模块DS1302芯片简介DS1302时钟
    发表于 01-18 09:12 27次下载
    【Arduino】使用DS1302时钟<b class='flag-5'>模块</b>搭配<b class='flag-5'>TM1637</b>四位<b class='flag-5'>数码管</b>制作简易电子钟

    基于TM1637的7段模块/ATtiny85/45 2通道ADC

    电子发烧友网站提供《基于TM1637的7段模块/ATtiny85/45 2通道ADC.zip》资料免费下载
    发表于 08-19 14:41 1次下载
    基于<b class='flag-5'>TM1637</b>的7段<b class='flag-5'>模块</b>/ATtiny85/45 2通道ADC

    TM1637数显器-Arduino快速教程

    电子发烧友网站提供《TM1637数显器-Arduino快速教程.zip》资料免费下载
    发表于 07-12 09:29 4次下载
    <b class='flag-5'>TM1637</b>数显器-Arduino快速教程