电子元器件论坛
直播中

李莉

8年用户 1510经验值
私信 关注

TM1640 LED驱动控制电路接口与驱动代码介绍

一、硬件介绍

TM1640 是一种LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、 LED 驱动等电路。

二、接口说明

微处理器的数据通过两线总线接口和 TM1640 通信,在输入数据时当 CLK 是高电平时,DIN 上的信号必须保持不变;CLK 上的时钟信号为低电平时,DIN 上的信号才能改变。数据的输入总是低位在前,高位在后传输.数据输入的开始条件是 CLK 为高电平时,DIN 由高变低;结束条件是 CLK 为高时,DIN 由低电平变为高电平。指令数据传输过程如下图:

image.png

image.png

image.png

注意数据的输入条件和结束条件,输入条件是CLK 为高电平时,DIN由低变高

三、驱动代码

我采用以自动地址写数据格式来和TM1640通信

数据指令

image.png

//#define sCLK_H gpio_bit_reset(GPIOA,GPIO_PIN_8)
//#define sCLK_L gpio_bit_set(GPIOA,GPIO_PIN_8)
//#define sDATA_H gpio_bit_reset(GPIOA,GPIO_PIN_10)
//#define sDATA_L gpio_bit_set(GPIOA,GPIO_PIN_10)
uint8_t SmgBuff[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,
0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x00};

void TM1640_start ()
{

sCLK_L;            
sDATA_H;
sCLK_H;
delay_us(1);
sDATA_L;
delay_us(1);
sCLK_L;
delay_us(1);

}

void TM1640_stop ()
{

sCLK_L;         
sDATA_L;
sCLK_H;
delay_us(1);
sDATA_H;
delay_us(1);

}

void send_byte (uint num)
{

uint i;
for (i= 8;i>0;i--)
{
    sCLK_L;
    if (num&0x01)
    {
        sDATA_H;
        delay_us(1);
    }
    else 
    {
        sDATA_L;
        delay_us(1);
    }
    sCLK_H;
    num = num>>1;
}
delay_us(1);

}

TM1640_start ();
send_byte (0xc0); //输入首地址
send_byte (SmgBuff[0]); //输入个数码管的显示数据;
send_byte (SmgBuff[1]);
send_byte (SmgBuff[2]);
send_byte (SmgBuff[3]);
TM1640_stop ();

image.png

TM1640_start ();
send_byte (0x0f);//最亮
TM1640_stop ();

四、实物展示

image.png

原作者:兆易创新GD32 MCU swag

更多回帖

发帖
×
20
完善资料,
赚取积分