TM1668 与 CT1668 驱动有差异?

TM1668 与 CT1668 驱动有差异?

在调试案子中发现 TM1668 与 CT1668 同一份代码有不同表现。

在用两款IC驱动LED屏时,CT1668一切正常,但是换上TM1668就会出现显示不全的现象,让其一直扫描更新显示后发现,TM1668显示就像是丢包一样,时有时无。排除了系统时钟频率的问题,代码也用其他IC(TM1628、TM1629、HT1628)测试过,均未发现问题。

后来在驱动write函数后加个延时就好了。之前用过很多这类IC,都用同一份驱动,不知道这次为什么会出现这样的问题。这个问题在别的MCU上测试也是存在。

有知道这个差异是怎么回事的大佬不妨解释解释。。

附上代码:


#define DISPLAY_MODE_SET      0x03
#define DATA_SETTING_CMD      0x40
#define DATA_SETTINGSPEC_CMD  0x44
#define ADDR_SETTING_CMD      0xC0
#define DISPLAY_CONTROL_CMD   0x8f

u8 tm1668_buf[14];

void LED16XXWrite(u8 data)
{
	u8 i;
	delay_us(1);
	STB_LED_L;
	delay_us(1);

	for(i=0;i<8;i++)
	{
		CLK_LED_L;
		delay_us(5);
		if(data & 0x01){
			DAT_LED_H;
		}else{
			DAT_LED_L;
		}
		delay_us(5);
		CLK_LED_H;
		data = data >> 1;
	}
	delay_us(5);//就是这里
}

void LED16XX_init(void)
{
    u8 i;
	DAT_LED_OUT;
	CLK_LED_OUT;
	STB_LED_OUT;
	CLK_LED_H;
	DAT_LED_H;
	STB_LED_H;

	LED16XXWrite(DISPLAY_MODE_SET);
	STB_LED_H;
	LED16XXWrite(DATA_SETTING_CMD);
	STB_LED_H;
	LED16XXWrite(ADDR_SETTING_CMD);

	for(i=0;i<14;i++)
	{
		LED16XXWrite(0);
		i++;
	}

	STB_LED_H;
	LED16XXWrite(DISPLAY_CONTROL_CMD);
	STB_LED_H;
}

void ledseg_16xx_scan(void)
{
	u8 i;

	LED1629CWrite(DISPLAY_MODE_SET);
	STB_LED_H;
	LED1629CWrite(DATA_SETTING_CMD);
	STB_LED_H;
	LED1629CWrite(ADDR_SETTING_CMD);
	
	for(i=0;i<14;i++)
	{
        LED1629CWrite(tm1668_buf[i]);
	}
	STB_LED_H;
	LED1629CWrite(DISPLAY_CONTROL_CMD);
	STB_LED_H;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值