本帖最后由 16777216 于 2013-5-6 08:01 编辑
关于分辨率的文图
要求是要分辨率 0.1 精度1度
采用ntc1000的热敏电阻 ad采用了10位的 stc单片机自带的10ad转换
ad使用查表法
建立如下的数组
UINT16 code AD_Tab[111]={ 131, 138, 144, 151, 157, 164, 172,-------------------922, 924, 927};
共111个数字 对应 0度 1度 2度 -----------110度
在比如 109度的时候为924 110度的时候为927 那么此时我的分辨率是否为 (927-924)/10=0.3度
我得到的温度计算方法是 比如当数值为 925 的时候 T=109+(925-924)/(927-204)= 109.3度
926的时候 T=109+(926-924)/(927-204)=109.6度
但是我的要求是要达到0.1的分辨率 那么 必须要改变我 的ad么 采用16位ad?
或者还有别的方法么
还有一个问题 就是在20-21度的时候 俩ad采样相差大于10 但是我用液晶显示还是直接从20----20.4-----20.8----20.12
基本上都是以0.4度递增 但是理论上在这些点可以达到0.1递增的
我通过手动赋值ad的实际采样 可以正常显示20.1 20.2 20.3 20.4 说明ad采样出问题了么 奇怪了
这个是ad采样
UINT16 Get_ADC(void)
{
UINT16 Temp;
ADC_RES = 0; //清除结果
ADC_RESL = 0;
ADC_CONTR &= ~(0x01<<5); //清flag
ADC_CONTR |= 0x68; //通道0 全速 开始转换
while (1) //等待A/D转换结束
{
if (ADC_CONTR & 0x10) //0001,0000 测试A/D转换结束否
{
break;
}
}
ADC_CONTR &= ~(0x01<<5); //清flag
Temp = ((UINT16)ADC_RES)<<8 | ((UINT16)ADC_RESL);
return Temp; //返回 A/D 10 位转换结果
这个是采样与温度转换的程序
UINT16 Get_Temp(void)
{
UINT8 n, temp_zheng;
UINT16 ad_temp;
FP32 temp_xiao;
UINT16 temp = 0;
ad_temp = Get_ADC();
while(1)
{
if ((ad_temp >= AD_Tab[n]) && (ad_temp <= AD_Tab[n+1]))
{
temp_zheng = n;
temp_xiao = (1.0*(ad_temp - AD_Tab[n]))/(AD_Tab[n+1] - AD_Tab[n]);
temp = temp_zheng*100 + temp_xiao*100.0;
return temp;
}
n++;
if (n>110)
{
return 20000;
}
}
这个是主函数
void DispNowTemp(UINT16 j)
{
LCD_write_char(1, 1, j/1000 + '0');
LCD_write_char(1, 2, j%1000/100 + '0');
LCD_write_char(1, 3, '.');
LCD_write_char(1, 4, j%1000%100/10 + '0');
LCD_write_char(1, 5, j%1000%100%10 + '0');
}
main()
{
P3M1 |= 0x01 << 2;
//P2M0 |= 0x01 << 5;
P1M0 |= 0XF9;
P1M1 = 0X01;
sei();
LCD_start();
InitADC();
while(1)
{
ADTemp = Get_Temp();
DispNowTemp(ADTemp);
//LCD_write_num(1,1,ADTemp);
//LCD_clear();
}
这个是采样ad
UINT16 code AD_Tab[111]={ 131,
138,
144,
151,
157,
164,
172,
179,
187,
194,
202,
210,
219,
227,
236,
245,
254,
263,
272,
282,
291,
301,
311,
321,
331,
341,
352,
362,
372,
382,
393,
403,
414,
424,
435,
445,
456,
466,
477,
487,
497,
507,
518,
528,
538,
548,
558,
568,
577,
587,
596,
606,
615,
624,
633,
642,
651,
659,
668,
676,
684,
692,
700,
708,
715,
723,
730,
737,
744,
751,
758,
764,
771,
777,
783,
789,
795,
801,
806,
812,
817,
822,
828,
832,
837,
842,
847,
851,
855,
860,
864,
868,
872,
876,
879,
883,
887,
890,
893,
897,
900,
903,
906,
909,
911,
914,
917,
919,
922,
924,
927};
热电偶.rar
(51.1 KB)
|