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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4026|回復: 35
收起左側

1寸LED時鐘修改的熱敏電阻溫度計顯示帶有鬼影 附單片機程序

  [復制鏈接]
ID:17109 發表于 2021-12-28 16:21 | 顯示全部樓層 |閱讀模式
原來是用4位LED顯示的時鐘修改的熱敏電阻溫度計
修改成通電就顯示溫度計 4位LED顯示正常,     修改去除. ds1302.c和ds1302.h .  熱敏電阻溫度顯示帶有鬼影    把     原來的程序   和修改的程序   放上給大家看看是那里出問題  那位師博能  看  修改后的程序那里出問題的,修改上傳一下謝謝
原來的程序顯示.jpg 修改的程序顯示.jpg

單片機源程序如下:
  1. #include <reg51.h>
  2. #include <math.h>
  3. #include "ADC.H"

  4. sbit LED1      = P3 ^ 7;//數碼管1
  5. sbit LED2      = P3 ^ 6;//數碼管2
  6. sbit LED3      = P3 ^ 5;//數碼管3
  7. sbit LED4      = P3 ^ 4;//數碼管4

  8. //為了編程方便定義的位變量
  9. sbit a0   = ACC ^ 0;
  10. sbit a1   = ACC ^ 1;
  11. sbit a2   = ACC ^ 2;
  12. sbit a3   = ACC ^ 3;
  13. sbit a4   = ACC ^ 4;
  14. sbit a5   = ACC ^ 5;
  15. sbit a6   = ACC ^ 6;
  16. sbit a7   = ACC ^ 7;

  17. sfr AUXR        =   0x8E;   //0000,0000 輔助寄存器
  18. sfr P3M1        =   0xB1;
  19. sfr P3M0        =   0xB2;

  20. bit flag,dot_Bell=1;//鬧鐘調時閃爍標志位
  21. unsigned char id=1;
  22. unsigned char disbuff[4]        ={0};
  23. unsigned char time=0;
  24. unsigned int temp[1];
  25. unsigned int temp_num = 0;

  26. unsigned char code LEDData1 [ ] = {  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff }; //正0-9LED數值
  27. unsigned char code LEDData2 [ ] = {  0xc0,0xcf,0xA4,0x86,0x8B,0x92,0x90,0xc7,0x80,0x82,0xff }; //反0-9LED數值

  28. void Delayms(unsigned int di) //延時
  29. {
  30.         unsigned int da,db;
  31.          for(da=0;da<di;da++)
  32.                    for(db=0;db<10;db++);
  33. }

  34. void Display(void)  //掃描方式led1~led4循環點亮
  35. {
  36.    time++;
  37.    if(time==1)
  38.    {  
  39.                          if(dot_Bell)
  40.                  {
  41.                                  P2=LEDData1[disbuff[0]]&0x7f;// 0x7F點亮DP小數點
  42.                                  LED1=0; LED4=1;
  43.                  }
  44.                          else
  45.                  {
  46.                                  P2=LEDData1[disbuff[0]];
  47.                                  LED1=0; LED4=1;
  48.                  }
  49.    }

  50.    if(time==2)
  51.    {
  52.                                 if(id>=3)
  53.                         {
  54.                          P2=(LEDData2[disbuff[1]])&0x7F;
  55.                                  LED1=1; LED2=0;
  56.                         }
  57.                         else
  58.                                 if(flag)
  59.                          {
  60.                                  P2=(LEDData2[disbuff[1]])&0x7F;
  61.                                  LED1=1; LED2=0;
  62.                          }
  63.                  else
  64.                  {
  65.                          P2=LEDData2[disbuff[1]];
  66.                                  LED1=1; LED2=0;
  67.                  }
  68.    }

  69.    if(time==3)
  70.    {
  71.      if(id>=3)
  72.           {
  73.          P2=LEDData1[disbuff[2]]&0x7f;
  74.          LED2=1; LED3=0;
  75.       }

  76.       else               
  77.       if(flag)
  78.           {
  79.          P2=LEDData1[disbuff[2]]&0x7f;
  80.          LED2=1; LED3=0;
  81.       }
  82.           else
  83.           {
  84.          P2=LEDData1[disbuff[2]];
  85.          LED2=1; LED3=0;
  86.       }
  87.         }
  88.          
  89.    if(time==4)
  90.    {
  91.      time=0;
  92.      if(disbuff[3]==0)
  93.     {
  94.       P2=LEDData1[10];
  95.       LED3=1; LED4=0;
  96.     }
  97.      else
  98.     {
  99.                 P2=LEDData1[disbuff[3]];
  100.         LED3=1; LED4=0;
  101.         }
  102.    }
  103. }



  104. /******************************************************************************/

  105. void Timer1Init(void)                //20毫秒@12.000MHz
  106. {
  107.         AUXR &= 0xBF;                //定時器時鐘12T模式
  108.         TMOD &= 0x0F;                //設置定時器模式        
  109.         TL1 = 0xE0;                //設置定時初值
  110.         TH1 = 0xB1;                //設置定時初值
  111.         TF1 = 0;                //清除TF1標志
  112.         TR1 = 1;                //定時器1開始計時        
  113. }

  114. /******************************************************************************/


  115. void Timer1(void) interrupt 3 using 1
  116. {
  117.         temp_num++;
  118.         if(temp_num > 40)
  119.         {
  120.                 temp_num = 0;
  121.         }
  122.         
  123. }

  124. void ADC_convert(void)
  125. {
  126.         ET0 = 0;
  127.         if(temp_num == 0)
  128.         {
  129.                 GetADCResult(6,&temp[0]);
  130.           temp[0]=(unsigned int) ((1/(log(((float)temp[0]*4700/(1024-(float)temp[0]))/10000)/3950+1/298.15)-273.15)*100);
  131.                 temp_num = 1;
  132.         }
  133.                         
  134.         P2 = LEDData1[temp[0]/1000]; //千位
  135.         LED4 = 0;
  136.         Delayms(50);
  137.         LED4 = 1;
  138.         P2 = (LEDData1[temp[0]%1000/100])&0x7F;//百位
  139.         LED3 = 0;
  140.         Delayms(50);
  141.         LED3 = 1;
  142.         P2 = LEDData2[temp[0]%1000%100/10];//十位
  143.         LED2 = 0;
  144.         Delayms(50);
  145.         LED2 = 1;
  146.         P2 = 0xa7;//c
  147.         LED1 = 0;
  148.   Delayms(50);
  149.         LED1 = 1;
  150.         ET1 = 1;//啟動定時器1
  151. }

  152. /******************************************************************************/
  153. void main(void)//主函數
  154. {

  155.   P3M1=0x00;
  156.         P3M0=0x08;
  157.         InitADC(); //初始化ADC
  158.         Timer1Init();
  159.         EA=1;
  160.         while(1)//主循環
  161.          {         
  162.                   Display();
  163.              switch( id )
  164.               {
  165.                                         case 1:ADC_convert();break;//顯示溫度        
  166.                  default:break;        
  167.               }
  168.         }//while
  169. }//main
復制代碼

原來的程序.rar

593.54 KB, 下載次數: 21

修改的程序.zip

76.13 KB, 下載次數: 15

回復

使用道具 舉報

ID:301191 發表于 2021-12-29 05:13 | 顯示全部樓層
頂一下
回復

使用道具 舉報

ID:844772 發表于 2021-12-29 08:57 | 顯示全部樓層
剔除了時間,那就把 main()里的 Display();刪除,ADC_convert();本身就能顯示啊。
回復

使用道具 舉報

ID:213173 發表于 2021-12-29 09:35 | 顯示全部樓層
樓主顯示函數寫得有點復雜,自己也會看花眼,先簡化再加一句消隱即可。 無標題.jpg

  1. #include <reg51.h>
  2. #include <math.h>
  3. #include "ADC.H"
  4. /*
  5. sbit LED1      = P3 ^ 7;//數碼管1
  6. sbit LED2      = P3 ^ 6;//數碼管2
  7. sbit LED3      = P3 ^ 5;//數碼管3
  8. sbit LED4      = P3 ^ 4;//數碼管4
  9. */
  10. sfr AUXR        =   0x8E;   //0000,0000 輔助寄存器
  11. sfr P3M1        =   0xB1;
  12. sfr P3M0        =   0xB2;

  13. unsigned char time=0;
  14. unsigned char code LEDData1[ ] = {  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff }; //正0-9LED數值
  15. unsigned char code LEDData2[ ] = {  0xc0,0xcf,0xa4,0x86,0x8B,0x92,0x90,0xc7,0x80,0x82,0xff }; //反0-9LED數值
  16. unsigned char data disbuff[4];
  17. unsigned int  temp[1];

  18. /******************************************************************************/
  19. void Timer1Init(void)                //2毫秒@12.000MHz
  20. {
  21.         AUXR |= 0x40;                //定時器時鐘1T模式
  22.         TMOD &= 0x0F;                //設置定時器模式
  23.         TL1 = 0x40;                //設置定時初始值
  24.         TH1 = 0xA2;                //設置定時初始值
  25.         TF1 = 0;                //清除TF1標志
  26.         TR1 = 1;                //定時器1開始計時
  27. }

  28. void ADC_convert(void)
  29. {
  30.         if(temp_num == 0)
  31.         {
  32.                 GetADCResult(6,&temp[0]);
  33.                 Temp=(unsigned int) ((1/(log(((float)temp[0]*4700/(1024-(float)temp[0]))/10000)/3950+1/298.15)-273.15)*100);
  34.                 temp_num = 1;
  35.         }
  36. }

  37. void Display(void)  //掃描方式led1~led4循環點亮
  38. {
  39.         disbuff[0]=0x70;//.C
  40.         disbuff[1]=LEDData2[temp[0]/10%10];
  41.         disbuff[2]=LEDData1[temp[0]/100%10]&0x7f;
  42.         disbuff[3]=LEDData1[temp[0]/1000%10];

  43.         P3|=0xf0;//消隱
  44.         P2=disbuff[time];//段碼
  45.         P3&=~(0x10<<time);//位碼

  46.         time=++time%4;
  47. }
  48. /******************************************************************************/
  49. void main(void)//主函數
  50. {
  51.         P3M1=0x00;
  52.         P3M0=0x08;
  53.         InitADC(); //初始化ADC
  54.         Timer1Init();
  55.         while(1)//主循環
  56.         {         
  57.                 if(TF1)//查詢T1中斷請求標志
  58.                 {
  59.                         TF1=0;//清0 TF1標志
  60.                         ADC_convert()//讀取ADC并轉換為溫度值
  61.                         Display();//動態數碼管顯示
  62.                 }
  63.         }//while
  64. }//main
復制代碼



回復

使用道具 舉報

ID:488334 發表于 2021-12-29 10:32 | 顯示全部樓層
建議你顯示和溫度數值處理分開做,顯示就做顯示,放在一定的時間內例如1ms。main函數里面的while(1ms標志位)循環加一個1ms的標志位,1ms時間夠程序跑完的,數碼管也可以均勻亮度,如果覺得亮度不夠,就改成100us,甚至可以10us放在中斷里面顯示。
回復

使用道具 舉報

ID:17109 發表于 2021-12-29 20:54 來自觸屏版 | 顯示全部樓層
wulin 發表于 2021-12-29 09:35
樓主顯示函數寫得有點復雜,自己也會看花眼,先簡化再加一句消隱即可。

師傅你好,可以編譯打包發上嗎?謝謝
回復

使用道具 舉報

ID:883242 發表于 2021-12-29 21:00 | 顯示全部樓層
ll13536121668 發表于 2021-12-29 20:54
師傅你好,可以編譯打包發上嗎?謝謝

按下“復制代碼”,然后新建一個空文件,Ctrl-V即可。
回復

使用道具 舉報

ID:17109 發表于 2021-12-30 10:56 | 顯示全部樓層
wulin 發表于 2021-12-29 09:35
樓主顯示函數寫得有點復雜,自己也會看花眼,先簡化再加一句消隱即可。

我新建試過不知道是否出錯 編譯不到

師傅你好,可以編譯打包發上嗎?謝謝
回復

使用道具 舉報

ID:298123 發表于 2021-12-30 13:48 | 顯示全部樓層
定時器中斷去掃描顯示,這樣就不會被別的打斷或者延遲。掃描頻率足夠就行
回復

使用道具 舉報

ID:998586 發表于 2021-12-30 14:15 | 顯示全部樓層
增加消隱。一般電子原件都有寄生電容,關閉LED要電平翻轉一下。
回復

使用道具 舉報

ID:17109 發表于 2022-1-4 14:07 來自觸屏版 | 顯示全部樓層
wulin 發表于 2021-12-29 09:35
樓主顯示函數寫得有點復雜,自己也會看花眼,先簡化再加一句消隱即可。

師傅你好,可以編譯打包發上嗎?謝謝
回復

使用道具 舉報

ID:161164 發表于 2022-1-4 15:18 | 顯示全部樓層
ll13536121668 發表于 2021-12-30 10:56
我新建試過不知道是否出錯 編譯不到

師傅你好,可以編譯打包發上嗎?謝謝

不是人人都有那個"ADC.h"頭文擋
編譯打包不了

學編程就要學懂看錯誤信息
把編譯器的錯誤信息貼上來看看
回復

使用道具 舉報

ID:123289 發表于 2022-1-4 15:45 | 顯示全部樓層
記住:改變顯示內容時,讓LED全黑就可以了。
回復

使用道具 舉報

ID:213173 發表于 2022-1-4 16:02 | 顯示全部樓層
ll13536121668 發表于 2022-1-4 14:07
師傅你好,可以編譯打包發上嗎?謝謝

這段代碼只是在你貼的代碼基礎上改寫的,你的ADC_convert(void)函數計算很復雜,我沒有驗證是否正確。仿真也是屏蔽了ADC_convert(void)函數,定時器更改為51/12T 2ms,虛擬一個4位數的ADC返回值temp=1234,目的只是解決你的特殊用法4位數碼管的鬼影問題。代碼是隨手寫的,沒有保存。如果你對這個仿真有興趣可以給你重新寫一個。
回復

使用道具 舉報

ID:17109 發表于 2022-1-4 21:55 來自觸屏版 | 顯示全部樓層
這樣就感謝老師傅,編澤打包發上
回復

使用道具 舉報

ID:213173 發表于 2022-1-5 08:45 | 顯示全部樓層
ll13536121668 發表于 2022-1-4 21:55
這樣就感謝老師傅,編澤打包發上

兩個文件對比一下很容易看明白,可以用ADC測溫函數取代DS18b20函數。

改寫前的文件 4位數碼管時鐘溫度表仿真.rar (175.41 KB, 下載次數: 7)

改寫后的文件 4位反向數碼管時鐘溫度表仿真.rar (177.51 KB, 下載次數: 8)
回復

使用道具 舉報

ID:17109 發表于 2022-1-11 11:55 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-5 08:45
兩個文件對比一下很容易看明白,可以用ADC測溫函數取代DS18b20函數。

改寫前的文件

師傅你好,能用你簡化后貼出
的代碼,用我的AD.C生成可用程序打包上傳嗎?謝謝
回復

使用道具 舉報

ID:526543 發表于 2022-1-11 13:42 | 顯示全部樓層

建議你顯示和溫度數值處理分開做,顯示就做顯示,放在一定的時間內例如1ms。main函數里面的while(1ms標志位)循環加一個1ms的標志位,1ms時間夠程序跑完的,數碼管也可以均勻亮度,如果覺得亮度不夠,就改成100us,甚至可以10us放在中斷里面顯示。
回復

使用道具 舉報

ID:17109 發表于 2022-1-12 20:15 來自觸屏版 | 顯示全部樓層
123456ZXC1 發表于 2022-1-11 13:42
建議你顯示和溫度數值處理分開做,顯示就做顯示,放在一定的時間內例如1ms。main函數里面的while(1ms標 ...


師傅你好,能用你簡化后貼出
的代碼,用我的AD.C生成可用程序打包上傳嗎
回復

使用道具 舉報

ID:213173 發表于 2022-1-12 22:22 | 顯示全部樓層
ll13536121668 發表于 2022-1-11 11:55
師傅你好,能用你簡化后貼出
的代碼,用我的AD.C生成可用程序打包上傳嗎?謝謝

給你重新寫了一個簡化的程序,用的是你的ADC代碼。你的溫度計算公式的出處是在哪里找來的?沒有外圍硬件圖根本無法判斷是否可用。現在是注釋掉的,顯示函數直接顯示ADC轉換值,不是溫度值。從你的代碼不能正確判斷MCU型號,簡化的程序適用于STC12/STC15系列。
測試程序.rar (12.91 KB, 下載次數: 7)

  1. #include <reg51.h>
  2. #include <intrins.h>

  3. sfr AUXR = 0x8E;
  4. sfr P0M0 = 0x94; //
  5. sfr P0M1 = 0x93; //
  6. sfr P1M0 = 0x92; //  
  7. sfr P1M1 = 0x91;
  8. sfr P2M0 = 0x96; //   
  9. sfr P2M1 = 0x95; //  
  10. sfr P3M0 = 0xB2; //
  11. sfr P3M1 = 0xB1; //
  12. sfr P4   = 0xC0;
  13. sfr P4M0 = 0xB4; //
  14. sfr P4M1 = 0xB3; //
  15. sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器
  16. sfr ADC_RES     =   0xBD;           //ADC高8位結果
  17. sfr ADC_LOW2    =   0xBE;           //ADC低2位結果
  18. sfr P1ASF       =   0x9D;           //P1口第2功能控制寄存器
  19. /*
  20. sbit LED1      = P3 ^ 7;//數碼管1
  21. sbit LED2      = P3 ^ 6;//數碼管2
  22. sbit LED3      = P3 ^ 5;//數碼管3
  23. sbit LED4      = P3 ^ 4;//數碼管4
  24. */
  25. #define ADC_POWER   0x80            //ADC電源控制位
  26. #define ADC_FLAG    0x10            //ADC完成標志
  27. #define ADC_START   0x08            //ADC起始控制位
  28. #define ADC_SPEEDLL 0x00            //540個時鐘
  29. #define ADC_SPEEDL  0x20            //360個時鐘
  30. #define ADC_SPEEDH  0x40            //180個時鐘
  31. #define ADC_SPEEDHH 0x60            //90個時鐘

  32. #define ADC_Channel        6                        //選擇ADC通道110 將P1.6為溫度接口

  33. unsigned char disbuff[4]={0};
  34. unsigned char time=0;
  35. unsigned int temp[1];
  36. unsigned char code LEDData1 [ ] = {  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff }; //正0-9LED數值
  37. unsigned char code LEDData2 [ ] = {  0xc0,0xcf,0xA4,0x86,0x8B,0x92,0x90,0xc7,0x80,0x82,0xff }; //反0-9LED數值

  38. void GetADCResult(unsigned char ch,unsigned int *value);
  39. void InitADC(void);
  40. void ADC_convert(void);
  41. void Timer0Init(void);
  42. /*----------------------------
  43. Get ADC result
  44. ----------------------------*/
  45. void GetADCResult(unsigned char ch,unsigned int *value)
  46. {
  47.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  48.     _nop_();                        //Must wait before inquiry
  49.     _nop_();
  50.     _nop_();
  51.     _nop_();
  52.     _nop_();                        //Must wait before inquiry
  53.     _nop_();
  54.     while(!(ADC_CONTR & ADC_FLAG));//Wait complete flag
  55.     ADC_CONTR &= ~ADC_FLAG;         //Close ADC

  56.         *value = 0;
  57.         *value = ADC_RES;
  58.         *value = ((*value)*4 + ADC_LOW2);                //Return ADC result.×¢êíμ?′????ò·μ??8??ADC?á1?
  59. }
  60. /*----------------------------
  61. Initial ADC sfr
  62. ----------------------------*/
  63. void InitADC(void)
  64. {
  65.         P1ASF = 0x40;                        //Open channels ADC function 0100 0000 p1.6使用AD功能
  66.         ADC_RES  = 0;                                    //Clear previous result
  67.         ADC_LOW2 = 0;
  68.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL;        //ADC power-on and dela
  69. }
  70. /******************************************************************************/
  71. void Display(void)  //掃描方式led1~led4循環點亮
  72. {
  73.         disbuff[0]=0x70;//.C
  74.         disbuff[1]=LEDData2[temp[0]/10%10];
  75.         disbuff[2]=LEDData1[temp[0]/100%10]&0x7f;
  76.         disbuff[3]=LEDData1[temp[0]/1000%10];
  77.        
  78.         P3|=0xf0;//消隱
  79.         P2=disbuff[time];//段碼
  80.         P3&=~(0x10<<time);//位碼
  81.        
  82.         time=++time%4;
  83. }
  84. /******************************************************************************/
  85. void Timer0Init(void)                //5毫秒@11.0592MHz
  86. {
  87.         AUXR |= 0x80;                //定時器時鐘1T模式
  88.         TMOD &= 0xF0;                //設置定時器模式
  89.         TL0 = 0x00;                //設置定時初始值
  90.         TH0 = 0x28;                //設置定時初始值
  91.         TF0 = 0;                //清除TF0標志
  92.         TR0 = 1;                //定時器0開始計時
  93. }
  94. /******************************************************************************/
  95. void ADC_convert(void)
  96. {
  97.         GetADCResult(6,&temp[0]);       
  98. // 此處計算方法有問題,log是什么鬼?temp[0]保存的是ADC結果,數據范圍0~1023,代入顯示函數可以正常顯示ADC結果
  99. //        temp[0]=(unsigned int) ((1/(log(((float)temp[0]*4700/(1024-(float)temp[0]))/10000)/3950+1/298.15)-273.15)*100);               
  100. }
  101. /******************************************************************************/
  102. void main(void)//主函數
  103. {
  104.         P0M0 = 0x00;
  105.         P0M1 = 0x00;
  106.         P1M0 = 0x00;
  107.         P1M1 = 0x40;
  108.         P2M0 = 0x00;
  109.         P2M1 = 0x00;
  110.         P3M0 = 0x00;
  111.         P3M1 = 0x00;
  112.         P4M0 = 0x00;
  113.         P4M1 = 0x00;
  114.         InitADC(); //初始化ADC
  115.         Timer0Init();//定時器T0初始化
  116.         while(1)//主循環
  117.         {       
  118.                 if(TF0)
  119.                 {
  120.                         TF0=0;
  121.                         ADC_convert();
  122.                         Display();
  123.                 }
  124.         }
  125. }
復制代碼




回復

使用道具 舉報

ID:17109 發表于 2022-1-14 21:49 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-12 22:22
給你重新寫了一個簡化的程序,用的是你的ADC代碼。你的溫度計算公式的出處是在哪里找來的?沒有外圍硬件 ...

師傅測試了你的程序能顯示,不能測溫,拍電路你看看是否正確
1642167869754.jpg
回復

使用道具 舉報

ID:17109 發表于 2022-1-14 21:52 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-12 22:22
給你重新寫了一個簡化的程序,用的是你的ADC代碼。你的溫度計算公式的出處是在哪里找來的?沒有外圍硬件 ...

測試的圖片
IMG_20220114_211023.jpg
回復

使用道具 舉報

ID:17109 發表于 2022-1-14 21:54 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-12 22:22
給你重新寫了一個簡化的程序,用的是你的ADC代碼。你的溫度計算公式的出處是在哪里找來的?沒有外圍硬件 ...

電路圖
IMG_20220114_215324.jpg
回復

使用道具 舉報

ID:213173 發表于 2022-1-14 22:55 | 顯示全部樓層

如果顯示的數字能隨溫度傳感器變化就算能檢測溫度,傳感器輸出的是電壓值變化,需要用合適的計算方法轉換成溫度值。不知道你這計算方法哪來的? temp[0]=(unsigned int) ((1/(log(((float)temp[0]*4700/(1024-(float)temp[0]))/10000)/3950+1/298.15)-273.15)*100);
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 00:45 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-14 22:55
如果顯示的數字能隨溫度傳感器變化就算能檢測溫度,傳感器輸出的是電壓值變化,需要用合適的計算方法轉換 ...

把這段加入
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 00:56 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-14 22:55
如果顯示的數字能隨溫度傳感器變化就算能檢測溫度,傳感器輸出的是電壓值變化,需要用合適的計算方法轉換 ...

師傅,編寫一個合理的程序,帶測溫的可以嗎?
回復

使用道具 舉報

ID:213173 發表于 2022-1-15 08:08 | 顯示全部樓層
ll13536121668 發表于 2022-1-15 00:56
師傅,編寫一個合理的程序,帶測溫的可以嗎?

難道這個不合理?難道這個不能測溫?NTC熱敏電阻規格眾多,B值各不相同,溫阻曲線呈非線性,分壓電阻需要按測溫范圍取值。幾乎不可能僅憑一個通用公式計算就能制作一款能實用的溫度計!
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 12:30 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-15 08:08
難道這個不合理?難道這個不能測溫?NTC熱敏電阻規格眾多,B值各不相同,溫阻曲線呈非線性,分壓電阻需要 ...

能顯示,但是不能測溫
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 12:33 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-15 08:08
難道這個不合理?難道這個不能測溫?NTC熱敏電阻規格眾多,B值各不相同,溫阻曲線呈非線性,分壓電阻需要 ...

把注釋掉的重新開啟就編譯不到了
IMG_20220115_121552.jpg
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 14:37 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-15 08:08
難道這個不合理?難道這個不能測溫?NTC熱敏電阻規格眾多,B值各不相同,溫阻曲線呈非線性,分壓電阻需要 ...

編譯不到
IMG_20220115_121549.jpg
回復

使用道具 舉報

ID:213173 發表于 2022-1-15 15:15 | 顯示全部樓層

編譯不了要問你自己根據什么理由寫了這條代碼,log是什么玩意?
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 16:27 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-15 08:08
難道這個不合理?難道這個不能測溫?NTC熱敏電阻規格眾多,B值各不相同,溫阻曲線呈非線性,分壓電阻需要 ...

把注釋掉的重新開啟就編譯不到了
回復

使用道具 舉報

ID:17109 發表于 2022-1-15 21:43 來自觸屏版 | 顯示全部樓層
wulin 發表于 2022-1-15 15:15
編譯不了要問你自己根據什么理由寫了這條代碼,log是什么玩意?

師傅,看看要什么修改才能編繹成功,可以上傳過來嗎?謝謝
回復

使用道具 舉報

ID:213173 發表于 2022-1-16 10:45 | 顯示全部樓層
ll13536121668 發表于 2022-1-15 21:43
師傅,看看要什么修改才能編繹成功,可以上傳過來嗎?謝謝

你把這個程序看懂了用NTC測溫就成了。
-30~150度數碼管溫度計(對分查表法).rar (27.25 KB, 下載次數: 17)

回復

使用道具 舉報

ID:979299 發表于 2022-1-16 13:23 | 顯示全部樓層
用單片機做溫度計為什么不用18B20之類的采集呢,用NTC之類的不用單片機也可以做成溫度計的
回復

使用道具 舉報

ID:17109 發表于 2022-1-18 01:31 來自觸屏版 | 顯示全部樓層
興安xa 發表于 2022-1-16 13:23
用單片機做溫度計為什么不用18B20之類的采集呢,用NTC之類的不用單片機也可以做成溫度計的

不用單片機的NTC溫度計,電路圖有嗎?上傳上來看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级久久 | 操操网站 | 亚洲欧美日韩精品久久亚洲区 | 国产精品久久久久久吹潮 | 精品福利在线 | 精品日韩 | 亚洲一区导航 | aaa一区| av中文字幕网| 久久天天综合 | 亚洲人成人一区二区在线观看 | 亚洲一区高清 | 欧美日韩久久 | 日韩欧美国产电影 | 欧美视频1区| dy天堂| 美女视频黄色的 | 天天色天天射天天干 | 91久久久精品国产一区二区蜜臀 | 久久精品久久久久久 | 国产精品麻 | 曰批视频在线观看 | 成人福利在线观看 | h视频免费在线观看 | 欧美视频xxx | 国产精品久久久久久52avav | 欧美日韩一区二区在线 | 国产污视频在线 | 成人免费观看男女羞羞视频 | 精品国产精品国产偷麻豆 | 亚洲精彩视频在线观看 | 亚洲一区二区在线播放 | 欧美日韩大陆 | 日本高清不卡视频 | av免费在线观看网站 | 久久99深爱久久99精品 | 欧美精品久久久久久久久久 | 免费在线观看成人 | 精品欧美一区二区三区久久久 | 欧美日韩福利 | 精品一级电影 |