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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5031|回復: 14
收起左側

單片機NTC溫度控制C語言程序 業余級別,只能編成這個樣子了

[復制鏈接]
ID:366464 發表于 2021-9-2 14:47 | 顯示全部樓層 |閱讀模式
30黑幣
NTC熱敏電阻溫度控制程序C 業余級別,只能編成這個樣子了,根據這個神貼改的!已改好!控制口還沒設置!

51hei截圖20210902143658858.jpg

NTC10K溫度計NTC.rar

2.35 MB, 下載次數: 73

回復

使用道具 舉報

ID:155507 發表于 2021-9-2 15:48 | 顯示全部樓層
麻煩你清楚的描述你的要求可以嗎

問問題要提供背景資料  用啥單片機? 有啥外設? 用什么電源? 代碼怎么寫?
如果有問題,必須說出是什么樣子,又要達到什么樣子?




http://www.zg4o1577.cn/bbs/dpj-57255-1.html

回復

使用道具 舉報

ID:366464 發表于 2021-9-2 16:55 來自觸屏版 | 顯示全部樓層
angmall 發表于 2021-9-2 15:48
麻煩你清楚的描述你的要求可以嗎

問問題要提供背景資料  用啥單片機? 有啥外設? 用什么電源? 代碼怎 ...

STC15w408as添加按鍵控制溫度上下限,調節上下限后閃爍后保存后顯示實際溫度!按鍵已定義好!所有文件在壓縮包里!業余級,添加按鍵程序不顯示!
回復

使用道具 舉報

ID:161164 發表于 2021-9-2 18:01 | 顯示全部樓層
本帖最后由 lkc8210 于 2021-9-2 18:03 編輯
zuiqf1978 發表于 2021-9-2 16:55
STC15w408as添加按鍵控制溫度上下限,調節上下限后閃爍后保存后顯示實際溫度!按鍵已定義好!所有文件在 ...
  1.             for(i=0; i<2; i++)                        //設定溫度閃爍顯示,用來指示設定溫度過程
  2.             {   //實際溫度常量

  3.                 if( i==0 )                                //設定溫度顯示
  4.                     for(j=0; j<20; j++)
  5.                     {
  6.                         diplay_data (4,disdata[SetT/100]);//溫度十位//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  7.                         diplay_data (3,disdata[SetT/10]);//溫度十位//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  8.                         diplay_data (2,disdata[SetT%10]);//溫度個位//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  9.                         diplay_data (1,disdata[17]);//溫度符號℃
  10.                     }

  11.                 if( i==1 )                                   //設定溫度不顯示
  12.                     for(j=0; j<20; j++)
  13.                     {
  14.                         delay1ms();
  15.                         delay1ms();
復制代碼


回復

使用道具 舉報

ID:366464 發表于 2021-9-2 21:00 | 顯示全部樓層

不能顯示,無顯示!原貼KEX可以顯示溫度!但無按鍵!

  1. #define MAIN_Fosc 24000000L
  2. #include <STC15W.h>//STC15W408AS頭文件
  3. #include <intrins.h>
  4. sbit Key_Tup = P3^1;
  5. sbit Key_Tdown = P3^2;
  6. sbit Key_Confirm = P3^3;
  7. unsigned int NTC_R;//定義熱敏電阻阻值變量
  8. unsigned char temperature;//定義溫度存儲變量
  9. unsigned int code Ttable[106][2]={//溫度與電阻阻值對應關系表格
  10. 0,3274,//0度對應阻值32.74k
  11. 1,3111,//1度對應阻值31.11k
  12. 2,2957,//2度對應阻值29.57k
  13. 3,2812,//
  14. 4,2674,//
  15. 5,2545,
  16. 6,2422,
  17. 7,2306,
  18. 8,2196,
  19. 9,2092,
  20. 10,1993,
  21. 11,1900,
  22. 12,1811,
  23. 13,1728,
  24. 14,1648,
  25. 15,1573,
  26. 16,1501,
  27. 17,1433,
  28. 18,1369,
  29. 19,1308,
  30. 20,1250,
  31. 21,1194,
  32. 22,1142,
  33. 23,1092,
  34. 24,1045,
  35. 25,1000,//25度對應阻值10k               
  36. 26,957,//26度對應阻值9.57k
  37. 27,916,
  38. 28,877,
  39. 29,840,
  40. 30,805,
  41. 31,771,
  42. 32,739,
  43. 33,709,
  44. 34,679,
  45. 35,652,
  46. 36,625,
  47. 37,600,
  48. 38,576,
  49. 39,553,
  50. 40,531,
  51. 41,510,
  52. 42,490,
  53. 43,471,
  54. 44,453,
  55. 45,435,
  56. 46,418,
  57. 47,402,
  58. 48,387,
  59. 49,372,
  60. 50,358,
  61. 51,345,
  62. 52,332,
  63. 53,320,
  64. 54,308,
  65. 55,297,
  66. 56,286,
  67. 57,276,
  68. 58,266,
  69. 59,256,
  70. 60,247,
  71. 61,238,
  72. 62,230,
  73. 63,222,
  74. 64,214,
  75. 65,207,
  76. 66,199,
  77. 67,193,
  78. 68,186,
  79. 69,180,
  80. 70,174,
  81. 71,168,
  82. 72,162,
  83. 73,157,
  84. 74,        152,
  85. 75,        147,
  86. 76,        142,
  87. 77,        137,
  88. 78,        133,
  89. 79,        128,
  90. 80,        124,
  91. 81,        120,
  92. 82,        116,
  93. 83,        113,
  94. 84,        109,
  95. 85,        106,
  96. 86,        102,//86度對應阻值1.02k
  97. 87,        99,//87度對應阻值0.99k
  98. 88,        96,
  99. 89,        93,
  100. 90,        90,
  101. 91,        88,
  102. 92,        85,
  103. 93,        82,
  104. 94,        80,
  105. 95,        78,
  106. 96,        75,
  107. 97,        73,
  108. 98,        71,
  109. 99,        69,
  110. 100,67,
  111. 101,65,
  112. 102,63,
  113. 103,61,
  114. 104,59,
  115. 105,58//105度對應阻值0.58k
  116.          

  117. };        
  118. #include<4LED_YIN.H>//數碼管驅動顯示程序
  119. #include <BandGap.H>//包含讀單片機內部BandGap基準電壓值
  120. void T_dis(){//溫度處理函數采集到的阻值與二維數組的阻值進行比較,
  121.                //從而獲得相對應的溫度值。
  122.          unsigned char i;
  123.          for(i=105;i<106;i--)  {
  124.                 if(NTC_R >= Ttable[i][1] && NTC_R < Ttable[i-1][1]){
  125.                    temperature=(Ttable[i][0]+1);
  126.                    break;
  127.                 }
  128.         }
  129. }
  130. char SetT = 40;                           //設定溫度初始化為 40 攝氏度1!!!
  131. float RealT = 25;                          //實際溫度初始化為 25 攝氏度2!!!
  132. void SetTemperature();                //設定溫度 3!!!
  133. void KeyScan();                                  //按鍵掃描 4!!!
  134. void SetTdisp();                           //設定溫度顯示5!!!
  135. void RealTdisp();                        //實際溫度顯示6!!!

  136. /********************************/
  137. void main (void)
  138. {        Delay20ms();//待系統穩定
  139.     InitADC();//初始化ADC
  140.     P1M1=0X80;//P1.7高阻輸入
  141.         init();//IO口設置初始化
  142.         SetTdisp();                        //設定溫度顯示10!!!
  143.     while (1)
  144.    {
  145.    
  146.             SetTemperature();        //設定溫度8!!!
  147.                
  148.         ShowResult(7);//測量NTC熱敏電阻上的電壓并根據電壓計算出阻值
  149.                 T_dis();//測量到的阻值進行查表對比找到阻值對應的溫度值
  150.                 disp();        //數碼管顯示溫度值
  151.                
  152.                 RealTdisp();                //實際溫度顯示11!!!
  153.     }
  154.           }
  155.   void SetTemperature()                                        //設定溫度
  156. {
  157.         if( !(Key_Tup & Key_Tdown) )                 //檢測 升溫/降溫 按鍵是否按下
  158.         {                                                                        //進入設定溫度過程
  159.                 uchar i,j;
  160.                 do
  161.                 {
  162.                         KeyScan();                                           //按鍵掃描

  163.                         

  164.                         for(i=0;i<2;i++)                        //設定溫度閃爍顯示,用來指示設定溫度過程
  165.                         {                                                        //實際溫度常量

  166.                                 if( i==0 )                                //設定溫度顯示
  167.                                         for(j=0;j<20;j++)
  168.                                         {
  169.             diplay_data (4,disdata[SetT/100]);//溫度十位
  170.                 diplay_data (3,disdata[SetT/10]);//溫度十位
  171.                 diplay_data (2,disdata[SetT%10]);//溫度個位
  172.                 diplay_data (1,disdata[17]);//溫度符號℃
  173.                                         }
  174.                                 
  175.                                 if( i==1 )                                   //設定溫度不顯示
  176.                                         for(j=0;j<20;j++)
  177.                                         {
  178.                                                 delay1ms();
  179.                                                 delay1ms();
  180.                 diplay_data (4,disdata[SetT/100]);//溫度十位
  181.                 diplay_data (3,disdata[SetT/10]);//溫度十位
  182.                 diplay_data (2,disdata[SetT%10]);//溫度個位
  183.                 diplay_data (1,disdata[17]);//溫度符號℃        
  184.             
  185.             
  186.         
  187.                                         }
  188.                                                         
  189.                         }

  190.                 }while(Key_Confirm);                        //直到確認鍵按下,退出設定溫度過程

  191.         }

  192.         return;
  193. }

  194.     void KeyScan()                                                         //按鍵掃描
  195. {
  196.         static uchar flag = 0;                                   //設置標志位

  197.         if( !(Key_Tup & Key_Tdown) )                   //檢測 升溫/降溫 按鍵是否按下
  198.         {
  199.                 if(!flag)                                                   //標志位為0時才進行 升溫/降溫,產生延時效果
  200.                 {                                                                   //防止按鍵按下過程中        升溫/降溫 多次,同時不占用CPU
  201.                         if(!Key_Tup)                                   //升溫
  202.                         {
  203.                                 SetT++;
  204.                                 if(SetT > 99)
  205.                                         SetT = 0;
  206.                         }

  207.                         if(!Key_Tdown)                                   //降溫
  208.                         {
  209.                                 SetT--;
  210.                                 if(SetT < 0)
  211.                                         SetT = 0;
  212.                         }
  213.                 }
  214.                
  215.                 flag++;                                                        //標志位加一

  216.                 if(flag == 15);                                        //標志位加到15清零
  217.                         flag = 0;
  218.         }                        
  219.         else                                                                //無按鍵按下,標志位清零
  220.                 flag = 0;

  221.         return;
  222. }
  223.     void SetTdisp()                                                        //設定溫度顯示
  224. {                        unsigned int i;
  225.                  for(i=0;i<50;i++)
  226.     {
  227.                 diplay_data (4,disdata[SetT/100]);//溫度十位
  228.                 diplay_data (3,disdata[SetT/10]);//溫度十位
  229.                 diplay_data (2,disdata[SetT%10]);//溫度個位
  230.                 diplay_data (1,disdata[17]);//溫度符號℃        
  231.                 }
  232.         return;
  233. }

  234. void RealTdisp()                                                //實際溫度顯示
  235. {
  236.         unsigned int i;
  237.          for(i=0;i<50;i++){
  238.             diplay_data (4,disdata[temperature/100]);//溫度十位
  239.                 diplay_data (3,disdata[temperature/10]);//溫度十位
  240.                 diplay_data (2,disdata[temperature%10]);//溫度個位
  241.                 diplay_data (1,disdata[17]);//溫度符號℃
  242.         }
  243.         return;
  244. }        
復制代碼

回復

使用道具 舉報

ID:366464 發表于 2021-9-2 21:13 | 顯示全部樓層

修改了,還是不顯示!
回復

使用道具 舉報

ID:366464 發表于 2021-9-2 22:48 | 顯示全部樓層
已改好!
回復

使用道具 舉報

ID:161164 發表于 2021-9-3 00:58 | 顯示全部樓層

有原貼檔案嗎?

原貼是三位數碼管
你改為四位
新加那位用了P17
正好就是原來接NTC的ADC腳
那你現在用什么來收NTC?

新的數碼管顯示實在太啰嗦了

#define light 12         //設置LED顯示的亮度(值域:1~9)
注釋已經寫著1到9,你改成12結果就死循環了
回復

使用道具 舉報

ID:366464 發表于 2021-9-3 07:33 來自觸屏版 | 顯示全部樓層
發現了,太著急容易出錯!謝謝,第四位在3.3上
回復

使用道具 舉報

ID:366464 發表于 2021-9-3 07:35 來自觸屏版 | 顯示全部樓層
15w404As  20腳 IO口緊張,以前的手工板試試看!NTc是小黑頭!
回復

使用道具 舉報

ID:213173 發表于 2021-9-3 08:21 | 顯示全部樓層
給你一個示例,把DS18B20溫度值獲取函數用ADC替換即可滿足樓主意圖。
DS18B20溫度上下限報警STC1T單片機.zip (161.99 KB, 下載次數: 29)

回復

使用道具 舉報

ID:366464 發表于 2021-9-19 19:29 | 顯示全部樓層
通過ikc8210大神指導已改好!膜拜眾大師!
回復

使用道具 舉報

ID:366464 發表于 2021-9-23 01:59 | 顯示全部樓層
#define SET  P34                            //定義調整鍵
#define ADD  P35                            //定義增加鍵
#define DEC  P32                            //定義減少鍵
#define BEEP P23                            //定義蜂鳴器
#define limit_H P30                                //定義上限燈光報警
#define limit_L P31                                //定義下限燈光報警
#define DU   P20
#define WE   P21
uchar code  LEDData[]={                        //共陰數碼管段碼0~f-.
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71,
        0x40,0x80};
uchar code  wela[]={0xfe,0xfd,
0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共陰數碼管位碼
請問大師:DU  P20   WE  P21    是不是在段選和位選分別加了一個總開關?
回復

使用道具 舉報

ID:366464 發表于 2021-9-23 02:15 | 顯示全部樓層
位和段的解釋74HC573     附鏈接!https://blog.csdn.net/qq_38391994/article/details/107296514
回復

使用道具 舉報

ID:366464 發表于 2021-10-15 21:58 | 顯示全部樓層
非常感謝!   lkc8210    問題已解決!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕精品一区久久久久 | 手机av在线 | 国产免费看 | 久久精品欧美电影 | 91精品国产色综合久久不卡98口 | 国产精品无码久久久久 | 91国内精品久久 | 亚洲精品久久嫩草网站秘色 | 日韩中文字幕2019 | 蜜桃av鲁一鲁一鲁一鲁 | 日日天天 | 精品伦精品一区二区三区视频 | 亚洲精品久久久久久久久久久 | 国产在线不卡 | 午夜一区二区三区在线观看 | 国产亚洲成av人片在线观看桃 | 成人午夜在线 | 看片地址| 一区精品国产欧美在线 | 91色网站| 欧美成人一区二免费视频软件 | 性色视频在线观看 | 夜久久| 日韩在线电影 | 99视频网 | 国产在线激情视频 | 久久99精品久久久久久 | 久精品视频| 国产乱码精品一区二区三区av | 亚洲韩国精品 | 天天色官网 | 久久精品com | 伊人免费在线观看 | 日韩视频在线一区 | 久久久久久免费毛片精品 | 一区二区三区视频 | 亚洲性爰| 亚洲国产成人精品女人久久久 | 毛片a级 | 国产精品免费福利 | 男女网站免费观看 |