【雕爺學編程】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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM