zoukankan      html  css  js  c++  java
  • 【雕爷学编程】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位数码管显示模块实验开源代码

    /*
    
    【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

  • 相关阅读:
    mybatis 错误 Invalid bound statement (not found)
    Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.
    bug 记录 Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans
    解决:The Tomcat connector configured to listen on port 8182 failed to start. The port may already be in use or the connector may be misconfigured.
    jquery validate 验证插件 解决多个相同的Name 只验证第一个的方案
    phpStorm+xdebug调试(php7.3)
    小程序视频多个视频播放与暂停
    CSS实现单行、多行文本溢出显示省略号(…)
    Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.
    idea自动在文件头中添加作者和创建时间
  • 原文地址:https://www.cnblogs.com/eagler8/p/14258952.html
Copyright © 2011-2022 走看看