TC5020、JXI5020单片机C语言驱动代码。

文章介绍了如何使用C语言编写驱动程序来控制TC5020芯片,包括向芯片写入单个比特数据的函数`TC5020_bit()`以及写入16位数据的`TC5020_Write()`函数。在级联多个TC5020的情况下,文章还提供了`TC5020_OUT()`函数的示例,用于传输数据到LED显示阵列。时序控制的关键在于CLK、SDI、LE和OE信号的精确操作,其中OE信号已被短接到GND以保持输出使能。
摘要由CSDN通过智能技术生成

先看下时序图。初始状态CLK,SDI,LE状态为L。OE状态为H。可以知道先是CLK和SDI动作将16位数据发送出去。然后将LE引脚H->L。最后OE信号拉低(OE信号为输出使能信号。我这里已经将OE信号短接接入GND了,所以输出是一直使能的,代码里就无需控制OE信号了),对应的OUT引脚就有输出了。

 详细代码

/*往5020里面写人一个bit数据*/
void TC5020_bit(u8 dat)
{       
	if(dat == 0)
	{
		SDI = 0;
	}
	else
	{
		SDI = 1;
	}
	LSCL = 0;
	_nop_();_nop_();
	LSCL = 1;
	_nop_();_nop_();
	LSCL = 0;

}

/*写入芯片中16 output 的管脚的数据(适用于只有一颗TC5020的情况)*/
void TC5020_Write(u16 num)
{
	u8 i;
	u16 dat=0;     

	LSCL = 0;    /*SCL信号复位*/
	LE = 0;       /*LE信号复位*/
	for(i=0; i<16; i++)
	{
	    dat = num&0x8000;    /*高位优先传输*/

		if(dat == 0)
		{
			TC5020_bit(0);
		}
		else
		{
			TC5020_bit(1);
		}
	    num = num<<1;
	}       
        _nop_();_nop_();
		LE = 1;
	    _nop_();_nop_();
		LE = 0;

}

至此就可以驱动一个TC5020了。

如果你是有多颗TC5020级联的情况。比如下面这种:

 并且观察SDI的时序波形可以看到,优先传输的是D0控制。

/*num:需要显示的数组,比如你100个灯,数组长度就是100*/
/*len:需要显示的长度*/
void TC5020_OUT(u8* num,u8 len)
{
	u8 i;
	u16 dat=0;	

	LSCL = 0;
	LE = 0;
	_nop_();_nop_();

	for(i=len - 1; i >= 0; i--)    /*这个地方根据自己实际显示情况,选择递增或是递减。*/
	{
		if(num[i] == 0)
		{
			TC5020_bit(0);
		}
		else
		{
			TC5020_bit(1);
		}
	}	
	_nop_();_nop_();
	LE = 1;
	_nop_();_nop_();
	LE = 0;
}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值