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条回答
shuaigew88
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);

                }
      }
}



一周热门 更多>