极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15106|回复: 2

TM1637数码管模块驱动

[复制链接]
发表于 2016-11-12 14:21:36 | 显示全部楼层 |阅读模式
很多库文件和例程都是英文的,看着很辛苦
拿别人的汉化说明一下和修改了一下适合自己运用!

  1. /* 修改时间2016-11-12 by chchange
  2.     TM1637(uint8_t pinClk, uint8_t pinDIO);
  3.   //!初始化一个TM1637对象,设置时钟和数据引脚。
  4.   //!@参数 pinclk -数字引脚连接到模块的时钟引脚数
  5.   //!@参数 pindio -数字引脚连接到模块的DIO引脚数
  6.   --------------------------------------------------------------------------------------------------
  7.    void BL(uint8_t brightness);
  8.   // 设置显示的亮度。
  9.   // @param brightness -从0-7级亮度,运行默认为3级亮度
  10. --------------------------------------------------------------------------------------------------
  11.    void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);
  12.   //!在模块上显示任意数据
  13.   //!此功能接收原始段值作为输入,并显示它们。数据段作为一个字节数组,每个字节对应一个数字。在每个字节0维是段A,1维是段B等。
  14.   //!@param segments 显示的4维数组
  15.   //! @param length 设置显示的数字的数量。用户必须确保显示的数字符合要求的数字(例如,如果两个数字被显示,数字必须在0到99之间,大于99则只显示个位与十位两位)
  16.   //! @param pos 第一个数字位置 0-3,0最左,3最右(例如,123这个数,Pos=0,1显示在最在边;POS=1,1显示在左边第二个;POS=3,1显示在第四位)//
  17.    --------------------------------------------------------------------------------------------------
  18.    void Num(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
  19.   //! 显示十进制数字
  20.   //! @param leading_zero 为真是,前面的填充0
  21.   //! @param length 设置显示的数字的数量。用户必须确保显示的数字符合要求的数字(例如,如果两个数字被显示,数字必须在0到99之间,大于99则只显示个位与十位两位)
  22.   //! @param pos 第一个数字位置 0-3,0最左,3最右(例如,123这个数,Pos=0,1显示在最在边;POS=1,1显示在左边第二个;POS=3,1显示在第四位)
  23.    --------------------------------------------------------------------------------------------------
  24.   uint8_t encodeDigit(uint8_t digit);
  25.   //! 将一个数字转换成7段代码!
  26.   //! 该方法在0 - 15之间接受一个数字,并将其转换为显示在7段显示上的数字所需的代码。 数字之间10-15转换为十六进制数字(A-F)!
  27.   //! @param digit 数字0-15
  28.   //! @return 返回代码表示数字7段图像(LSB段;位6段G;7位总为零)
  29. --------------------------------------------------------------------------------------------------
  30.   void DNum(uint8_t num1,uint8_t num2,bool piont =true);
  31. //! 显示两组数字
  32. //! @param num1 0-99,大于99点显示十位及个位,显示在左边两位
  33. //! @param num2 0-99,大于99点显示十位及个位,显示在右边两位
  34. //! @param piont 是否显示中间两点
  35. --------------------------------------------------------------------------------------------------
  36.    void show(bool BS);
  37.   //!是否显示
  38. //! @param BS 为真显示,否则不显示
  39. --------------------------------------------------------------------------------------------------
  40. void cls();
  41. 清除所有显示的数据
  42. */
  43. #include <TM1637.h>

  44. // 配置引脚
  45. #define CLK 2
  46. #define DIO 3

  47. //延时时间
  48. #define TEST_DELAY   2000

  49. TM1637 TM(CLK, DIO);

  50. void setup()
  51. {

  52. }

  53. void loop()
  54. {
  55.   int k=123;
  56.   bool ZD;
  57.   TM.cls();//清除
  58.   //显示1位数,位置从第0位到每3位
  59.   for(int i=0; i<4;i++)
  60. {
  61.   TM.Num(i,0,1,i);//显示i,不填充0,显示1位,显示在每i位
  62.   delay(TEST_DELAY);
  63.   }
  64.   
  65.   for(int i=0; i<8;i++)
  66. {
  67.   TM.Num(i,1);
  68.   TM.BL(i);//调节亮度
  69.   delay(TEST_DELAY);
  70.   }

  71.   TM.Num(k,0);//不填充
  72.   delay(TEST_DELAY);
  73.   TM.Num(k,1);//填充
  74.   delay(TEST_DELAY);

  75. //显示与隐藏
  76.    for(int i=0; i<4;i++)
  77. {
  78.    TM.show(false);
  79.    delay(TEST_DELAY/2);
  80.    TM.show(true);
  81.    delay(TEST_DELAY/2);   
  82. }
  83. //显示双组数
  84.    for(int i=0; i<20;i++)
  85. {
  86.   ZD=!ZD;
  87. TM.DNum(i/2,i/2,ZD);
  88. delay(500);
  89. }

  90. delay(5000);
  91.   
  92. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2018-12-15 21:17:20 来自手机 | 显示全部楼层
楼主能改个六位的吗?
回复 支持 反对

使用道具 举报

发表于 2018-12-21 09:24:05 | 显示全部楼层
真复杂,学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 23:56 , Processed in 0.046495 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表