找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2120|回復: 0
收起左側(cè)

爻系!AD分度問題BUG

[復制鏈接]
ID:82781 發(fā)表于 2015-6-13 16:33 | 顯示全部樓層 |閱讀模式
標參點之間的溫度區(qū)間以線性處理這樣可以節(jié)省內(nèi)存,但是,無疑會使精度大大降低,精確不到0.1,而且另一個問題接踵而至,那就是分度的問題,步長太高就會導致小數(shù)點后尾數(shù)的減小,不利于計算和處理,而變大則精度大大降低,所以在這種問題上要經(jīng)過實際的實驗才可以得到結(jié)果,配合我的顯示程序最終為9分度,步長是可變的,對于不需非常非常精確的場合足以!
2012/11/14
小ARM菜菜
日照

/*
作者:小ARM菜菜
Q Q :925295580
AD處理
*/
void ad_process(uint16_t ad_data,uint16_t *p)//ad數(shù)據(jù)處理
{
   uint8_t i;
   uint8_t n;
  
  if(ad_data<*p)
  {Dispaly_SEGD5(0); //小數(shù)點
      
   Dispaly_SEGD3(0);//
   Dispaly_SEGD4(0);return ;
   }//如果小于0度,按照0度處理
  
  
  
  for(i=0;i<33;i++)//0攝氏度到32攝氏度
  {
   
   
   if((*p<ad_data)&&(*(p+1)>ad_data))
      {
      
         
     if(set_tem>i)//判斷溫度是否達到設定溫度(手動必須關閉)
     {
        if(hand_ctrl==0)
         {
     display_s1_s2_s3_s4_s5_p(0,1,1,0,1,1); //開啟
     Relay =0;
         }
     
     }
     else
     {
      if(hand_ctrl==0)
      {
     display_s1_s2_s3_s4_s5_p(0,1,0,1,1,1);//關閉
     Relay =1;
      }
     }
   
  
         
        n=*(p+1)-*p;
        n=n/9;
        
        ad_data=(ad_data-*p);
        
        n=ad_data/n;
        
      Dispaly_SEGD5(n); //小數(shù)點
      
   Dispaly_SEGD3(i/10);//
   Dispaly_SEGD4(i%10);
   
   
   
   return ;
         
   
      }
      else
     if(*p==ad_data)//如果相等,那么直接返回點溫度值
   {
  
    Dispaly_SEGD5(0); //小數(shù)點
   Dispaly_SEGD3(i/10);//
   Dispaly_SEGD4(i%10);
   
   }
  
  
  p++;
  }
  
  
  
   
   
}



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表