搜索
bottom↓
回复: 3

请大家帮我看看这段程序有什么问题,采集不到AD值

[复制链接]

出0入0汤圆

发表于 2010-12-20 15:29:31 | 显示全部楼层 |阅读模式
大家帮我看看这个AD转换程序啊,哪里有问题啊,采集不到温度值啊

uint AD_Convert(void);
uchar temperature_check(flash uint x[],uint n,uint y);
void Delay(ucahr i);

void AD_Dispose(void)
{
  uchar i;
  uint AD_midValue;
  for(i=0;i<4;i++)
   {
     switch(i)
         {
           case 0:  ADC_T1;  //T1通道
                    AD_midValue=AD_Convert();
                    T1_Tempt=temperature_check(Temperature_Table,100,AD_midValue);
                Delay(100);
                 break;
           case 1:  ADC_T3;  //T3通道
                    AD_midValue=AD_Convert();
                    T3_Tempt=temperature_check(Temperature_Table,100,AD_midValue);
                Delay(100);
                 break;
           case 2:  ADC_T4;  //T4通道
                    AD_midValue=AD_Convert();
                    T4_Tempt=temperature_check(Temperature_Table,100,AD_midValue);
                 Delay(100);
                 break;
           case 3:  ADC_T5; //T5通道
                    AD_midValue=AD_Convert();
                    T5_Tempt=temperature_check(Temperature_Table,100,AD_midValue);
                                                       
                 break;
           default: break;
          }
         //Err_Check();
        }
  
}

uchar temperature_check(flash uint x[],uint n,uint y)
{
  uint top=n-1,bot=0,mid=(top+bot)/2;
  if(y<155)
   {return(99);}
  if(y>866)
   {return(0);}
  do
   {
    mid=(bot+top)/2;
    if(y<=x[mid])
    {bot=mid;}
    else
    {top=mid;}
   }
  while(!((y<=x[mid])&&(y>x[mid+1])));
  return(mid);
}               
   
uint AD_Convert(void)
{
  uint AD_value;
  ADMUX=0x24;                        //内部REF关闭,选用外部VREF;左对齐;通道CH4
  ADCSRA=0x94;                       //ADC使能;禁止ADC中断;16分频
  ADCSRA|=(1<<ADSC);                 //ADEN置位,启动ADC
  _NOP();
  while(!(ADCSRA & (1 << ADIF)));         //等待AD转换完成/
  AD_value=ADCL;
  AD_value|=((uint)ADCH<<8);
  ADCSRA &= ~(1 << ADIF);                     //清标志
  ADCSRA &= ~(1 << ADEN);                     //关闭转换
  return(AD_value);
}

头文件定义
flash.h

flash uint Temperature_Table[100]=      
{
  862,859,852,848,842,835,828,820,814,807,  
  800,792,784,776,769,761,753,744,734,726,  
  717,708,699,692,683,675,666,655,647,638,  
  629,619,609,600,591,582,572,562,554,545,  
  536,526,516,508,499,490,481,472,463,455,  
  447,438,429,418,410,402,394,385,378,370,  
  363,355,347,340,333,326,319,312,305,299,  
  293,287,280,275,269,263,258,251,246,241,  
  236,231,225,220,216,211,207,202,197,193,  
  189,185,180,176,172,169,165,161,156,154   
  };


大家帮我看看啊

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-12-20 15:30:21 | 显示全部楼层
switch部分文字有些漂移,不是错误

出0入0汤圆

 楼主| 发表于 2010-12-20 15:33:01 | 显示全部楼层
单片机是,Mega16

出0入0汤圆

发表于 2013-10-11 21:51:27 | 显示全部楼层
清ADIF标志,我记得没错的话,应该是置一清零,而不是直接写零!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表