这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 漓东e学堂 » 字符串输入后,数码管显示乱码

共6条 1/1 1 跳转至

字符串输入后,数码管显示乱码

菜鸟
2014-11-18 23:00:47     打赏
#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时,数码管只显示上面两幅图任意一个。但是字符串转整型的函数在先前的作业是没有问题,不过数码管不能保持,现在做到数码管保持不灭了,可是显示的问题想过很多方法,一直不能解决,现在求助下大神,希望有点新思路。代码就把功能实现的代码放上,初始化的就算了。


菜鸟
2014-11-20 13:20:27     打赏
2楼

还是要找个仿真器来单步调试下


菜鸟
2014-11-20 13:22:02     打赏
3楼

那要怎么样才能等待,而且我这两张图片是没有按reset的,是每次输入的数字不同,要么显示一个,要么显示两个


菜鸟
2014-11-20 13:23:00     打赏
4楼
atoi函数是没有任何问题的,我作业帖里面能实现,但那个是数码管不能常亮

菜鸟
2014-11-20 13:24:48     打赏
5楼

不是不能调用中断里面的rx_buff吗。所以在number里面赋值


菜鸟
2014-11-20 21:26:48     打赏
6楼

作业帖那个视频真是用atoi实现的。。


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]