主题中讨论的其他器件:LM35、 HALCOGEN、 RM57L843、 LMT86
工具/软件:Code Composer Studio
如何将从 ADC 接收到的结果转换为摄氏度。
ADC 输入配置为12位、具有内部参考。
我使用 LM35 DZ 温度传感器。
int main (空)
{
//uint32 volte_const;
//uint32温度;
unsigned int volte_const;
无符号 int 温度;
unsigned int NumberOfChars2;
unsigned int NumberOfChars3;
unsigned int NumberOfChars1;
unsigned int NumberOfChars4;
unsigned int value1;
canInit();
sciInit();
adcInit();
adcData_t adc_data;//adc 数据结构
adcData_t * adc_data_ptr =&adc_data;//adc 数据指针
while (1)
{
adcStartConversion (adcREG1、adcGROUP1);//开始 ADC 转换
while (!adcIsConversionComplete (adcREG1、adcGROUP1));//等待 ADC 转换
adcGetData (adcREG1、1U、adc_data_ptr);//将转换存储到 ADC 指针
Value1 =(unsigned int) adc_data_ptr ->值;
NumberOfChars1 = ltoa (value1、(char *) adcread);
volte_const =(value1*3.3)/4096*1000;
温度= VOLTGE_CONST/10;
NumberOfChars2=ltoa (volte_const、(char *)电压);
NumberOfChars3=ltoa (temperature、(char *) temp);
NumberOfChars4=getNumberOfDigit ((int) value1);
/*CAN*/
canTransmit (canREG1、canMESSAGE_BOX1、(const uint8 *)& temp);
canTransmit (canREG2、canMESSAGE_BOX2、(const uint8 *)& voltage);
canTransmit (canREG3、canMESSAGE_box3、(const uint8 *)& adcread);
{
//sciSend (sciREG1、NumberOfChars1、(uint8 *) adcread);
sciSend (sciREG1、NumberOfChars1、(uint8 *) adcread);
sciSend (sciREG1、1、"");
sciSend (sciREG1、12、"温度:");
printf ("");
sciSend (sciREG1、NumberOfChars3、(uint8 *) temp);
sciSend (sciREG1、3、"°C");
sciSend (sciREG1、1、"");
sciSend (sciREG1、8、"电压:");
sciSend (sciREG1、NumberOfChars2、(uint8 *)&voltage);
printf ("");
sciSend (sciREG1、4、"[mV]");
sciSend (sciREG1、2、"\n"r);
printf ("");
sciSend (sciREG1、1、"");
sciSend (sciREG1、NumberOfChars4、(uint8 *)&value1);
sciSend (sciREG1、7、"value1:");
}
}
}
从 ADC 接收到的值例如252、不知道哪一项是 等效的摄氏度。
我尝试以下公式:" volte_const =(value1*3.3)/4096*1000; ", 答案不正确。