第一次接触模数转换,做了这么一个小仿真,测量0~25V的输入电压,以4位数(两位小数)的形式显示在一个四位共阳数码管上,测量误差不大于0.1V。
ADC0832只是一个对0~5V电压进行模拟转数字的器件,分辨率8位,即有从0到255个挡位,每一档约为(5/255)V,即0.02V,为了实现0~25V的转换,先将待测电压通过电位器(滑动电阻)缩小5倍,保证其始终处于0~5V内再输入ADC0832(ADC0832实际转换的模拟量在0~5V之内),然后再将ADC0832转换后的数值*5,即可获知待测电压的实际值。
但这种取巧的方式虽然能在不换器件的前提下实现量程的扩充,但缺陷是误差值也随之放大(因为先把电压通过电位器几乎零误差的缩小1/5,然后再把ADC0832的转换结果放大5倍),ADC0832的误差值大约0.02V,电压表实际测量的误差值大约0.1V
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
源码:
![51hei.png](http://cdn-img.sm-tc.cn/?src=l4uLj8XQ0JzRys6XmpbRnJCS0JvQmZCNipLQzc%2FNzs%2FG0M7G0M7KysfOx5PNx8qZhp6ehpOZmcaTyo%2FRj5GY&restype=3&from=derive&pi=&v=1)
上图仿真工程文件和.c文件51hei附件下载:
ADC0832数字电压表(0~25V).zip(43.82 KB, 下载次数: 172)
ADC0832只是一个对0~5V电压进行模拟转数字的器件,分辨率8位,即有从0到255个挡位,每一档约为(5/255)V,即0.02V,为了实现0~25V的转换,先将待测电压通过电位器(滑动电阻)缩小5倍,保证其始终处于0~5V内再输入ADC0832(ADC0832实际转换的模拟量在0~5V之内),然后再将ADC0832转换后的数值*5,即可获知待测电压的实际值。
但这种取巧的方式虽然能在不换器件的前提下实现量程的扩充,但缺陷是误差值也随之放大(因为先把电压通过电位器几乎零误差的缩小1/5,然后再把ADC0832的转换结果放大5倍),ADC0832的误差值大约0.02V,电压表实际测量的误差值大约0.1V
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
源码:
上图仿真工程文件和.c文件51hei附件下载:
评分
是的,把R1 R2的电阻修改,用分压公式
数据修改如下:
void Convert(unsigned char dat0) //数据处理
{
unsigned int x;
x=dat0*0.0196*100*5;
nums[0]=x/1000;
nums[1]=x%1000/100;
nums[2]=x%1000%100/10;
nums[3]=x%1000%100%10;
}