现在我写的一个程序测试,发现一个问题考虑挺久没得答案,来这里求助一下。出现的问题是,我用这个发送函数发送0x01进去,结果数码管是一直慢慢地一段段地亮起来,但是原来的不熄灭一直持续下去,到了全部亮完了,就一直亮着,即使我复位也不行,还是一直亮。即使复位也无效,我特地点亮一个LED测试,LED可以复位了。但是数码管一直是亮的。我测了复位引脚,有拉低电平的。部分电路和程序如下,120R排阻换成了220的了。
[mw_shl_code=c,true]void LED_Init(void)//IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PA,PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; //LED0-->  A.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIO
// GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
}
void Hc595SendByte(u8 dat) //代替 led_1_disp()
{
u8 a;
for(a=0;a<8;a++) //发送8位数
{
if((dat&0x80)==0x80)
Data_595 = 1;
else Data_595=0;
SH_0; //发送时序
delay_us(2);
SH_1;
delay_us(2);
dat <<= 1; //数据移位
}
ST_0;
delay_us(2);
ST_1;
delay_us(2);
}
[/mw_shl_code]
|