【雕爷学编程】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。


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

模块特点

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

    数码管8级灰度可调

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

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



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


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

/*

【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



【花雕动手做】超声波测距仪,设定20厘米声光提示
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,728评论 6 526
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,623评论 3 411
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,371评论 0 372
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,174评论 1 306
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,014评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,532评论 1 319
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,641评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,793评论 0 283
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,294评论 1 329
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,276评论 3 352
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,423评论 1 364
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,980评论 5 354
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,678评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,087评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,307评论 1 279
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,997评论 3 385
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,404评论 2 370

推荐阅读更多精彩内容