1.温度换算 1KHz 时,对应-5℃,频率每增加 200Hz,温度值增加 1℃。例如:1.2 KHz、1.3KHz 对应温度为-4℃ 这里隐含了:直接截断n的小数部分。
频率值低于 1KHz 时,对应的温度、湿度数据无效–用宏定义成一个很大的数,就很方便,
2.湿度换算 1KHz 时,对应 10%,频率每增加 1KHz,湿度值增加 2%。 例如:2KHz、2.5KHz 对应湿度为 12%。
3.电压值低于 3.0V 时,进入线性衰减区间,电池电量百分比由电压所在区间决定,区间宽度为 0.2V,每跨越一个区间电量下降 10%;例如:2.9V、2.8V 对应电量为 90%,1.3V、1.2V 对应电量为 10%
注意!3.0-2.9 = 0.1,0.1/0.2 = 0.5,浮点数除法,转换为int后,直接丢掉了小数,相当于返回0,3-0*0.2=3V,这就不对了 所以这里应该要向上取整
先把float的电压adc_val乘以一千,再强转成int的mV,((3000-adc)+199) / 200也能实现向上取整, 如果不用转成mV的方法,用ceil也是没问题的
4.T 代表温度数据,单位为摄氏度,数据无效时显示 ERR。
5.在数据界面下,按下 B3 按键,完成一组温湿度数据的记录。
思路:
a.维护一个数量为5的结构体数组,通过从后往前循环,腾出第0个位置,再塞入新数据到第0个位子,达到先进先出的队列效果
b.用循环来处理显示,首先定义行数的数组 for循环,每次处理一行,如果i大于等于有效数据条数,说明i以及往后的行数都是空的,对于有数据的行,分为前半部分和后半部分都用sprintf格式化处理字符串,在循环最后正常拼装,然后打印出来
![]()
用ringbuffer写:太难了










