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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為啥我的ntc檢測溫度ad值不對應

  [復制鏈接]
跳轉到指定樓層
樓主
ID:745093 發表于 2022-4-19 11:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用的12位ADC檢測溫度,ad值如下表

下面是獲取溫度值后,處理ad值與實際環境溫度值之間的誤差,我這里誤差有點大,比如0度時應該是2201,但實際檢測到的ad值卻是3299,硬件方面也沒啥問題,不知道為啥會差別這么大,難道是計算ad值得問題嗎,哪個大神給個標準的ntc檢測溫度標準處理方法看看

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

使用道具 舉報

沙發
ID:554500 發表于 2022-4-19 13:07 | 只看該作者
看下ADC的電壓基準
回復

使用道具 舉報

板凳
ID:123289 發表于 2022-4-19 14:40 | 只看該作者
1、這個與硬件相關,你必須保證:NTC的溫度對照表是正確的。
2、通常NTC的對照表是電阻與溫度的關系
3、電阻與AD值之間的關系是可以通過硬件圖準確計算出來的。
4、再用計算出來的表來對應溫度值,誤差就不大了。
回復

使用道具 舉報

地板
ID:213173 發表于 2022-4-19 15:13 | 只看該作者
這個表要根據所采用的NTC廠家提供的溫度/阻值數據和硬件電路中NTC與分壓電阻關系自己做。隨便抄撞大運十之八九玩不轉。
回復

使用道具 舉報

5#
ID:82570 發表于 2022-4-19 18:47 來自手機 | 只看該作者
可以使用18b20同步采集ntc對應的ad值來自己查表
回復

使用道具 舉報

6#
ID:956872 發表于 2022-4-20 08:45 來自手機 | 只看該作者
我用B3950的讀出來差五六度,實際測阻值跟對照表比較也差三四度。
回復

使用道具 舉報

7#
ID:401564 發表于 2022-4-20 10:03 | 只看該作者
PEB188 發表于 2022-4-20 08:45
我用B3950的讀出來差五六度,實際測阻值跟對照表比較也差三四度。

B3950有很多廠商的,買的時候要有溫度對照表才買才行
ADC至少要用12位的,用10位的誤差就比較大,8位的話,幾乎沒有精度可言
我用的12位精度,查表顯示計算,跟標準溫度計也就是0.5-1之間的誤差
回復

使用道具 舉報

8#
ID:491577 發表于 2022-4-20 16:26 | 只看該作者
ADC是單片機的難點,初學者不容易學好,從你的分度表判斷,大概你用的是10K NTC,分壓電阻大概是36K。需要控制0到-15°,對應NTC電阻為:31.77K到66.92K。很明顯NTC電阻和分壓電阻選錯了,ADC芯片管腳是有uA級別電流的。這個電流是會影響檢測精度的,流過NTC的電流越小,誤差就越大,所以選擇NTC阻值時要保證電流在1mA左右,要測量0到-15°的溫度應該選1K NTC,分壓電阻選2K左右。你選10K NTC誤差會大10倍。還有電源必須是線性穩壓電源,開關電源誤差太大。第二是程序,前面幾次ADC值是不準確的,需要丟棄,正常是連續檢測10次adc,前面2次不要,后面8次取平均,這樣比較準確。
回復

使用道具 舉報

9#
ID:337139 發表于 2023-2-25 09:53 | 只看該作者
wulin 發表于 2022-4-19 15:13
這個表要根據所采用的NTC廠家提供的溫度/阻值數據和硬件電路中NTC與分壓電阻關系自己做。隨便抄撞大運十之 ...

行家一出手,便知有沒有!
回復

使用道具 舉報

10#
ID:337139 發表于 2023-2-25 09:55 | 只看該作者
hhh402 發表于 2022-4-20 16:26
ADC是單片機的難點,初學者不容易學好,從你的分度表判斷,大概你用的是10K NTC,分壓電阻大概是36K。需要 ...

高手!
回復

使用道具 舉報

11#
ID:434018 發表于 2023-2-25 12:23 | 只看該作者
提供參考
1) 注意一下MCU ADC REF voltage 是否穩定
2)有些MCU ADC可設定采樣的平均
回復

使用道具 舉報

12#
ID:1034262 發表于 2023-2-25 21:02 | 只看該作者
估計是NTC 10K-B3950。我用的,0~50度跟18B20比較誤差大約0.5度。
NTC測溫簡單有效,我一般是從ADC的REF接10K參考電阻(0.5%精度),NTC接地,10K與NTC接電串1K電阻到ADC,對地一個100nF電容。這是比例測量,REF不需要準確,紋波小即可。用EXCEL計算一個新的表格,由ADC值直接二分法查表至1度,0.1度用差值。如果讀數有抖動,則加點數字濾波,穩如狗!
回復

使用道具 舉報

13#
ID:420836 發表于 2023-2-27 00:08 | 只看該作者
首先,確保溫度表正確,其次,確保參考電壓正確且穩定。 第三,確定ADC處理的程序是否正確。
回復

使用道具 舉報

14#
ID:883242 發表于 2023-2-27 03:15 | 只看該作者
TTQ001 發表于 2023-2-27 00:08
首先,確保溫度表正確,其次,確保參考電壓正確且穩定。 第三,確定ADC處理的程序是否正確。

其次,錯了。不需要參考電壓很穩定,不亂變就行,但是需要一個很穩定的參考電阻,因為ADC的值是NTC和參考電阻的比值,跟參考電壓基本無關。
回復

使用道具 舉報

15#
ID:596109 發表于 2023-2-27 08:19 | 只看該作者
先看整個電路供電電壓對不對,然后再看AD輸入信號電壓對不對,最后再看時序
回復

使用道具 舉報

16#
ID:1064603 發表于 2023-2-28 13:30 | 只看該作者
有可能受到干擾了,電路需要濾波
回復

使用道具 舉報

17#
ID:72649 發表于 2023-12-30 06:01 來自手機 | 只看該作者
coody_sz 發表于 2023-2-25 21:02
估計是NTC 10K-B3950。我用的,0~50度跟18B20比較誤差大約0.5度。
NTC測溫簡單有效,我一般是從ADC的REF接 ...

NTC的溫度數據對照表怎樣做?
回復

使用道具 舉報

18#
ID:857072 發表于 2024-5-26 09:31 來自手機 | 只看該作者
hjx5548 發表于 2023-12-30 06:01
NTC的溫度數據對照表怎樣做?

http://www.zg4o1577.cn/bbs/dpj-156080-1.html
回復

使用道具 舉報

19#
ID:961114 發表于 2024-5-29 15:39 | 只看該作者
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* 如果要在程序中使用此代碼,請在程序中注明使用了STC的資料及程序        */
  5. /*---------------------------------------------------------------------*/


  6. /*************  本程序功能說明  **************

  7. 本例程基于STC8H8K64U為主控芯片的實驗箱9進行編寫測試,STC8G、STC8H系列芯片可通用參考.

  8. 讀ADC和測溫度.

  9. 用STC的MCU的IO方式驅動8位數碼管。

  10. 使用Timer0的16位自動重裝來產生1ms節拍,程序運行于這個節拍下,用戶修改MCU主時鐘頻率時,自動定時于1ms.

  11. 右邊4位數碼管顯示溫度值, 分辨率0.1度.

  12. NTC使用1%精度的MF52 10K@25度.

  13. 測溫度時, 使用12位的ADC值, 使用對分查找表格來計算, 小數點后一位數是用線性插補來計算的.

  14. 下載時, 選擇時鐘 24MHZ (用戶可自行修改頻率).

  15. ******************************************/

  16. #include    "reg51.h"       //包含此頭文件后,里面聲明的寄存器不需要再手動輸入,避免重復定義
  17. #include    "intrins.h"

  18. #define     MAIN_Fosc       24000000L   //定義主時鐘

  19. typedef     unsigned char   u8;
  20. typedef     unsigned int    u16;
  21. typedef     unsigned long   u32;

  22. //手動輸入聲明"reg51.h"頭文件里面沒有定義的寄存器
  23. sfr TH2  = 0xD6;
  24. sfr TL2  = 0xD7;
  25. sfr IE2   = 0xAF;
  26. sfr INT_CLKO = 0x8F;
  27. sfr AUXR = 0x8E;
  28. sfr AUXR1 = 0xA2;
  29. sfr P_SW1 = 0xA2;
  30. sfr P_SW2 = 0xBA;
  31. sfr S2CON = 0x9A;
  32. sfr S2BUF = 0x9B;

  33. sfr ADC_CONTR = 0xBC;   //帶AD系列
  34. sfr ADC_RES   = 0xBD;   //帶AD系列
  35. sfr ADC_RESL  = 0xBE;   //帶AD系列
  36. sfr ADCCFG = 0xde;

  37. sfr P4   = 0xC0;
  38. sfr P5   = 0xC8;
  39. sfr P6   = 0xE8;
  40. sfr P7   = 0xF8;
  41. sfr P1M1 = 0x91;    //PxM1.n,PxM0.n     =00--->Standard,    01--->push-pull
  42. sfr P1M0 = 0x92;    //                  =10--->pure input,  11--->open drain
  43. sfr P0M1 = 0x93;
  44. sfr P0M0 = 0x94;
  45. sfr P2M1 = 0x95;
  46. sfr P2M0 = 0x96;
  47. sfr P3M1 = 0xB1;
  48. sfr P3M0 = 0xB2;
  49. sfr P4M1 = 0xB3;
  50. sfr P4M0 = 0xB4;
  51. sfr P5M1 = 0xC9;
  52. sfr P5M0 = 0xCA;
  53. sfr P6M1 = 0xCB;
  54. sfr P6M0 = 0xCC;
  55. sfr P7M1 = 0xE1;
  56. sfr P7M0 = 0xE2;

  57. sbit P00 = P0^0;
  58. sbit P01 = P0^1;
  59. sbit P02 = P0^2;
  60. sbit P03 = P0^3;
  61. sbit P04 = P0^4;
  62. sbit P05 = P0^5;
  63. sbit P06 = P0^6;
  64. sbit P07 = P0^7;
  65. sbit P10 = P1^0;
  66. sbit P11 = P1^1;
  67. sbit P12 = P1^2;
  68. sbit P13 = P1^3;
  69. sbit P14 = P1^4;
  70. sbit P15 = P1^5;
  71. sbit P16 = P1^6;
  72. sbit P17 = P1^7;
  73. sbit P20 = P2^0;
  74. sbit P21 = P2^1;
  75. sbit P22 = P2^2;
  76. sbit P23 = P2^3;
  77. sbit P24 = P2^4;
  78. sbit P25 = P2^5;
  79. sbit P26 = P2^6;
  80. sbit P27 = P2^7;
  81. sbit P30 = P3^0;
  82. sbit P31 = P3^1;
  83. sbit P32 = P3^2;
  84. sbit P33 = P3^3;
  85. sbit P34 = P3^4;
  86. sbit P35 = P3^5;
  87. sbit P36 = P3^6;
  88. sbit P37 = P3^7;
  89. sbit P40 = P4^0;
  90. sbit P41 = P4^1;
  91. sbit P42 = P4^2;
  92. sbit P43 = P4^3;
  93. sbit P44 = P4^4;
  94. sbit P45 = P4^5;
  95. sbit P46 = P4^6;
  96. sbit P47 = P4^7;
  97. sbit P50 = P5^0;
  98. sbit P51 = P5^1;
  99. sbit P52 = P5^2;
  100. sbit P53 = P5^3;
  101. sbit P54 = P5^4;
  102. sbit P55 = P5^5;
  103. sbit P56 = P5^6;
  104. sbit P57 = P5^7;


  105. /****************************** 用戶定義宏 ***********************************/

  106. #define ADCTIM (*(unsigned char volatile xdata *)0xfea8)
  107. #define Timer0_Reload   (65536UL -(MAIN_Fosc / 1000))       //Timer 0 中斷頻率, 1000次/秒

  108. /*****************************************************************************/


  109. #define DIS_DOT     0x20
  110. #define DIS_BLACK   0x10
  111. #define DIS_        0x11


  112. /*************  本地常量聲明    **************/
  113. u8 code t_display[]={                       //標準字庫
  114. //   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
  115.     0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
  116. //black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y
  117.     0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
  118.     0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};    //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1

  119. u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};      //位碼


  120. /*************  本地變量聲明    **************/

  121. u8  LED8[8];        //顯示緩沖
  122. u8  display_index;  //顯示位索引
  123. bit B_1ms;          //1ms標志

  124. u16 msecond;

  125. /*************  本地函數聲明    **************/
  126. u16 get_temperature(u16 adc);
  127. u16 Get_ADC12bitResult(u8 channel); //channel = 0~15

  128. /**********************************************/
  129. void main(void)
  130. {
  131.     u8  i;
  132.     u16 j;
  133.    
  134.     P0M1 = 0x00;   P0M0 = 0x00;   //設置為準雙向口
  135.     P2M1 = 0x00;   P2M0 = 0x00;   //設置為準雙向口
  136.     P3M1 = 0x00;   P3M0 = 0x00;   //設置為準雙向口
  137.     P4M1 = 0x00;   P4M0 = 0x00;   //設置為準雙向口
  138.     P5M1 = 0x00;   P5M0 = 0x00;   //設置為準雙向口
  139.     P6M1 = 0x00;   P6M0 = 0x00;   //設置為準雙向口
  140.     P7M1 = 0x00;   P7M0 = 0x00;   //設置為準雙向口
  141.     P1M1 = 0x08;   P1M0 = 0x00;   //設置 P1.3 為 ADC 輸入口

  142.     display_index = 0;
  143.                 P_SW2 |= 0x80;
  144.                 ADCTIM = 0x3f;                //設置 ADC 內部時序,ADC采樣時間建議設最大值
  145.                 P_SW2 &= 0x7f;
  146.                 ADCCFG = 0x2f;                //設置 ADC 時鐘為系統時鐘/2/16/16
  147.                 ADC_CONTR = 0x80; //使能 ADC 模塊

  148.     AUXR = 0x80;    //Timer0 set as 1T, 16 bits timer auto-reload,
  149.     TH0 = (u8)(Timer0_Reload / 256);
  150.     TL0 = (u8)(Timer0_Reload % 256);
  151.     ET0 = 1;    //Timer0 interrupt enable
  152.     TR0 = 1;    //Tiner0 run
  153.     EA = 1;     //打開總中斷
  154.    
  155.     for(i=0; i<8; i++)  LED8[i] = 0x10; //上電消隱
  156.    
  157.     while(1)
  158.     {
  159.         if(B_1ms)   //1ms到
  160.         {
  161.             B_1ms = 0;
  162.             if(++msecond >= 300)    //300ms到
  163.             {
  164.                 msecond = 0;
  165.                
  166.                 j = Get_ADC12bitResult(3);  //參數0~15,查詢方式做一次ADC, 返回值就是結果, == 4096 為錯誤

  167.                 if(j < 4096)
  168.                 {
  169.                 /*
  170.                     LED8[0] = j / 1000;     //顯示ADC值
  171.                     LED8[1] = (j % 1000) / 100;
  172.                     LED8[2] = (j % 100) / 10;
  173.                     LED8[3] = j % 10;
  174.                     if(LED8[0] == 0)    LED8[0] = DIS_BLACK;
  175.                 */
  176.                     j = get_temperature(j); //計算溫度值

  177.                     if(j >= 400)    F0 = 0, j -= 400;       //溫度 >= 0度
  178.                     else            F0 = 1, j  = 400 - j;   //溫度 <  0度
  179.                     LED8[4] = j / 1000;     //顯示溫度值
  180.                     LED8[5] = (j % 1000) / 100;
  181.                     LED8[6] = (j % 100) / 10 + DIS_DOT;
  182.                     LED8[7] = j % 10;
  183.                     if(LED8[4] == 0)    LED8[4] = DIS_BLACK;
  184.                     if(F0)  LED8[4] = DIS_;     //顯示-
  185.                 }
  186.                 else    //錯誤
  187.                 {
  188.                     for(i=0; i<8; i++)  LED8[i] = DIS_;
  189.                 }
  190.             }
  191.         }
  192.     }
  193. }
  194. /**********************************************/

  195. //========================================================================
  196. // 函數: u16 Get_ADC12bitResult(u8 channel)
  197. // 描述: 查詢法讀一次ADC結果.
  198. // 參數: channel: 選擇要轉換的ADC.
  199. // 返回: 12位ADC結果.
  200. // 版本: V1.0, 2012-10-22
  201. //========================================================================
  202. u16 Get_ADC12bitResult(u8 channel)  //channel = 0~15
  203. {
  204.     ADC_RES = 0;
  205.     ADC_RESL = 0;

  206.     ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel;    //啟動 AD 轉換
  207.     _nop_();
  208.     _nop_();
  209.     _nop_();
  210.     _nop_();

  211.     while((ADC_CONTR & 0x20) == 0)  ;   //wait for ADC finish
  212.     ADC_CONTR &= ~0x20;     //清除ADC結束標志
  213.     return  (((u16)ADC_RES << 8) | ADC_RESL);
  214. }


  215. //  MF52E 10K at 25, B = 3950, ADC = 12 bits
  216. u16 code temp_table[]={
  217.         140,    //;-40  0
  218.         149,    //;-39  1
  219.         159,    //;-38  2
  220.         168,    //;-37  3
  221.         178,    //;-36  4
  222.         188,    //;-35  5
  223.         199,    //;-34  6
  224.         210,    //;-33  7
  225.         222,    //;-32  8
  226.         233,    //;-31  9
  227.         246,    //;-30  10
  228.         259,    //;-29  11
  229.         272,    //;-28  12
  230.         286,    //;-27  13
  231.         301,    //;-26  14
  232.         317,    //;-25  15
  233.         333,    //;-24  16
  234.         349,    //;-23  17
  235.         367,    //;-22  18
  236.         385,    //;-21  19
  237.         403,    //;-20  20
  238.         423,    //;-19  21
  239.         443,    //;-18  22
  240.         464,    //;-17  23
  241.         486,    //;-16  24
  242.         509,    //;-15  25
  243.         533,    //;-14  26
  244.         558,    //;-13  27
  245.         583,    //;-12  28
  246.         610,    //;-11  29
  247.         638,    //;-10  30
  248.         667,    //;-9   31
  249.         696,    //;-8   32
  250.         727,    //;-7   33
  251.         758,    //;-6   34
  252.         791,    //;-5   35
  253.         824,    //;-4   36
  254.         858,    //;-3   37
  255.         893,    //;-2   38
  256.         929,    //;-1   39
  257.         965,    //;0    40
  258.         1003,   //;1    41
  259.         1041,   //;2    42
  260.         1080,   //;3    43
  261.         1119,   //;4    44
  262.         1160,   //;5    45
  263.         1201,   //;6    46
  264.         1243,   //;7    47
  265.         1285,   //;8    48
  266.         1328,   //;9    49
  267.         1371,   //;10   50
  268.         1414,   //;11   51
  269.         1459,   //;12   52
  270.         1503,   //;13   53
  271.         1548,   //;14   54
  272.         1593,   //;15   55
  273.         1638,   //;16   56
  274.         1684,   //;17   57
  275.         1730,   //;18   58
  276.         1775,   //;19   59
  277.         1821,   //;20   60
  278.         1867,   //;21   61
  279.         1912,   //;22   62
  280.         1958,   //;23   63
  281.         2003,   //;24   64
  282.         2048,   //;25   65
  283.         2093,   //;26   66
  284.         2137,   //;27   67
  285.         2182,   //;28   68
  286.         2225,   //;29   69
  287.         2269,   //;30   70
  288.         2312,   //;31   71
  289.         2354,   //;32   72
  290.         2397,   //;33   73
  291.         2438,   //;34   74
  292.         2479,   //;35   75
  293.         2519,   //;36   76
  294.         2559,   //;37   77
  295.         2598,   //;38   78
  296.         2637,   //;39   79
  297.         2675,   //;40   80
  298.         2712,   //;41   81
  299.         2748,   //;42   82
  300.         2784,   //;43   83
  301.         2819,   //;44   84
  302.         2853,   //;45   85
  303.         2887,   //;46   86
  304.         2920,   //;47   87
  305.         2952,   //;48   88
  306.         2984,   //;49   89
  307.         3014,   //;50   90
  308.         3044,   //;51   91
  309.         3073,   //;52   92
  310.         3102,   //;53   93
  311.         3130,   //;54   94
  312.         3157,   //;55   95
  313.         3183,   //;56   96
  314.         3209,   //;57   97
  315.         3234,   //;58   98
  316.         3259,   //;59   99
  317.         3283,   //;60   100
  318.         3306,   //;61   101
  319.         3328,   //;62   102
  320.         3351,   //;63   103
  321.         3372,   //;64   104
  322.         3393,   //;65   105
  323.         3413,   //;66   106
  324.         3432,   //;67   107
  325.         3452,   //;68   108
  326.         3470,   //;69   109
  327.         3488,   //;70   110
  328.         3506,   //;71   111
  329.         3523,   //;72   112
  330.         3539,   //;73   113
  331.         3555,   //;74   114
  332.         3571,   //;75   115
  333.         3586,   //;76   116
  334.         3601,   //;77   117
  335.         3615,   //;78   118
  336.         3628,   //;79   119
  337.         3642,   //;80   120
  338.         3655,   //;81   121
  339.         3667,   //;82   122
  340.         3679,   //;83   123
  341.         3691,   //;84   124
  342.         3702,   //;85   125
  343.         3714,   //;86   126
  344.         3724,   //;87   127
  345.         3735,   //;88   128
  346.         3745,   //;89   129
  347.         3754,   //;90   130
  348.         3764,   //;91   131
  349.         3773,   //;92   132
  350.         3782,   //;93   133
  351.         3791,   //;94   134
  352.         3799,   //;95   135
  353.         3807,   //;96   136
  354.         3815,   //;97   137
  355.         3822,   //;98   138
  356.         3830,   //;99   139
  357.         3837,   //;100  140
  358.         3844,   //;101  141
  359.         3850,   //;102  142
  360.         3857,   //;103  143
  361.         3863,   //;104  144
  362.         3869,   //;105  145
  363.         3875,   //;106  146
  364.         3881,   //;107  147
  365.         3887,   //;108  148
  366.         3892,   //;109  149
  367.         3897,   //;110  150
  368.         3902,   //;111  151
  369.         3907,   //;112  152
  370.         3912,   //;113  153
  371.         3917,   //;114  154
  372.         3921,   //;115  155
  373.         3926,   //;116  156
  374.         3930,   //;117  157
  375.         3934,   //;118  158
  376.         3938,   //;119  159
  377.         3942    //;120  160
  378. };

  379. /********************  計算溫度 ***********************************************/
  380. // 計算結果: 0對應-40.0度, 400對應0度, 625對應25.0度, 最大1600對應120.0度.
  381. // 為了通用, ADC輸入為12bit的ADC值.
  382. // 電路和軟件算法設計: Coody
  383. /**********************************************/

  384. #define     D_SCALE     10      //結果放大倍數, 放大10倍就是保留一位小數
  385. u16 get_temperature(u16 adc)
  386. {
  387.     u16 code *p;
  388.     u16 i;
  389.     u8  j,k,min,max;
  390.    
  391.     adc = 4096 - adc;   //Rt接地
  392.     p = temp_table;
  393.     if(adc < p[0])      return (0xfffe);
  394.     if(adc > p[160])    return (0xffff);
  395.    
  396.     min = 0;        //-40度
  397.     max = 160;      //120度

  398.     for(j=0; j<5; j++)  //對分查表
  399.     {
  400.         k = min / 2 + max / 2;
  401.         if(adc <= p[k]) max = k;
  402.         else            min = k;
  403.     }
  404.          if(adc == p[min])  i = min * D_SCALE;
  405.     else if(adc == p[max])  i = max * D_SCALE;
  406.     else    // min < temp < max
  407.     {
  408.         while(min <= max)
  409.         {
  410.             min++;
  411.             if(adc == p[min])   {i = min * D_SCALE; break;}
  412.             else if(adc < p[min])
  413.             {
  414.                 min--;
  415.                 i = p[min]; //min
  416.                 j = (adc - i) * D_SCALE / (p[min+1] - i);
  417.                 i = min;
  418.                 i *= D_SCALE;
  419.                 i += j;
  420.                 break;
  421.             }
  422.         }
  423.     }
  424.     return i;
  425. }

  426. /********************** 顯示掃描函數 ************************/
  427. void DisplayScan(void)
  428. {   
  429.                 P7 = ~T_COM[7-display_index];
  430.                 P6 = ~t_display[LED8[display_index]];
  431.     if(++display_index >= 8)    display_index = 0;  //8位結束回0
  432. }


  433. /********************** Timer0 1ms中斷函數 ************************/
  434. void timer0 (void) interrupt 1
  435. {
  436.     DisplayScan();  //1ms掃描顯示一位
  437.     B_1ms = 1;      //1ms標志
  438. }
復制代碼

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美一区二区三区另类精品 | 国产精品久久久久久久久久免费看 | 99视频在线免费观看 | 日韩 欧美 二区 | www.欧美.com| 午夜在线精品 | 精品国产一区二区三区免费 | 精品国产乱码久久久久久蜜柚 | 免费午夜视频在线观看 | 精品国产第一区二区三区 | 日本免费一区二区三区视频 | 免费一区二区三区 | 中文字幕日韩欧美一区二区三区 | 婷婷亚洲综合 | 日韩中文一区二区三区 | 91深夜福利视频 | 精品一区二区三区四区外站 | 日韩免费视频 | 一级毛片播放 | 视频1区| 狠狠躁天天躁夜夜躁婷婷老牛影视 | 国产在线观看一区二区三区 | 99久久视频 | 国产视频福利一区 | 日本黄色高清视频 | 久久99精品久久久久久 | 欧美日韩视频 | 中文字幕99 | 久久久久亚洲视频 | 在线观看视频91 | 天天夜碰日日摸日日澡 | 日本免费一区二区三区 | 色婷婷狠狠 | 亚洲精品二区 | 国内精品久久久久 | 免费在线观看成人 | 亚洲国产精品久久久 | 久操伊人 | 黄色免费网址大全 | 欧美精品在线视频 | 国产在线1 |