#define buff_size 16;
char rx_buff[],rx_buff_count=0;
void USART_SendStr(USART_TypeDef* USARTx,char *str) //传送字符串
{
while((*str)!='\0')
{
USART_SendData(USARTx,*str++);
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
}
}
void func(char *S,char LEN) //判断字符串输入长度
{
if((LEN!=6)&(LEN!=7)&(LEN!=8))
{USART_SendStr(USART1,"\r\n Erro input!!!\r\n");}
}
int number() //从UART1输入的字符串数据转成整型
{
int number;
rx_buff[rx_buff_count]= USART_ReceiveData(USART1); //把逐个字符放进字符串数组
rx_buff_count++;
number=atoi(rx_buff); //把字符串数组里的数字转成整型
return number;
}
void input_ASK()
{
char j;
func(rx_buff,rx_buff_count);
rx_buff_count=0;
for (j=0;j");
}
void USART1_IRQHandler(void) //中断函数
{
if(USART_ReceiveData(USART1)==0x0d)
{input_ASK();}
else
{
USART_SendData(USART1,USART_ReceiveData(USART1));
rx_buff[rx_buff_count]= USART_ReceiveData(USART1);
rx_buff_count++;
}
USART_ClearFlag(USART1, USART_FLAG_RXNE);
}
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
int i;
RCC_Configuration();
GPIO_INIT();
USART_int(9600);
USART_SendStr(USART1,"\r\n");
USART_SendStr(USART1,"SyStem booting......\r\n");
USART_SendStr(USART1,"\n>");
i=number();
while(1){
Dis_number(i);//数码管显示函数
}
}

每次输入data=00~99时,数码管只显示上面两幅图任意一个。但是字符串转整型的函数在先前的作业是没有问题,不过数码管不能保持,现在做到数码管保持不灭了,可是显示的问题想过很多方法,一直不能解决,现在求助下大神,希望有点新思路。代码就把功能实现的代码放上,初始化的就算了。
我要赚赏金
