STM32 KEIL 温度显示跳变

原本程序

#include "sys.h"
 #include "led.h"
 #include "usart.h"
 #include "IIC.h"
#include "oled.h"
 #include "30205.h"

char dis0[16];int  wendu_beep=37 ;int tiwen;
int main()
{
	double tem ;  //摄氏度
	delay_init();	
	max_init ();
	LED_Init();
	uart1_init(9600);
	YHGUI_Config();  //OLED初始化
	  YHGUI_DispString(0,0,"体表温度监测系统",16,1);  //OLED显示初始化
	NVIC_Configuration();					 //=====中断优先级分组,其中包含了所有的中断优先级的配置,方便管理和一次性修改。
	while(1)
	{
if((int)tiwen>wendu_beep){beep=1;delay_ms(50);beep=0;}

				sprintf(dis0,"温度:%d℃     ",(int)tiwen);
			YHGUI_DispString(0,16,dis0,16,1);		//显示
			sprintf(dis0,"阈值:%d℃  ",wendu_beep);
			YHGUI_DispString(0,32,dis0,16,1);		//显示
		
		tem = GetTemperature1();
			if( tem>1)
		tiwen=tem;
		printf("#S#%d#%d#1#1#",(int)tiwen,(int)wendu_beep);
		GPIO_ResetBits(GPIOC,GPIO_Pin_13);	
		delay_ms(1000);	
	}
}

void USART1_IRQHandler(void)                	//串口1中断服务程序//接收中断
	{
	u8 Res;
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
		{
		Res =USART_ReceiveData(USART1);	//读取接收到的数据
				if(Res == 'A')wendu_beep=wendu_beep+1;
					if(Res == 'B')wendu_beep=wendu_beep-1;

     } 
	}

是可以正常输出整数温度的,但是改成sprintf(wjk, "温度:%.1f℃", tiwen); float tiwen;  就出现-0.0的跳变。

视频如下:

尝试过将float tiwen改成double和%.1g℃也都不行。

求解答

 

最后,我们,设置了个条件,将温度为0跳过。但是实际问题却没有解决。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值