#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "adc.h"
#include "stdio.h" int main(void)
{ u16 adcx,adcy,adcz;
float temperature;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init();
LED_Init();
Adc_Init();
while()
{
temperature=Get_Adc_Average(ADC_Channel_15,); printf("\r\nAD值:%f\r\n\r\n",temperature);
//LCD_ShowxNum(156,130,adcx,4,16,0);
temperature=(float)temperature*(3.3/)+0.05;//这个0.05可能是因为之前单片机上一直显示这个电压值,当除去
//那两个电阻时,结果电压却少了0.05,因此就加上了0.05了 printf("\r\n电压值:%f\r\n\r\n",temperature);
temperature=(1.43-temperature)/0.0043+;
adcx=temperature;
printf("\r\n温度值:%d\r\n\r\n",adcx);
//LCD_ShowxNum(156,150,adcx,1,16,0); //temp-=adcx;
//temp*=1000;
//LCD_ShowxNum(172,150,temp,3,16,0X80);
LED2=!LED2;
delay_ms();
}
}
最后的结果为:
在对着NTC温度表示,你会感到诧异,我现在在的环境是室内。对照表结果只有AD值比较符合现在的环境温度。
可能是我上面的计算温度出了问题。然后我百度查了下说非线性的是不能通过计算得到结果的,因此只能查表了。
但对于AD值和电压值是没有错的,不过温度传感器的电阻怎么变化,电压值都能对应得上。对于配置ADC就不用
多说吧。不懂得话可以多看下有关ADC的资料。