2019-07-20 18:03发布
正点原子 发表于 2016-9-28 23:10 帮顶
Lester 发表于 2016-12-12 16:53 请问LZ,您的问题解决了吗?最近也在学习关于5020的LED点阵显示屏的驱动。
最多设置5个标签!
/*
函数名;JXI5020_A
函数参数:u16 num -- 芯片中16 output 的管脚的数据
函数返回值:无
函数功能:驱动JXI5020 整个A芯片,选择对应的位选
*/
void JXI5020_A(u16 num)
{
u8 i;
u16 data=0;
GPIOA->ODR |= (0X1<<12); //OE OUPUT LOW 不驱动LED灯电流
for(i=0; i<16; i++)
{
data = num&0x8000;
num = num<<1;
if(data){JXI5020_bitA(1);}
else{JXI5020_bitA(0);}
}
GPIOA->ODR &= ~(0X1<<12); //OE OUPUT LOW 驱动LED灯电流
Delay_us(100); //控制此时间可调节LED灯的亮度
}
/*
函数名;JXI5020_bitA
函数参数:u8 data -- 位选的bit数据
函数返回值:无
函数功能:位选,往JXI5020 A芯片写入一个位选数据
*/
void JXI5020_bitA(u8 data)
{
GPIOA->ODR |= (0X1<<4); //LE OUTPUT HIGH JXI芯片不锁存
GPIOA->ODR &= ~(0X1<<0); //CLK LOW
Delay_us(20);
if(data == 0)
{
GPIOA->ODR &= ~(0X1<<1); //DIN LOW
NUM2MCOM(TESE); //段选
}
else
{
GPIOA->ODR |= (0X1<<1); //DIN HIGH
NUM2MCOM(TESE); //段选
}
GPIOA->ODR |= (0X1<<0); //CLK HIGH
Delay_us(20);
GPIOA->ODR &= ~(1<<7); //LE LOW
}
原子哥,求助呀,现在不会闪了,现在是亮度不够,要驱动的灯总共有16+12组(189个)分两个JXI5020芯片驱动,是刷新频率太快了吗?
我的没有解决,只是自己调延时时间,优化了下,项目时间紧急就没去深究了,没有达到想要的结果,网上这个5020的资料太少了。。。
有时间再去深入研究它的问题具体出在哪里。。
一周热门 更多>