BG2RHE - Arduino控制TM1640芯片LED流水灯测试

  TM1640是一款LED驱动控制专用电路,性能可靠,价格低廉。可以驱动8段16位数码管或者8×16组LED,主要应用于电子产品LED显示屏驱动。使用TM1640可以让单片机从繁琐的动态扫描中解放出来,专心处理实时数据,实乃仪表类开发的必备良品。
  Arduino这个小玩具因其自带IDE定制的开发环境,既不用设置寄存器,也不用写一长串GPIO的配置,拿过来就操,用来测试芯片的驱动非常简单方便,作为一个嵌入系统开发者,手里有一个3.3V/5V兼容的Arduino Uno plus的话,简直就是一个万能测试器。
  例程如下:

/*BG2RHE 2019.04 TM1640流水灯测试程序
 * 硬件配置:
 * Arduino的数字9口接TM1640的时钟输入SCLK,数字8口接TM1640的数据输入DIN。
 * TM1640的C8H段上接8个LED。
*/
#define SCL 9
#define DIN 8
u8 c = 0x01;                            /*LED初始化值*/
void setup() {
  pinMode(SCL, OUTPUT);
  pinMode(DIN, OUTPUT);

  TM1640_start();
  TM1640_write(0x44);                   /*固定地址数据命令*/
  TM1640_write(0x88);                   /*显示控制命令:1/16级亮度*/
  TM1640_end();
}

void loop() {
  delay(100);
  TM1640_start();
  TM1640_write(0xC8);                   /*LED显存地址*/
  TM1640_write(c);                      /*LED显示值*/
  c <<= 1;
  if (c == 0x00)c = 0x01;
  TM1640_end();
}

void TM1640_start() {
  digitalWrite(SCL, HIGH);
  digitalWrite(DIN, HIGH);
  digitalWrite(DIN, LOW);
  digitalWrite(SCL, LOW);
}

void TM1640_end() {
  digitalWrite(DIN, LOW);
  digitalWrite(SCL, HIGH);
  digitalWrite(DIN, HIGH);
}

void TM1640_write(u16 dat) {
  shiftOut(DIN, SCL, LSBFIRST, dat);
}

以上就是TM1640的驱动测试Arduino例程,只是一个非常简单的驱动测试,在此基础上可以扩展成数码管驱动程序,具体例子有的是,我就不重复了。

你可能感兴趣的:(Arduino)