请问一下,我用PIC单片机的AD转换来测直流电压(0~5V),然后用数码管来显示(三位)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问一下,我用PIC单片机的AD转换来测直流电压(0~5V),然后用数码管来显示(三位)相关的知识,希望对你有一定的参考价值。
出现的问题是,数码管最后一位值在不挺的变化,我推测应该是AD每次的转换值不一样导致的结果,因为我把第一次和第二次转换之间加上延时的话数码管最后一位的变化速度就和延时的时间差不多,不知道该怎么解决啊?
请高手帮忙一下
给你个C语言的中值滤波法:
#define N 10
typedef unsigned int u16;
u16 voltage_filter(void)
char count,i,j;
static u16 value_buf[N];
u16 sum=0,temp;
for(count=0;count<N;count++)
value_buf[count] = GetADCValue(5);
for(j=0;j<N-1;j++)
for(i=0;i<N-j;i++)
if(value_buf[i]>value_buf[i+1])
temp = value_buf[i];
value_buf[i]=value_buf[i+1];
value_buf[i+1]=temp;
for(count=1;count<N-1;count++)
sum+=value_buf[count];
return (sum/(N-2));
参考技术A 明显是“AD每次的转换值不一样导致的结果”,可以用多次采样平均的简单的办法解决,就是不要每采一次都显示,可以采8、16、32、64次相加后平均再输出显示,这样就不会抖了,而且多次采样平均也符合统计学原则。(采8、16、32、64次是为了平均时方便用右移3、4、5、6位方式实现,速度快)追问
你说的这个应该就是中位值滤波法是吧?
,还有就是你说的“(采8、16、32、64次是为了平均时方便用右移3、4、5、6位方式实现,速度快) ”
我不是很明白,我刚学单片机,你能说清楚一点吗?
谢谢
以上是关于请问一下,我用PIC单片机的AD转换来测直流电压(0~5V),然后用数码管来显示(三位)的主要内容,如果未能解决你的问题,请参考以下文章
5V带AD转换单片机的基准电压是不是能超过5V 也就是说5V单片机是不是能测量超过5V的电压?求赐教