各位大神,本人菜鸟一枚,刚学习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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
奇怪,本来想晚上重新调试下程序,谁知道重新上电,又没有后面的4了,又显示正确了。
---------------------------------
有的啊,你就编译下就能找到了,也可以直接去文件夹里找啊。
一周热门 更多>