风筝
发表于: 2024-12-20 11:15:18 | 显示全部楼层

在各种测试台中,会看到一些显示电流、电压的模块,这些模块多数采用多位数码管。在本文中,我们将主要介绍如何基于Arduino开发板使用TM1637显示模块。


TM1637显示模块简介

该显示模块基于TM1637驱动器,是一种4位七段显示模块,可显示各种输出。它仅使用两个引脚(SCL和SDA)与微控制器通信。TM1637显示模块的芯片允许我们扫描8*2键盘。该模块还提供八种不同的模式来调整显示背景光。此外,它在3.5至5V的电压范围内工作。

TM1637-Display.jpg

TM1637显示模块的引脚分布

该显示模块有四个引脚,如下图所示:

TM1637-Display-Pinout.jpg

●    VCC:显示电源(3.3 至 5.5V)

●    GND:接地

●    SLC:I2C数据同步

●    SDA:I2C数据信息


TM1637显示模块与Arduino的硬件连接

将模块连接到Arduino开发板,如下图所示。

TM1637-display-Wiring.jpg


代码

首先将TM1637库安装到您的Arduino IDE上,该库的下载地址:https://github.com/AKJ7/TM1637


将以下代码上传到您的Arduino开发板。

  1. /**
  2. * @file basic.ino
  3. * @ingroup examples
  4. * @brief Basic library usage example
  5. *
  6. * This example shows how to display different types of values on the display.
  7. */

  8. /**
  9. *
  10. * API
  11. * class TM1637 {
  12. public:
  13. static constexpr uint8_t TOTAL_DIGITS = 4;
  14. TM1637(uint8_t clkPin, uint8_t dataPin) noexcept;
  15. TM1637(const TM1637&) = delete;
  16. TM1637& operator=(const TM1637&) = delete;
  17. ~TM1637() = default;
  18. void begin();
  19. inline void init();
  20. inline Animator* refresh();
  21. template <typename T>
  22. typename type_traits::enable_if<
  23. type_traits::is_string<T>::value ||
  24. type_traits::is_floating_point<T>::value ||
  25. type_traits::is_integral<T>::value,
  26. Animator*>::type
  27. display(const T value, bool overflow = true, bool pad = false, uint8_t offset = 0);
  28. Animator* displayRawBytes(const uint8_t* buffer, size_t size);
  29. void offMode() const noexcept;
  30. void onMode() const noexcept;
  31. inline void colonOff() noexcept;
  32. inline void colonOn() noexcept;
  33. inline Animator* switchColon() noexcept;
  34. void clearScreen() noexcept;
  35. inline void setDp(uint8_t value) noexcept;
  36. inline uint8_t getBrightness() const noexcept;
  37. void changeBrightness(uint8_t value) noexcept;
  38. void setBrightness(uint8_t value) noexcept;
  39. };

  40. class Animator
  41. {
  42. Animator(uint8_t clkPin, uint8_t dataPin, uint8_t totalDigits);
  43. void blink(Tasker::duration_type delay);
  44. void fadeOut(Tasker::duration_type delay);
  45. void fadeIn(Tasker::duration_type delay);
  46. void scrollLeft(Tasker::duration_type delay);
  47. void off() const;
  48. void on(DisplayControl_e brightness) const;
  49. void reset(const String& value);
  50. void clear();
  51. void refresh();
  52. }

  53. struct DisplayDigit
  54. {
  55. DisplayDigit& setA();
  56. DisplayDigit& setB();
  57. DisplayDigit& setC();
  58. DisplayDigit& setD();
  59. DisplayDigit& setE();
  60. DisplayDigit& setF();
  61. DisplayDigit& setG();
  62. DisplayDigit& setDot();
  63. operator uint8_t();
  64. }
  65. */

  66. #include <TM1637.h>


  67. // Instantiation and pins configuration
  68. // Pin 3 - > DIO
  69. // Pin 2 - > CLK
  70. TM1637 tm(2, 3);

  71. void setup()
  72. {
  73. tm.begin();
  74. tm.setBrightness(4);
  75. }

  76. void loop()
  77. {
  78. // Display Integers:
  79. tm.display(1234);
  80. // delay(1000);
  81. //
  82. // // Display float:
  83. // tm.display(29.65);
  84. // delay(1000);
  85. //
  86. // // Display String:
  87. // tm.display("PLAY");
  88. // delay(1000);
  89. // tm.display("STOP");
  90. // delay(1000);
  91. }
复制代码

此代码在模块显示两个数字和两个单词。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 716 | 回复: 1504



手机版|

GMT+8, 2025-1-20 02:39 , Processed in 0.043090 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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