STM32连接74HC595控制LED

2019-08-14 19:28发布

把程序下载进去没显示呢,求大神指导



void HC595_Init(void)
{

GPIO_InitTypeDef  GPIO_InitStructure;
         
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);         
        
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4;                                 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
GPIO_Init(GPIOG, &GPIO_InitStructure);                                       
GPIO_ResetBits(GPIOG,GPIO_Pin_4);

}



#define HC595_SI PGout(0)
#define HC595_SCK PGout(1)
#define HC595_RCLK PGout(2)





char LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void sendbyte(unsigned char byte)
{
        unsigned char num,i;
        num=byte;
        for(i=0;i<8;i++)
        {
                HC595_SCK=0;
                delay_ms(5);
               
                if((num&0x80)==0x80)
                HC595_SI=1;
                else
                HC595_SI=0;
                num=num<<1;
                HC595_SCK=1;
                delay_ms(5);
        }
}

void out595()
{
        HC595_RCLK=0;
        delay_ms(5);
        HC595_RCLK=1;
        delay_ms(5);
        HC595_RCLK=0;
       
}




main()
{
      while(1)
     {
                for(i=0;i<8;i++)
                {
                        sendbyte(LED[i]);
                        out595();
                        delay_ms(300);

                }
      }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
密耳
1楼-- · 2019-08-14 21:08
 精彩回答 2  元偷偷看……
shuaigew88
2楼-- · 2019-08-15 02:28
本帖最后由 shuaigew88 于 2016-10-21 12:39 编辑

char LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void sendbyte(unsigned char byte)
{
        unsigned char i;        
       HC595_RCLK=0;
        for(i=0x80;i!=0;i>>=1)
        {
                HC595_SCK=0;
                delay_us(1);
               
                if(byte &i)HC595_SI=1;
                elseHC595_SI=0;
                HC595_SCK=1;
                delay_us(1);
        }
        HC595_RCLK=1;
}


main()
{
      while(1)
     {
                for(i=0;i<8;i++)
                {
                        sendbyte(LED);
                        delay_ms(300);

                }
      }
}



hkl
3楼-- · 2019-08-15 05:43
shuaigew88 发表于 2016-10-21 12:38
char LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void sendbyte(unsigned char byte)
{

大神,还是不行呢,主函数LED应该是一个数组呢
shuaigew88
4楼-- · 2019-08-15 10:09
hkl 发表于 2016-10-21 14:19
大神,还是不行呢,主函数LED应该是一个数组呢

我上面的程序绝对不会有问题,如果你测试有问题就需要测试输出波形,看看是不是其他方面配置有问题。
艾科
5楼-- · 2019-08-15 15:37
还能这样。。。。。。
刘仿
6楼-- · 2019-08-15 20:43
 精彩回答 2  元偷偷看……

一周热门 更多>