久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1417|回復: 4
打印 上一主題 下一主題
收起左側

STC12C5A60S2單片機讀取溫度會漂移,怎樣讀取穩定溫度數值呢?請多多指教

[復制鏈接]
跳轉到指定樓層
樓主
ID:416575 發表于 2022-4-23 22:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void InitADC()
{
        P1ASF =0x01;  //0x01打開P1.0
        ADC_RES=0;
        ADC_RESL=0;
        ADC_CONTR =ADC_POWER|ADC_speed_LL;   // 1)ON Power; 2)speed 90 3)ADC in P1.0
        usdelay();              
}
uint GetADCResult(uchar ch)          //采集溫度
{  uint value;
        ADC_CONTR=ADC_POWER|ADC_speed_LL|ch|ADC_START; //配置ADC,設置轉換通道,啟動轉換
    _nop_();                        //等待設置ADC_POWER完畢
    _nop_();
    _nop_();                        
    _nop_();
    while(!(ADC_CONTR & ADC_FLAG));//讀取轉換完畢標志位ADC_FLAG
    ADC_CONTR &=~ADC_FLAG;         //清除ADC_FLAG標志位
     value =ADC_RES<<2|ADC_RESL; //讀取10位轉換結果保存到value
     return value;                  //返回ADC轉換結果10位
}
void Get_Temp(void)         //讀NTC查表
{
uint num=0;
uchar i;
        num=GetADCResult(0);
        num=num*4.8;    //變成mv 最大值1024 。1024*4.8=4915mv,如果增加精度可以使用浮點計算
        for(i=0;i<101;i++)         //判斷采集電壓值大于或者等于表格電壓時,停下來并記錄當前i值
           {
            if(num >= NTCcode[ i])
               {
                       TMP=i;  
                              break;    //檢測到即跳出循環,否則繼續循環
                }                  
             }
                        disp[4]=TMP/100;        //溫度百位
                        disp[5]=TMP%100/10; //溫度十位
                        disp[6]=TMP%10;            //溫度個位
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2022-4-24 07:16 | 只看該作者
用簡單的平均濾波,1ms采樣1次,20次平均,消除環境工頻干擾。
  1. void Get_Temp(void)         //讀NTC查表
  2. {
  3.         static uint num=0;
  4.         static uchar count=0;
  5.         uchar i;
  6.         num+=GetADCResult(0);
  7.         count++;
  8.         if(count>=20)
  9.         {
  10.                  count=0;
  11.                 num=(num*48+5)/20;    //變成mv 最大值1024 。1024*4.8=4915mv,如果增加精度可以使用浮點計算
  12.                 for(i=0;i<101;i++)         //判斷采集電壓值大于或者等于表格電壓時,停下來并記錄當前i值
  13.                 {
  14.                         if(num >= NTCcode[ i])
  15.                         {
  16.                                 TMP=i;  
  17.                                 break;    //檢測到即跳出循環,否則繼續循環
  18.                         }                  
  19.                 }
  20.                 num=0;
  21.                 disp[4]=TMP/100;        //溫度百位
  22.                 disp[5]=TMP%100/10; //溫度十位
  23.                 disp[6]=TMP%10;            //溫度個位
  24.         }
  25. }
復制代碼
回復

使用道具 舉報

板凳
ID:390416 發表于 2022-4-24 08:03 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-213898-1.html  去這里下載,里面代碼有NTC文件夾
回復

使用道具 舉報

地板
ID:416575 發表于 2022-4-24 22:41 | 只看該作者
wulin 發表于 2022-4-24 07:16
用簡單的平均濾波,1ms采樣1次,20次平均,消除環境工頻干擾。

多謝指教,請問 num=(num*48+5)/20;中加5是什么意思呢?
回復

使用道具 舉報

5#
ID:213173 發表于 2022-4-25 07:28 | 只看該作者
hsyxjm 發表于 2022-4-24 22:41
多謝指教,請問 num=(num*48+5)/20;中加5是什么意思呢?

你的原計算公式 num=num*4.8;
改后的計算公式 num=(num*4.8*10+5)/10/20; //乘10加5是為了小數四舍五入,不過在這里沒有什么實際意義。
化簡的計算公式 num=(num*48+5)/200;//回復中少了個0。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久色一区| 欧美日韩一区在线 | 一区二区三区日本 | 国产精品久久久久一区二区三区 | 亚洲精品成人 | 国产一区在线视频 | 特黄视频 | 一区二区三区亚洲 | 国产日产久久高清欧美一区 | 亚洲精品欧美 | 成人精品啪啪欧美成 | 一级黄色录像片子 | 青青操av| 成人免费小视频 | 日韩一三区 | 久草在线在线精品观看 | 国产视频一区二区 | 91精品国产综合久久久久久丝袜 | 亚洲人成人一区二区在线观看 | av在线亚洲天堂 | 精品国产一区二区三区在线观看 | 国产精品我不卡 | 亚洲一区二区三区视频 | 四虎影院一区二区 | 人人人人人爽 | 亚洲精品9999 | 国产精品久久久久aaaa九色 | 鲁大师一区影视 | 成人国产在线视频 | 人操人人干人 | 一区二区视频在线观看 | 久久视频精品 | 免费在线观看黄视频 | 久草在线中文888 | 国产精品久久视频 | 亚洲欧美在线观看 | 欧美一级免费片 | 欧美一区二区网站 | 一级在线观看 | 麻豆一区二区三区精品视频 | 国产精品一区二区久久久久 |