A366包含了一块P3T1755 ,它是恩智浦(NXP)推出的一款高精度数字温度传感器芯片。它支持I3C(最高12.5MHz)和I²C(最高3.4MHz)两种通信接口,测温范围是-40°C到+125°C,精度为±0.5°C,分辨率达0.0625°C。
本次实现一下温度采集及显示,为后续的调速风扇做准备。
传感器电路如下:

直接使用DEMO中的例程修改一下就行,主要做一下数据处理。显示小数点及两位小数
static void DisplayTemperature(double temperature)
{
int32_t pos;
int32_t intPart;
int32_t fracPart;
int32_t frac1;
int32_t frac2;
for (pos = 0; pos < 6; pos++)
{
SLCD_Engine_Show_Num(&slcdEngine, 0, pos, 0);
}
SetDecimalPoint(0);
if (temperature < 0.0)
{
temperature = -temperature;
}
intPart = (int32_t)temperature;
fracPart = (int32_t)((temperature - (double)intPart) * 100.0);
frac1 = fracPart / 10;
frac2 = fracPart % 10;
if (intPart >= 100)
{
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)(intPart / 100), NUM_POS6, 1);
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)((intPart / 10) % 10), NUM_POS5, 1);
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)(intPart % 10), NUM_POS4, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac1, NUM_POS3, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac2, NUM_POS2, 1);
SetDecimalPoint(1);
}
else if (intPart >= 10)
{
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)(intPart / 10), NUM_POS5, 1);
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)(intPart % 10), NUM_POS4, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac1, NUM_POS3, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac2, NUM_POS2, 1);
SetDecimalPoint(1);
}
else
{
SLCD_Engine_Show_Num(&slcdEngine, (int32_t)(intPart % 10), NUM_POS4, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac1, NUM_POS3, 1);
SLCD_Engine_Show_Num(&slcdEngine, frac2, NUM_POS2, 1);
SetDecimalPoint(1);
}
}
static void SetDecimalPoint(int32_t on)
{
SLCD_SetFrontPlaneOnePhase(LCD, 27, kSLCD_PhaseAIndex, (bool)on);
}最终显示如下:

本次先到这里,下次再来试试电机驱动,尝试一下电机调速。
我要赚赏金
