请教stm32+12864+dht11显示问题?

2019-08-20 16:06发布

各位大神,本人菜鸟一枚,刚学习stm32,现在有一个问题请教各位大神,我已经调了好多天都没有找到问题的所在:

问题:
       在LCD12864显示温湿度的数据时,显示的本来是两位数,但是后面总会多出一位数4,不知道什么原因,请大神指教,谢谢。






主程序:

int main(void) { u8 t=0;    u8 temperature,humidity;
SystemInit(); //系统初始化 delay_init(72);     //延时初始化   NVIC_Configuration();   LCD12864_InitPort();   LCD12864_Init(); while(DHT11_Init()) //DHT11初始化 { LCD_ShowString(1,0,"DHT11 Error"); delay_ms(200); }    LCD_ShowString(1,0,"DHT11 OK"); while(1) { if(t%10==0)//每100ms读取一次 {   DHT11_Read_Data(&temperature,&humidity); //读取温湿度值 //WriteCmd(0x98); LCD12864_Pos(2,0); LCD_ShowNum(temperature); delay_ms(200); LCD12864_Pos(3,0); LCD_ShowNum(humidity);    }    delay_ms(10); t++; if(t==20) { t=0; } }

}
LCD_ShowNum函数


void LCD_ShowNum(int num)  //显示整型变量的函数,最多显示16位的整数。只能显示正数。 { u8 temp[17]; u8 str[17]; int i=0,j=0; while(num != 0)  //这里不能用num%10 != 0,如果num是10的整数倍,                  //例如,100,这样就会出错,根本就不能进入循环体。 { temp = (num%10)+0x30; num/=10; i++; } i--;           //因为i在退出循环之前还自加了一次,此时,                //指向最后一个存储有用值的元素的后一个位置。 while(i != -1) //因为i=0时,temp[0]还是有用值。 { str[j] = temp; j++; i--; } str[j]='';  //因为i在退出循环之前还自加了一次,此时,              //指向最后一个存储有用值的元素的后一个位置。 DisStr(str); }



















友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。