单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:364|回复:0
打印上一主题下一主题

九齐单片机的ADC采样程序

[复制链接]
跳转到指定楼层
楼主
ID:1125252发表于 2024-7-10 19:47|只看该作者回帖奖励
unsigned int ADC_count(void);
void ADC_INIT(void);
void F_AIN4_Convert(char count);
void ADC_Close(void);
void F_wait_eoc(void);

void main(void)
{
   ADC_INIT();
   while(1)
   {
       temp=ADC_count();
       VDD=temp*4/4096;
   }
  
}




unsigned int ADC_count(void)
{  
   unsigned int temp;
   R_AIN4_DATA=R_AIN4_DATA_LB=0x00;
   F_AIN4_Convert(8);
   R_AIN4_DATA<< = 4;               // R_AIN0_DATA shift left 4 bit
   R_AIN4_DATA_LB& = 0x7F;           // Only get Bit6~0
   R_AIN4_DATA += R_AIN4_DATA_LB;       // R_AIN0_DATA + R_AIN0_DATA_LB
   R_AIN4_DATA >>=3;

   temp=R_AIN4_DATA;
  
   return temp;  
}
void ADC_INIT(void)
{  
  
   ADMD  = C_ADC_En | C_ADC_CH_Dis | C_ADC_PA4 ;
   ADVREFH = C_Vrefh_VDD;
   ADR     = C_Ckl_Div8;
   ADCR  = C_Sample_1clk | C_12BIT;
   //PACON=0X10;
   ADMDbits.GCHS = 1;
   delay(50);
  
  
   //temp=(R_AIN4_DATA*4)/4096;
      
}
void F_AIN4_Convert(char count)
{
     char i;
     ADMD  = 0x90 | C_ADC_PA4;           // Select AIN0(PA0) pad as ADC input
     for(i=1;i<=count;i++)
     {            
     ADMDbits.START = 1;               // Start a ADC conversion session
     F_wait_eoc();                   // Wait for ADC conversion complete
     R_AIN4_DATA_LB += ( 0x0F& ADR);
     R_AIN4_DATA   += ADD;
     }
}
void ADC_Close(void)
{
   ADMD=0;
}
/************************************************************************/

void F_wait_eoc(void)
{
   while(ADMDbits.EOC==0)
   ;
}

评分

黑币 +50
收起理由
+ 50
共享资料的黑币奖励!

查看全部评分

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网