【雕爷学编程】Arduino动手做(73)---TM1637四位数码管

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

实验七十三:4位LED数码管显示模块0.36英寸亮度可调带时钟点( TM1637)

 

TM1637
天微 LED数码管驱动芯片,是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。性能优良,质量可靠。主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。采用DIP/SOP20的封装形式。

 

TM1637 特性
1、采用功率CMOS 工艺
2、显示模式(8 段×6 位),支持共阳数码管输出
3、键扫描(8×2bit),增强型抗干扰按键识别电路
4、辉度调节电路(占空比 8 级可调)
5、两线串行接口(CLK,DIO)
6、振荡方式:内置RC 振荡(450KHz+5%)
7、内置上电复位电路
8、内置自动消隐电路
9、封装形式:DIP20/SOP20

 

 

LED数码管
led数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

 

TM1637 4位数码管显示模块是一个12脚的带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,只需2根信号线即可使单片机控制4位8段数码管。其主要特点有:

1、 显示器件为4位共阳红字数码管

2、数码管8级灰度可调

3、 控制接口电平可为5V或3.3V

4、4个M2螺丝定位孔,便于安装

TM1637 4位数码管显示模块电原理图

TM1637 4位数码管显示模块实验开源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*
 
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
 
实验七十三:4位LED数码管显示模块0.36英寸亮度可调带时钟点( TM1637)
 
*/
 
 
 
#include <Arduino.h>
 
#include <TM1637Display.h>
 
#define CLK 2
 
#define DIO 3
 
#define TEST_DELAY  2000
 
const uint8_t SEG_DONE[] = {
 
    SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,      // d
 
    SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,  // O
 
    SEG_C | SEG_E | SEG_G,              // n
 
    SEG_A | SEG_D | SEG_E | SEG_F | SEG_G      // E
 
    };
 
TM1637Display display(CLK, DIO);
 
void setup()
 
{
 
}
 
void loop()
 
{
 
 int k;
 
 uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
 
 uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
 
 display.setBrightness(0x0f);
 
 display.setSegments(data);
 
 delay(TEST_DELAY);
 
 data[0] = display.encodeDigit(0);
 
 data[1] = display.encodeDigit(1);
 
 data[2] = display.encodeDigit(2);
 
 data[3] = display.encodeDigit(3);
 
 display.setSegments(data);
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.setSegments(data+2, 2, 2);
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.setSegments(data+2, 2, 1);
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.setSegments(data+1, 3, 1);
 
 delay(TEST_DELAY);
 
 display.showNumberDec(0, false); // Expect: ___0
 
 delay(TEST_DELAY);
 
 display.showNumberDec(0, true); // Expect: 0000
 
 delay(TEST_DELAY);
 
    display.showNumberDec(1, false); // Expect: ___1
 
    delay(TEST_DELAY);
 
 display.showNumberDec(1, true); // Expect: 0001
 
 delay(TEST_DELAY);
 
 display.showNumberDec(301, false); // Expect: _301
 
 delay(TEST_DELAY);
 
 display.showNumberDec(301, true); // Expect: 0301
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.showNumberDec(14, false, 2, 1); // Expect: _14_
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.showNumberDec(4, true, 2, 2); // Expect: 04__
 
 delay(TEST_DELAY);
 
 display.showNumberDec(-1, false); // Expect: __-1
 
 delay(TEST_DELAY);
 
 display.showNumberDec(-12);    // Expect: _-12
 
 delay(TEST_DELAY);
 
 display.showNumberDec(-999);    // Expect: -999
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.showNumberDec(-5, false, 3, 0); // Expect: _-5_
 
 delay(TEST_DELAY);
 
 display.showNumberHexEx(0xf1af);    // Expect: f1Af
 
 delay(TEST_DELAY);
 
 display.showNumberHexEx(0x2c);     // Expect: __2C
 
 delay(TEST_DELAY);
 
 display.showNumberHexEx(0xd1, 0, true); // Expect: 00d1
 
 delay(TEST_DELAY);
 
 display.clear();
 
 display.showNumberHexEx(0xd1, 0, true, 2); // Expect: d1__
 
 delay(TEST_DELAY);
 
   
 
    for(k=0; k <= 4; k++) {
 
        display.showNumberDecEx(0, (0x80 >> k), true);
 
        delay(TEST_DELAY);
 
    }
 
 for(k = 0; k < 4; k++)
 
    data[k] = 0xff;
 
 for(k = 0; k < 7; k++) {
 
  display.setBrightness(k);
 
  display.setSegments(data);
 
  delay(TEST_DELAY);
 
 }
 
   
 
 for(k = 0; k < 4; k++) {
 
  display.setBrightness(7, false); 
 
  display.setSegments(data);
 
  delay(TEST_DELAY);
 
  display.setBrightness(7, true);
 
  display.setSegments(data);
 
  delay(TEST_DELAY); 
 
 }
 
 display.setSegments(SEG_DONE);
 
 while(1);
 
}

  实验开源图形编程(Mind+、编玩边学)

实验开源仿真编程(linkboy4.2)

TM1637 4位数码管显示模块实验场景图

TM1637 4位数码管显示模块的应用案例——使用国产仿真编程软件Linkboy, 超声波智能控制测距仪

 

【花雕动手做】超声波测距仪,设定20厘米声光提示(视频)

https://v.youku.com/v_show/id_XNDk5NDQzNzk5Ng==.html

 

posted @   行者花雕  阅读(4185)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示