“4位数码管模块”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
第76行: 第76行:
 
[http://yfrobot.gitee.io/lib/YFTM1650.rar TM1650库文件]
 
[http://yfrobot.gitee.io/lib/YFTM1650.rar TM1650库文件]
 
<pre >
 
<pre >
/*------------------------------------------------------------------------------------
+
/*
 +
  8-segment display driver of YFRobot 4-bit digital tube module based on TM1650 chip
 +
  Created by yfrobot,Released into the public domain.
 +
*/
  
  TM1650 nixie tube
+
#include <YFTM1650.h>
  
  This example code shows how to use the functions of the TM1650 Library.
+
YFTM1650 YF_4BitDis(10, 11);
 
+
  -------------------------------------------------------------------------------------*/
+
/*************************************************************************************/
+
 
+
#include<tm1650.h>
+
 
+
#define ON DISPLAY_ON
+
#define OFF DISPLAY_OFF
+
#define SegmentMode _8_SEGMENT_MODE
+
unsigned char  LightLevel = LV2;
+
unsigned char  WorkMode = NORMAL_MODE;
+
 
+
//define each segment
+
const unsigned char  Seg_test[8] =      {0x20, 0x01, 0x02, 0x04, 0x08, 0x10, 0x40, 0x80};
+
//number 0-9 code
+
const unsigned char Number_arr[10] =  {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
+
 
+
unsigned char i, j = 0, k = 0, l = 0, m = 0;
+
unsigned char temp[4] = {0x3f, 0x06, 0x5b, 0x4f};
+
boolean err = 0;
+
 
+
int pin_SCK = 10;
+
int pin_DIO = 11;
+
 
+
TM1650 tm1650(pin_SCK, pin_DIO);
+
  
 
void setup()
 
void setup()
 
{
 
{
 
+
  Serial.begin(38400); //Start serial communication at 9600 for debug statements
 +
  Serial.println("YFRobot TM1650 Example Code");
 +
  YF_4BitDis.init();
 
}
 
}
  
 
void loop()
 
void loop()
 
{
 
{
 +
  YF_4BitDis.setBrightness(1);
 +
  YF_4BitDis.displayString(String("____"));
 +
  delay(1000);
 +
  char line[] = "1234";
  
   //config tm1650
+
   YF_4BitDis.displayString(line);
   err = tm1650.DisplayConfig_TM1650(LightLevel, SegmentMode, WorkMode, ON);
+
   YF_4BitDis.setBrightness(7);
  //all nixie tube turn on
+
 
   for (i = 0; i < 4; i++)
+
   for (int i = 1; i <= 8; i++) {
   {
+
    YF_4BitDis.setBrightness(i);
     err = tm1650.DisplayOneDigi_TM1650(i + 1, 0xFF);
+
    delay(200);
 +
   }
 +
  for (int i = 1; i <= 8; i++) {
 +
     YF_4BitDis.setBrightness(8 - i);
 +
    delay(200);
 
   }
 
   }
  delay(500);
 
  
   //loop each segment
+
   YF_4BitDis.displayString(-1.235);
   for (m = 0; m < 8; m++)
+
   delay(1000);
   {
+
 
    for (i = 0; i < 4; i++)
+
  YF_4BitDis.displayString(12.10);
    {
+
   delay(1000);
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Seg_test[m]);
+
 
    }
+
  YF_4BitDis.displayString(String("abcd"));
 +
  delay(2000);
 +
 
 +
  YF_4BitDis.displayString(2020);
 +
  delay(2000);
 +
 
 +
  if (YF_4BitDis.displayRunning(String("1234567890abcdefghijklmnop"))) {
 
     delay(500);
 
     delay(500);
 +
    while (YF_4BitDis.displayRunningShift()) {
 +
      delay(500);
 +
    }
 
   }
 
   }
 +
  delay(2000);
  
  //display form 0 to 9
+
   for (int i = 0; i < 20; i++) {
   for (m = 0; m <= 9; m++)
+
     YF_4BitDis.displayOff();
  {
+
    delay(200);
     for (i = 0; i < 4; i++)
+
     YF_4BitDis.displayOn();
     {
+
     delay(200);
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Number_arr[m]);
+
    }
+
     delay(500);
+
 
   }
 
   }
  //display the content of array temp[]
+
 
   for (i = 0; i < 4; i++)
+
   for (int i = 0; i < 20; i++) {
  {
+
     YF_4BitDis.setBrightness(1);
     err = tm1650.DisplayOneDigi_TM1650(i + 1, temp[i]);
+
    delay(200);
 +
    YF_4BitDis.setBrightness(8);
 +
    delay(200);
 
   }
 
   }
  delay(500);
 
  
   //all turn off
+
   for (int i = 0; i < 20; i++) {
  err = tm1650.DisplayOFF_TM1650(LightLevel, SegmentMode, WorkMode);
+
    for (int j = 0; j < 4; j++) {
  delay(1000);
+
      YF_4BitDis.setDot(j, true);
 
+
      delay(200);
  //turn on again
+
    }
  err = tm1650.DisplayON_TM1650(LightLevel, SegmentMode, WorkMode);
+
    for (int j = 0; j < 4; j++) {
  delay(1000);
+
      YF_4BitDis.setDot(j, false);
 +
      delay(200);
 +
    }
 +
  }
 
}
 
}
 
</pre>
 
</pre>
 程序下载地址:[http://yfrobot.gitee.io/ino/TM1650_nixie_tube.ino TM1650_nixie_tube]
+
 程序下载地址:[http://yfrobot.gitee.io/ino/TM1650.ino TM1650]
  
 
 程序运行结果:根据显示效果看程序,更方便理解
 
 程序运行结果:根据显示效果看程序,更方便理解

2020年4月8日 (三) 14:00的版本

生成缩略图出错:文件可能丢失:
4位数码管


产品简介


4位数码管模块是采用TM1650专用数码管驱动芯片驱动4位0.56英寸数码管。模块提供小数点、时钟两种模式可选择,采用PH2.0-4P接口/XH2.54-4P排针接口,配合专用传感器线使用方便接线;且有M3安装柱可选配,方便固定。

TM1650 是专用的数码管驱动芯片,多可以驱动4个8段数码管,2线控制接口,节省单片机端口资源。通过芯片内部的寄存器可以设置显示的位数和显示的亮度,8级亮度可调。

将4位数码管模块加入项目中,可用来显示数值、时钟等信息。


规格参数


  • 数码管:0.56 英寸,4 位
  • 驱动IC:TM1650
  • 工作电压 3V~5V
  • 工作温度:-40℃~80℃
  • 亮度等级:8 级亮度可设置
  • 模块尺寸:50.5mm * 19.5mm
  • 安装孔:3mm
  • 安装孔中心距:42mm * 12mm
  • 模块重量:3.8g


引脚说明


  • 1. GND 黑线 -- Gnd(地)
  • 2. VCC 红线 -- Vcc(电源+5V)
  • 3. CLK 蓝线 -- 信号
  • 3. DIO 白线 -- 信号


应用示例


电路连接


4位数码管显示模块 Arduino UNO
VCC +5V
GND GND
CLK D10
DIO D11


电路连接示意图


4位数码管显示

提示:以下程序需使用到 tm1650库文件,文件下载地址见页末 - 参考资料。下载后将其解压至arduinoIDE安装目录/libraries文件夹中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。

示例代码

示例一:4位数码管显示测试

TM1650库文件

/*
  8-segment display driver of YFRobot 4-bit digital tube module based on TM1650 chip
  Created by yfrobot,Released into the public domain.
*/

#include <YFTM1650.h>

YFTM1650 YF_4BitDis(10, 11);

void setup()
{
  Serial.begin(38400); //Start serial communication at 9600 for debug statements
  Serial.println("YFRobot TM1650 Example Code");
  YF_4BitDis.init();
}

void loop()
{
  YF_4BitDis.setBrightness(1);
  YF_4BitDis.displayString(String("____"));
  delay(1000);
  char line[] = "1234";

  YF_4BitDis.displayString(line);
  YF_4BitDis.setBrightness(7);

  for (int i = 1; i <= 8; i++) {
    YF_4BitDis.setBrightness(i);
    delay(200);
  }
  for (int i = 1; i <= 8; i++) {
    YF_4BitDis.setBrightness(8 - i);
    delay(200);
  }

  YF_4BitDis.displayString(-1.235);
  delay(1000);

  YF_4BitDis.displayString(12.10);
  delay(1000);

  YF_4BitDis.displayString(String("abcd"));
  delay(2000);

  YF_4BitDis.displayString(2020);
  delay(2000);

  if (YF_4BitDis.displayRunning(String("1234567890abcdefghijklmnop"))) {
    delay(500);
    while (YF_4BitDis.displayRunningShift()) {
      delay(500);
    }
  }
  delay(2000);

  for (int i = 0; i < 20; i++) {
    YF_4BitDis.displayOff();
    delay(200);
    YF_4BitDis.displayOn();
    delay(200);
  }

  for (int i = 0; i < 20; i++) {
    YF_4BitDis.setBrightness(1);
    delay(200);
    YF_4BitDis.setBrightness(8);
    delay(200);
  }

  for (int i = 0; i < 20; i++) {
    for (int j = 0; j < 4; j++) {
      YF_4BitDis.setDot(j, true);
      delay(200);
    }
    for (int j = 0; j < 4; j++) {
      YF_4BitDis.setDot(j, false);
      delay(200);
    }
  }
}

程序下载地址:TM1650

程序运行结果:根据显示效果看程序,更方便理解


参考资料


TM1650库文件





返回首页

更多建议和问题欢迎反馈至 YFRobot论坛

购买方式:YFRobot 电子工作室