提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近的项目接触到了LED3528,它采用的是单总线通信方式,对于GPIO资源比较紧张的情况,它是最好的选择。而且可以多级串联,方便实现客户需要各种各样的效果。但是LED3528对时序的要求比较高,所以在选用芯片时,需要芯片的主频达到16M或16M以上才行。
以下是一段驱动3528的汇编代码:
实际测试满足时序要求,效果明显。
L_LED3528_Start:
MOV A,@0x20
MOV R_LedLoop_Num,A
MOV A,@0x00
IOW IOCF
L_LoadData_Buf:
MOV A,@24
MOV R_TempAcc,A
CALL L_LoadData_Buf0
L_LEDWBitLp:
BS IO_DrvOut_LED
JBC R_RUNDuty_LedG,Bit7
CALL L_Delay_us
BC IO_DrvOut_LED
BC C
RLC R_RUNDuty_LedB
RLC R_RUNDuty_LedR
RLC R_RUNDuty_LedG
DJZ R_TempAcc
JMP L_LEDWBitLp
BC C
RRC R_LedLoop_Num
MOV A,R_LedLoop_Num
JBS Z
JMP L_LoadData_Buf
MOV A,@0x01
IOW IOCF
RET
总结
1、发送数据的时候,需要把中断关掉,发完了再重新使能,不然会出现闪动的问题。
2、datasheet里规定的数据0或1的时间值,实际应用不一定要完全一致,在它的识别范围内即可。
3、驱动灯流动的方向要点:第一个灯数值从小到大刷新传递的过程(向左),反之(向右)。