ADC5513

一 C5513

u32 ADC5513_GetValue(void)
{
  u32 ADValue,i;
  bool data_bit = false;
  C5513_SCK=0;
  C5513_CS=0;
  if(GPIO_BitRead(C5513_SDO)==0u)
  {
    for (i = 0; i < 24; i++)
        {
          C5513_SCK = 1;
          data_bit = GPIO_BitRead(C5513_SDO);
          C5513_SCK=0;
          ADValue <<= 1;
          if(data_bit > 0)
            {
                ADValue|=0x00000001;
            }
            else
            {
                ADValue&=~0x00000001;
            }
    } 

ADValue &=~(1<<20)  ;/*有效位数为19位*/

Vout=ADValue*2.0*10000/2^19   /*有效电压是2.0,不是2.5V因为内部放大了0.8倍*/
    return ADValue;
  }
  else
  {
    return (0xffffffff);
  }
}

  1. #include <reg52.h>   
  2. #include <intrins.h>   
  3. #define uchar unsigned char   
  4. #define uint unsigned int   
  5. sbit ADCS=P2^0;   
  6. sbit ADCLK=P2^1;   
  7. sbit ADDO=P2^2;   
  8.    
  9. unsigned long int ADConv(void)   
  10. {   
  11.    uchar i;   
  12.     unsigned long int Result=0;   
  13.     ADCLK=0;   
  14.     ADCS=0;   
  15.    
  16. _nop_();   
  17. _nop_();   
  18. _nop_();   
  19.     ADCLK=0;   
  20.    while(ADDO);   
  21.     ADCLK=1;   
  22.     _nop_();       
  23. for(i=0;i<3;i++){   
  24. ADCLK=0;   
  25. _nop_();   
  26. ADCLK=1;   
  27.          }   
  28.     for (i=0;i<20;i++){     
  29.             ADCLK=0;   
  30.          Result=Result<<1;           
  31.             if (ADDO)   
  32.            Result=Result+1;   
  33.            ADCLK=1;   
  34.          }   
  35. ADCS=1; 
  36. Result &=~(1<<20)  ;/*有效位数为19位*/
  37. Vout=Result*2.0*10000/2^19   /*有效电压是2.0,不是2.5V因为内部放大了0.8倍*/            
  38.     return Result;   
  39.    
原文地址:https://www.cnblogs.com/jieruishu/p/6388384.html