stm32f1控制32*64led点阵的问题

2019-08-20 18:13发布

自己做着一个32*64点阵玩,程序如下,无外乎就是ABCD,OE,STB,CLK四个信号,我通过stm32开发板直接从引脚处接出来,考虑到了电路可能驱动不了,但是屏幕中有几行能闪,请教大神为什么?如果有源码那更好,借鉴借鉴。
屏幕里面芯片:增大电流驱动能力74HC245,行选芯片ICN2012,列选芯片ICN2025,希望大神们能帮忙知道下.
void Clean_595(void)
{
        int columnarr[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
        int send_data[64]={0};                              
        int i,j;
        STB(0);
        for(i=0;i<8;i++)
        {
                for(j=0;j<8;j++)
                {
                        send_data[j+i*8] = columnarr[i]%2;
                        columnarr[i] = columnarr[i]/2;
                }
        }

        for(i=0;i<64;i++)
        {
                R1(send_data);
                G1(send_data);
                R2(send_data);
                G2(send_data);
                Delay(1);
                CLK(1);
                Delay(1);
                CLK(0);
        }
        STB(1);
        Delay(1);
        STB(0);
}

void HC595_Send_Date_Up(void)
{
        int i,j;
        int send_data[64]={0};
  for(i=0;i<8;i++)
        {
        for(j=0;j<8;j++)
        {
                G1(send_data[j+i*8]);
                Delay(1);
                CLK(1);
                Delay(1);
                CLK(0);
        }
        }
        Delay(1);
        STB(1);
        Delay(1);
        STB(0);

}
void HC595_Send_Date_Down(void)
{
        int i,j;
  int columnarr[8]={0};
        int send_data[64]={0};

        STB(0);
        for(i=0;i<8;i++)
        {
                for(j=0;j<8;j++)
                {
                        send_data[j+i*8]=columnarr[i]%2;
                        columnarr[i]=columnarr[i]/2;
                }
        }

        for(i=0;i<64;i++)
        {
                R2(send_data);
                Delay(1);
                CLK(1);
                Delay(1);
                CLK(0);

        }
        Delay(1);
        STB(1);
        Delay(1);
        STB(0);
}

void HC_138(void)
{
        int rowarr[4] = {0};
        int i=0,j,rownum;

                EN(0);
                for(j=0;j<4;j++)
                {
                        rowarr[i] = rownum%2;
                        rownum = rownum/2;
                        i++;
                }

                LA(rowarr[0]);
                LB(rowarr[1]);
                LC(rowarr[2]);
                LD(rowarr[3]);
                EN(1);
}

int main(void)
{
        int i;
        EN(1);//&#184;&#223;μ&#231;&#198;&#189;ê§&#196;ü
        Clean_595();//&#199;&#229;&#203;&#248;′&#230;D&#197;&#207;¢£&#172;oìμ&#198;è&#171;&#195;e

        while(1)
        {
                for(i=0;i<16;i++)
                {
                        HC595_Send_Date_Up();
                        HC_138();
                        HC595_Send_Date_Down();
                        HC_138();
                }
        }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
杨子杨
1楼-- · 2019-08-20 20:55
求顶!
SCO
2楼-- · 2019-08-21 01:06
 精彩回答 2  元偷偷看……
杨子杨
3楼-- · 2019-08-21 04:19
这个是商业用品,不会有一模一样的原理图的,但是有相仿的,弄懂那些74HC245芯片就差不多了,不一定非要原理图,对了,你有源码没,借鉴借鉴啊
杨子杨
4楼-- · 2019-08-21 09:55
SCO 发表于 2017-4-22 19:41
兄弟,我那个板子貌似和你的差不多,但是没原理图,你能给个你LED的原理图吗


这个是商业用品,不会有一模一样的原理图的,但是有相仿的,弄懂那些74HC245芯片就差不多了,不一定非要原理图,对了,你有源码没,借鉴借鉴啊
SCO
5楼-- · 2019-08-21 14:18
我的源码和你差不多,但是点不亮
杨子杨
6楼-- · 2019-08-21 17:10
SCO 发表于 2017-4-22 19:50
我的源码和你差不多,但是点不亮

加我QQ429032522,一起来探讨探讨?

一周热门 更多>