刚学习
STM32,想用一片164
芯片和一片138控制64个LED,实现跑马灯效果,以下是自己写的程序,请问,能在138控制部分简化下程序吗?IO是用GPIOB控制的。
//164部分
for(i=0;i<8;i++)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_14);//CLK==0
if((data&&0x80)==0x00)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
}
else
{
GPIO_SetBits(GPIOB,GPIO_Pin_13);
}
GPIO_SetBits(GPIOB,GPIO_Pin_14);//CLK==1
//138部分
GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12);//A=0,B=0,C=0
delay_ms(100);
GPIO_SetBits(GPIOB,GPIO_Pin_10);//A=1
GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);//B=0,C=0
delay_ms(100);
GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_12);//A=0,C=0
GPIO_SetBits(GPIOB,GPIO_Pin_11);//B=1
delay_ms(100);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);//A=1,B=1
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//C=0
delay_ms(100);
GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);//A=0,B=0
GPIO_SetBits(GPIOB,GPIO_Pin_12);//C=1
delay_ms(100);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_12);//A=1,C=1
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//B=0
delay_ms(100);
GPIO_ResetBits(GPIOB,GPIO_Pin_10);//A=0
GPIO_SetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);//B=1,C=1
delay_ms(100);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12);//A=1,B=1,C=1
delay_ms(100);
data=data<<1;
//delay_ms(2000);
}
一周热门 更多>