51的AD转换电路,要好使的

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 06:27:28
51的AD转换电路,要好使的
xWmKP+"(-iZ+1&H&6YQ ul8K9t̗Qu/}g_mM/Xlsɀ4H֫`>C[Nzj:^A;a@XOM2i}h(8 ӫ.d_ђz20?ɨ&/9e'uZM}1>^_n"l,G Emk!U_3])doB?ٰ9mxnO411:y+S ?Ǜ/!wm-B.`{LKzˮجV@p;x,.oH1$q3SSgeGw˪3x <#* ce$os΂{0b\_n;5{:j:MjEz`[){^.(sE8R220C_eǾճ106ؗ$.1`U_<:)78wwqZ<-A7*IlQpU'čړX dDD^nG_Xg*0U_C !QoP7;U ZTKu@M釙4otTear&(7i.^2Ț]EʉA+X >'u[vmjhMk R?׎MgM:P궦ٵ_v|oOIPڧEmMOt"V^"uu3ⰳkDG(rS|ʍ9 tFE0/"J8V OSسfLRty0Y!G((@s$DZ'̅M0aGc9@ gx'H /YBY\0Yoā>gq$)\\R0Ybc?VB

51的AD转换电路,要好使的
51的AD转换电路,要好使的

51的AD转换电路,要好使的

可以用ADC0832,函数程序

//

//读取ADC0832转换值函数

//入口函数:channel选择通道

uchar ADC0832_Read(uchar channel)

{

 uchar i = 0; 

 uchar tmp = 0; //高字节数据

 uchar tmp1 = 0; //低字节数据

 

 //开始标志位

 ADC0832_DODI = 1;

 _nop_();  _nop_();

 ADC0832_CS = 0;  //片选信号 

 ADC0832_CLK = 1;

 _nop_();  _nop_();

 ADC0832_CLK = 0;

 _nop_();  _nop_();

 //选择通道

 switch(channel)

 {

  case 0:  //通道0

   ADC0832_DODI = 1; //SGL = 1;

   _nop_();  _nop_();

   ADC0832_CLK = 1;

   _nop_();  _nop_();

   ADC0832_CLK = 0;

   _nop_();  _nop_();

   ADC0832_DODI = 0; //ODD = 0;

   _nop_();  _nop_();

    ADC0832_CLK = 1;

    _nop_();  _nop_();

   ADC0832_CLK = 0;

   _nop_();  _nop_();

   break;

  case 1:  //通道1

   ADC0832_DODI = 1; //SGL = 1;

   _nop_();  _nop_();

   ADC0832_CLK = 1;

   _nop_();  _nop_();

   ADC0832_CLK = 0;

   _nop_();  _nop_();

   ADC0832_DODI = 0; //ODD = 1;

   _nop_();  _nop_();

    ADC0832_CLK = 1;

    _nop_();  _nop_();

   ADC0832_CLK = 0;

   _nop_();  _nop_();

   break;

   

  default:

   break;  

 }

 ADC0832_DODI = 1;

 _nop_();  _nop_();

 //读取8位转换数值

 for(i=0;i<8;i++)

 {

  ADC0832_CLK = 1;    //产生同步时钟

  _nop_();  _nop_();

  ADC0832_CLK = 0;

  _nop_();  _nop_();

  if(ADC0832_DODI)   //按位获取8位数据

  {

   tmp |= 0x01;   //从低位获取

  }

  else

  {

   tmp &= 0xfe;

  }

  if(i<7)

  {

   tmp <<= 1;    //移位

  }     

 }

 tmp1 =  tmp & 0x01;

 tmp1 <<= 6;

 for(i=0;i<7;i++)    //获取7位校验数据

 {

  ADC0832_CLK = 1;

  _nop_();  _nop_();

  ADC0832_CLK = 0;

  _nop_();  _nop_();

  if(ADC0832_DODI)

  {

   tmp1 |= 0x80;

  }

  else

  {

   tmp1 &= 0x7f;

  }

  if(i<6)

  {

   tmp1 >>= 1;

  }  

 }

 ADC0832_CS = 1;  //禁止ADC0832

 if(tmp == tmp1) //当高字节与低字节相同时,该值有效

 {

  return tmp; //返回数值

 }

}