我最近在用mega16做一个RLC测量仪,具体思路就是AD9850产生正弦信号,然后CD4051的I/O端接8个标准电阻,在他们的共同输出端接待测元件,TLC2543采集电压进行模数转化,送入单片机计算,LCD显示读数。但是无法达到测量的效果。
简化一下原理就是
这样,下面是我电阻测量显示的子代码
void dianzu(void) //1602显示电阻值;包含量程自动转换;
{
uchar m;
uint a,b,c,d,e;
LCD_Write_str(0,0,u0);
LCD_Write_str(1,0,u1); //显示'D W''Value';
//R = U2 * sd[K] / (U1-U2); //待测电阻的计算公式,单位:欧姆;
//R = U * sd[K-1] / (1.838478-U); //注意:提供信号的有效值得精确测量;
R = U * sd[K-1] / (1.76777-U);
m=1;
if(R>=1000)
{
R = R/1000.000; //显示部分单位为K;
m=2;
if(R>=1000)
{
R = R/1000.000;//显示部分单位为M;
m=3;
}
}
a = (long)(R*100)/10000;
b = (long)(R*100)%10000/1000;
c = (long)(R*100)%1000/100;
d = (long)(R*100)%100/10;
e = (long)(R*100)%10;
if(m == 1) /*****************************/
LCD_Write_str(0,6,u2);
if(m == 2)
LCD_Write_str(0,6,u3); /********量程自动转换;********/
if(m == 3)
LCD_Write_str(0,6,u4); /*****************************/
LCD_Write_char(1,8,a+48); /*****************************/
LCD_Write_char(1,9,b+48);
LCD_Write_char(1,10,c+48); /********显示待测元件大小*****/
LCD_Write_char(1,11,'.');
LCD_Write_char(1,12,d+48);
LCD_Write_char(1,13,e+48); /*****************************/
}
麻烦帮我看看是哪里有问题呢!!!
|