44b0实验-AD转换实验

AD转换的基本思想呢,就是将规定范围内的电压值转换为某一数值值。比如我这个44b0开发板可以接受的AD转换输入电压范围是0~2.5V,而在某个AIN引脚输入实际的电压为X,我们打算把这个电压值转换成数字值的范围是0~1023,那么经过AD转换,我们得到的值D是

 

           D = X/2.5*1023;

 

当然由这个数字值D,我们也可以反过来计算出此AIN引脚的电压值:

 

           X = D*2.5/1023。

 

可惜我没有设备给这几个AIN端口提供0~2.5V的电压,所以实际上实验我没有做,只是研究了下datasheet和实验代码。

废话少说,下面直接贴代码了。

 

int ReadAdc(int ch)
{
    int i;
    static int prevCh=-1;

    if(prevCh!=ch)
    {
         rADCCON=0x0|(ch<<2); //setup channel.
         for(i=0;i<150;i++); //min. 15us
    }
    rADCCON=0x1|(ch<<2); //Start A/D conversion
    while(rADCCON &0x1); //To avoid The first FLAG error case.


    //(The START bit is cleared in one ADC clock.)
    while(!(rADCCON & 0x40));
    for(i=0;i<rADCPSR;i++);  //To avoid The second FLAG error case


    prevCh=ch;
    return rADCDAT;
}

 

void Test_Adc(void)
{
    int a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;

    rCLKCON=0x7ff8; 
    rADCCON=0x1|(0<<2);  //Enable ADC
    Delay(100);    //delay for 10ms for ADC reference voltage stabilization.


    rADCPSR=1023;
    
    while(Uart_GetKey()==0)
    {
          SoftDelay(10000);
          a0=ReadAdc(0);
          a1=ReadAdc(1);
          a2=ReadAdc(2);
          a3=ReadAdc(3);
          a4=ReadAdc(4);
          a5=ReadAdc(5);
          a6=ReadAdc(6);
          a7=ReadAdc(7);
 
          Uart_Printf("0:%04d 1:%04d 2:%04d /n",/*3:%04d 4:%04d 5:%04d 6:%04d 7:%04d/n", a0,a1,a2,a3,a4,a5,a6,a7);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值