1、参数1. 测温范围为0-1000C 2. 测温误差 50) Pwm_sum = 100;return; if(Error+50 0) sum = sum/100; if(sum100) Pwm_sum = 100; else if (sum =20) /0.1s进入一次PID控制 PID_time =0;PID();3.2温度补偿 将DS18B20测得室温通过转化来查K分度热电偶表电压值,程序如下: uchar wenshi; uint x; wenshi = temperature/10; x=(K_TABLEwenshi+1- K_TABLEwenshi)/10; /*表中相邻两值对应温度
2、相差10C*/ x=K_TABLEwenshi+x*(temperature%10);/温度补偿3.3 查表滤波函数由AD0809读取的十个数字分别赋给数组tablei,将得到的数组进行比较,得到最大值和最小值,将数组中的数据去掉最大值和最小值后求和,在求平均数,根据平均数得,再将得到数值转化为相应电压值程序如下:voidLv_bo(void) /滤波 unsigned char max,min,i; unsigned int sum; sum = table0; max = table0; min = table0; for(i=1;i max) max = tablei; else if(
3、min tablei) min = tablei; sum = tablei+sum; sum -= max; sum -= min; U1 = (float)sum / 8; U1=(U1*5)/255); /换成mv 3.4模式转换 由判断MODE键按下才次数来,转换不同的模式,当MODE键按下时,count_mode+。其里面还调用液晶显示函数来显示不同模式,如模式0:显示室温、实测温度、PWM值。void moshi() /模式 uint aa=0; if(Mode=0) delay(200); count_mode+; if(count_mode3 ) count_mode=0; i
4、f(count_mode=0) PID_Start(); Display(0,0,2,0,室温); Display(0,4,4,0,自动调节 if(time=4) temperature=ReadTemperature();/读温度 time=0; view(temperature); Display(0,3,2,1,disp_buf+2); Display(1,0,4,0,实测温度 view(var); Display(1,5,4,1,disp_buf); Display(2,0,4,0,设定温度 mubiao=xiugai(mubiao); if(mubiao=1000) mubiao=1000; view(mubiao); Display(2,5,4,1,disp_buf); view(Pwm_sum); Display(3,0,4,1,PWM: Display(3,3,3,1,disp_buf+1); Display (3,5,1,1,%)if(count_mode=1).