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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3810|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

基于51單片機的溫度報警系統(tǒng)設(shè)計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:856329 發(fā)表于 2022-3-18 10:19 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  設(shè)計中有很多不完善的地方,歡迎各位大佬指正。      演示視頻:https://www.bilibili.com/video/BV1CS4y1u7s6?share_source=copy_web

利用單片機、DS18B20溫度傳感器、數(shù)碼管、按鍵、蜂鳴器設(shè)計。編程時考慮數(shù)碼需要一直掃描,按鍵也需要一直掃描,DS18B20實時讀取溫度也需要實時掃描,這三個都放到主函數(shù)的while循環(huán)中,由于溫度讀取轉(zhuǎn)換時間比較長,數(shù)碼管就會一直閃爍。另外數(shù)碼管和按鍵都再主函數(shù)中掃描,按鍵按下時數(shù)碼管會熄滅。

最后,在一個定時器中斷中掃描數(shù)碼管,另一個定時器中斷讀取溫,主函數(shù)主要掃描按鍵和判斷溫度值是否超過上下限。

經(jīng)過不斷調(diào)試終于實現(xiàn)了所有的功能。

功能說明:

1.數(shù)碼管默認(rèn)顯示當(dāng)前溫度。默認(rèn)上限30℃,下限22℃

2.當(dāng)溫度高于上限,蜂鳴器報警,紅色LED點亮;低于下限,蜂

  鳴器報警,藍(lán)色LED點亮。

3.第一次點擊'設(shè)置'按鍵,數(shù)碼管第一位顯示H,此時點擊'加'

  '減'按鍵,調(diào)節(jié)溫度上限值。

  第二次點擊'設(shè)置'按鍵,數(shù)碼管第一位顯示L,此時點擊'加'

  '減'按鍵,調(diào)節(jié)溫度下限值。

  注意:在調(diào)節(jié)溫度上下限過程中,溫度報警關(guān)閉。

  第三次點擊'設(shè)置'按鍵,退出設(shè)置狀態(tài),打開溫度報警。

4.溫度傳感器測溫范圍:-55—128℃。

  溫度上下限調(diào)節(jié)范圍:-55—128℃。




主函數(shù) 單片機代碼如下:

  1. /******************************************************************************
  2. * 單片機溫度報警系統(tǒng)
  3. *******************************************************************************/
  4. #include <reg52.h>                        
  5. #include "delay.h"
  6. #include "key.h"
  7. #include "DS18B20.h"

  8. #define uchar unsigned char         //對數(shù)據(jù)類型定義
  9. #define uint  unsigned int

  10. /****************************端口定義******************************************/

  11. sbit D1=P2^4;
  12. sbit D2=P2^6;
  13. sbit D3=P2^5;
  14. sbit D4=P2^7;
  15.                                  
  16. sbit Beep=P1^6;                                  //蜂鳴器
  17. sbit LED_G=P1^2;                        //綠色LED端口
  18. sbit LED_B=P1^0;                        //藍(lán)色LED端口
  19. sbit LED_R=P1^1;                        //紅色LED端口                                 
  20. /****************************定義變量******************************************/
  21. uchar KeyValve=0;                        //按鍵值
  22. float Temp=20.0;                        //溫度變量
  23. float TH=30.0;                                   //溫度上限
  24. float TL=22.0;                                   //溫度下限
  25. uint  Time_Count=1;                 //定時器0中斷次數(shù)
  26. uchar Temp_Str[4];                       //數(shù)組變量存放溫度數(shù)據(jù)
  27. uchar Set_Mode=0;                        //設(shè)置模式
  28. uchar SMG_Data[4]={0,0,0,0}; //存放數(shù)碼管的各個位的值
  29. uchar code smgduan[]={                //共陽極數(shù)碼管段碼
  30.         0xc0,        //0,0
  31.         0xf9,        //1,1
  32.         0xa4,        //2,2
  33.         0xb0,        //3,3
  34.         0x99,        //4,4
  35.         0x92,        //5,5
  36.         0x82,        //6,6
  37.         0xf8,        //7,7
  38.         0x80,        //8,8
  39.         0x90,        //9,9
  40.         0x88,        //10,A
  41.         0x83,        //11,b
  42.         0xc6,        //12,C
  43.         0xa1,        //13,d
  44.         0x86,        //14,E
  45.         0x8e,        //15,F
  46.         0xff,        //16,
  47.         0xbf,        //17,
  48.         0x89,        //18,H
  49.         0xc7        //19,L         
  50. };
  51. /*****************************************************************************/
  52. /***************************函數(shù)聲明******************************************/
  53. void Timer_Init();                              //定時器初始化
  54. void Temp_T(float t);                         //溫度轉(zhuǎn)換函數(shù)
  55. /******************************************************************************
  56. * 函 數(shù) 名         : 主函數(shù)
  57. * 函數(shù)功能                   :
  58. * 輸    入         : 無
  59. * 輸    出         : 無
  60. *******************************************************************************/
  61. void main()
  62. {
  63.         DS18B20_Init();                                          //溫度傳感器初始化        
  64.         Timer_Init();                                           //定時器初始化
  65.         Delay_Ms(100);

  66.         while(1)
  67.         {
  68.                 /***********按鍵掃描程序**************/
  69.                 KeyValve=Key_Check();                   //掃描按鍵
  70.                 if(KeyValve!=0)                                  //判斷按鍵是否按下
  71.                 {
  72.                         switch(KeyValve)                   //判斷按鍵值,并處理
  73.                           {
  74.                                 case 1:                                //溫度上限/下限設(shè)置
  75.                                 {
  76.                                         if(Set_Mode<2)
  77.                                                 Set_Mode++;
  78.                                         else
  79.                                                 Set_Mode=0;                                       
  80.                                         Delay_Ms(200);
  81.                                 }
  82.                                 break;
  83.                                 case 2:                                                                //按鍵加        
  84.                                 {
  85.                                         if((Set_Mode==1)&&(TH<128.0))        //限制溫度上限小于128℃                                
  86.                                                 TH=TH+1.0;                                        //溫度上限加一                                                        
  87.                                         if((Set_Mode==2)&&(TL<TH))                //限制溫度下限小于溫度上限
  88.                                                 TL=TL+1.0;                                        //溫度下限加一
  89.                                         Delay_Ms(200);
  90.                                 }
  91.                                 break;
  92.                                 case 3:                                                                //按鍵減
  93.                                 {
  94.                                         if((Set_Mode==1)&&(TH>TL))                //限制溫度上限大于溫度下限                        
  95.                                                 TH=TH-1.0;                                        //溫度上限減一                                                        
  96.                                         if((Set_Mode==2)&&(TL>-55.0))        //限制溫度下限大于-55℃
  97.                                                 TL=TL-1.0;                                        //溫度下限減一
  98.                                         Delay_Ms(200);
  99.                                 }
  100.                                 break;
  101.                         }
  102.                 }
  103.                 /***********溫度上下限判斷報警程序**************/
  104.                 if(Set_Mode==0)
  105.                 {
  106.                         if(Temp>TH)
  107.                         {                                
  108.                                 LED_R=0;                //紅燈點亮
  109.                                 LED_B=1;                //藍(lán)燈熄滅
  110.                                 LED_G=1;
  111.                                 Beep=0;                        //蜂鳴器報警
  112.                         }
  113.                         else if(Temp<TL)
  114.                         {                                
  115.                                 LED_R=1;                //紅燈熄滅
  116.                                 LED_B=0;                //藍(lán)燈點亮
  117.                                 LED_G=1;
  118.                                 Beep=0;                        //蜂鳴器報警
  119.                         }
  120.                         else
  121.                         {
  122.                                 LED_R=1;                //紅燈熄滅
  123.                                 LED_B=1;                //藍(lán)燈熄滅
  124.                                 LED_G=0;
  125.                                 Beep=1;
  126.                         }                        
  127.                 }
  128.                 else
  129.                         Beep=1;               
  130.         }
  131. }
  132. /*******************************************************************************
  133. * 函 數(shù) 名         : Temp_T(float t)
  134. * 函數(shù)功能                   : 溫度轉(zhuǎn)換函數(shù):將溫度值放到數(shù)組中,便于顯示
  135. * 輸    入         : t
  136. * 輸    出         : 無
  137. *******************************************************************************/
  138. void Temp_T(float t)
  139. {
  140.         if(Set_Mode==0)
  141.         {
  142.                 t=t*10.0;                                                //放大十倍        
  143.                 if(t>=0)                                                   //正溫度
  144.                 {
  145.                 if(((int)t/1000)==0)
  146.                 SMG_Data[0]=16;
  147.                 else
  148.                 SMG_Data[0]=(int)t/1000;                //提取溫度百、十、個位
  149.                 SMG_Data[1]=((int)t%1000)/100;                        
  150.                 SMG_Data[2]=((int)t%100)/10;
  151.                 SMG_Data[3]=(int)t%10;
  152.                 }
  153.                 else                                                           //負(fù)溫度
  154.                 {               
  155.                 t=-t;                                                           //將負(fù)數(shù)轉(zhuǎn)換為正數(shù)
  156.                 SMG_Data[0]=17;                                        //顯示“—”號
  157.                 SMG_Data[1]=(int)t/100;                        //提取溫度個、十位
  158.                 SMG_Data[2]=((int)t%100)/10;
  159.                 SMG_Data[3]=(int)t%10;               
  160.                 }
  161.         }
  162.         else
  163.         {
  164.                 if(Set_Mode==1)
  165.                 SMG_Data[0]=18;                                           //數(shù)碼管第一位顯示H
  166.                 if(Set_Mode==2)
  167.                 SMG_Data[0]=19;                                           //數(shù)碼管第一位顯示L
  168.                 if(t>=0)                                                           //正溫度
  169.                 {               
  170.                 SMG_Data[1]=(int)t/100;                         //提取溫度百、十、個位
  171.                 SMG_Data[2]=((int)t%100)/10;
  172.                 SMG_Data[3]=(int)t%10;
  173.                 }
  174.                 else                                                                   //負(fù)溫度
  175.                 {
  176.                 t=-t;                                                           //將負(fù)數(shù)轉(zhuǎn)換為正數(shù)
  177.                 SMG_Data[1]=17;                                        //顯示“—”號
  178.                 SMG_Data[2]=((int)t%100)/10;        //提取溫度個、十位
  179.                 SMG_Data[3]=(int)t%10;
  180.                 t=-t;                                                           //將溫度恢復(fù)
  181.                 }
  182.         }
  183. }
  184. /*****************************************************************************
  185. * 函 數(shù) 名         : Timer_Init
  186. * 函數(shù)功能                   : 定時器初始化
  187. * 輸    入         : 無
  188. * 輸    出         : 無
  189. *****************************************************************************/
  190. void Timer_Init()
  191. {
  192.         TMOD=0x11;  //打開定時器0,工作方式1。        

  193.         TH0=0xff;        //給定時器0賦初值,定時200us (65536-200)/256 (65536-200)%256
  194.         TL0=0x38;

  195.         TH1=0xc5;   //定時60ms
  196.         TL1=0x68;

  197.         ET0=1;      //打開定時器0中斷允許
  198.         ET1=1;                //打開定時器1中斷允許

  199.         TR0=1;      //打開定時器0
  200.         TR1=1;      //打開定時器1               
  201.         PT1=1;            //高優(yōu)先級

  202.         EA=1;       //打開總中斷
  203. }
  204. /*******************************************************************************
  205. * 函 數(shù) 名         : void Timer0() interrupt 1
  206. * 函數(shù)功能                   : 定時器0中斷函數(shù)
  207. * 輸    入         : 無
  208. * 輸    出         : 無
  209. *******************************************************************************/
  210. void Timer0() interrupt 1
  211. {
  212.         TH0=0xff;         //給定時器賦初值,定時
  213.         TL0=0x38;

  214.         if(Time_Count%2==0)
  215.         {
  216.                 switch(Time_Count%8)         //位選,選擇點亮的數(shù)碼管,
  217.                 {
  218.                         case(0):
  219.                                 D1=0;
  220.                                 D2=1;
  221.                                 D3=1;
  222.                                 D4=1;
  223.                         break;//顯示第0位
  224.                         case(2):
  225.                                 D1=1;
  226.                                 D2=0;
  227.                                 D3=1;
  228.                                 D4=1;
  229.                         break;//顯示第1位
  230.                         case(4):
  231.                                 D1=1;
  232.                                 D2=1;
  233.                                 D3=0;
  234.                                 D4=1;
  235.                         break;//顯示第2位
  236.                         case(6):
  237.                                 D1=1;
  238.                                 D2=1;
  239.                                 D3=1;
  240.                                 D4=0;
  241.                         break;//顯示第3位        
  242.                 }
  243.                 if((Set_Mode==0)&&(Time_Count%8==4))
  244.                         P0=smgduan[SMG_Data[(Time_Count%8)/2]]-0x80;//顯示小數(shù)點
  245.                 P0=smgduan[SMG_Data[(Time_Count%8)/2]];//發(fā)送段碼
  246.         }
  247.         if(Time_Count%2==1)
  248.         {
  249.                 P0=0xff;//消隱
  250.         }
  251.         Time_Count++;
  252. }
  253. /*******************************************************************************
  254. * 函 數(shù) 名         : void Timer1() interrupt 3
  255. * 函數(shù)功能                   : 定時器1中斷函數(shù)
  256. * 輸    入         : 無
  257. * 輸    出         : 無
  258. *******************************************************************************/
  259. void Timer1() interrupt 3
  260. {
  261.         TH1=0xBB;           //定時15ms
  262.         TL1=0xa4;
  263.         if(Set_Mode==0)                                        //模式0:顯示當(dāng)前為溫度
  264.         {        
  265.                 Temp=DS18B20_ReadTemp();          //讀取溫度值
  266.                  Temp_T(Temp);                                   //溫度轉(zhuǎn)換
  267.         }
  268.         if(Set_Mode==1)                                        //模式1:顯示溫度上限
  269.                 Temp_T(TH);
  270.         if(Set_Mode==2)                                        //模式2:顯示溫度下限
  271.                 Temp_T(TL);
  272.                 Time_Count=0;
  273. }
復(fù)制代碼
DS18B20.c

  1. /******************************************************************************
  2. *文件描述:DS18B20溫度傳感器驅(qū)動文件
  3. *作    者:Xiaoyang
  4. *時    間:2021.05.30
  5. *******************************************************************************/
  6. #include"DS18B20.h"
  7. /*******************************************************************************
  8. * 函數(shù)名         : Delay1ms
  9. * 函數(shù)功能                 : 延時函數(shù)
  10. * 輸入           : 無
  11. * 輸出                  : 無
  12. *******************************************************************************/
  13. void Delay1ms(unsigned int y)
  14. {
  15.         unsigned int x;
  16.         for(y;y>0;y--)
  17.                 for(x=110;x>0;x--);
  18. }
  19. /*******************************************************************************
  20. * 函數(shù)名         : DS18B20_Init
  21. * 函數(shù)功能                 : 初始化
  22. * 輸入           : 無
  23. * 輸出                  : 初始化成功返回1,失敗返回0
  24. *******************************************************************************/
  25. unsigned char DS18B20_Init()
  26. {
  27.         unsigned int i;
  28.         DQ=0;                         //將總線拉低480us~960us
  29.         i=60;        
  30.         while(i--);//延時642us
  31.         DQ=1;                        //然后拉高總線,如果DS18B20做出反應(yīng)會將在15us~60us后總線拉低
  32.         i=0;
  33.         while(DQ)        //等待DS18B20拉低總線
  34.         {
  35.                 i++;
  36.                 if(i>5000)//等待>5MS
  37.                         return 0;//初始化失敗        
  38.         }
  39.         return 1;//初始化成功
  40. }
  41. /*******************************************************************************
  42. * 函數(shù)名         : DS18B20_WriteByte
  43. * 函數(shù)功能                 : 向18B20寫入一個字節(jié)
  44. * 輸入           : dat:寫入的字節(jié)
  45. * 輸出                  : 無
  46. *******************************************************************************/
  47. void DS18B20_WriteByte(unsigned char dat)
  48. {
  49.         unsigned int i,j;
  50.         for(j=0;j<8;j++)
  51.         {
  52.                 DQ=0;                        //每寫入一位數(shù)據(jù)之前先把總線拉低1us
  53.                 i++;
  54.                 DQ=dat&0x01; //然后寫入一個數(shù)據(jù),從最低位開始
  55.                 i=7;
  56.                 while(i--); //延時68us,持續(xù)時間最少60us
  57.                 DQ=1;        //然后釋放總線,至少1us給總線恢復(fù)時間才能接著寫入第二個數(shù)值
  58.                 dat>>=1;
  59.         }
  60. }
  61. /*******************************************************************************
  62. * 函數(shù)名         : DS18B20_ReadByte
  63. * 函數(shù)功能                 : 讀取一個字節(jié)
  64. * 輸入           : 無
  65. * 輸出                  : 讀取的字節(jié)
  66. *******************************************************************************/
  67. unsigned char DS18B20_ReadByte(void)
  68. {
  69.         unsigned char byte,bi;
  70.         unsigned int i,j;        
  71.         for(j=8;j>0;j--)
  72.         {
  73.                 DQ=0;//先將總線拉低1us
  74.                 i++;
  75.                 DQ=1;//然后釋放總線
  76.                 i++;
  77.                 i++;//延時6us等待數(shù)據(jù)穩(wěn)定
  78.                 bi=DQ;         //讀取數(shù)據(jù),從最低位開始讀取
  79.                 /*將byte左移一位,然后與上右移7位后的bi,注意移動之后移掉那位補0。*/
  80.                 byte=(byte>>1)|(bi<<7);                                                  
  81.                 i=4;                //讀取完之后等待48us再接著讀取下一個數(shù)
  82.                 while(i--);
  83.         }                                
  84.         return byte;
  85. }
  86. /*******************************************************************************
  87. * 函數(shù)名         : DS18B20_ChangTemp
  88. * 函數(shù)功能                 : 讓18b20開始轉(zhuǎn)換溫度
  89. * 輸入           : 無
  90. * 輸出                  : 無
  91. *******************************************************************************/
  92. void  DS18B20_ChangTemp(void)
  93. {
  94.         DS18B20_Init();
  95.         Delay1ms(1);
  96.         DS18B20_WriteByte(0xcc);                //跳過ROM操作命令                 
  97.         DS18B20_WriteByte(0x44);            //溫度轉(zhuǎn)換命令
  98. }
  99. /*******************************************************************************
  100. * 函數(shù)名         : DS18B20_ReadTempCom
  101. * 函數(shù)功能                 : 發(fā)送讀取溫度命令
  102. * 輸入           : 無
  103. * 輸出                  : 無
  104. *******************************************************************************/
  105. void DS18B20_ReadTempCom(void)
  106. {        
  107.         DS18B20_Init();
  108.         Delay1ms(1);
  109.         DS18B20_WriteByte(0xcc);         //跳過ROM操作命令
  110.         DS18B20_WriteByte(0xbe);         //發(fā)送讀取溫度命令
  111. }
  112. /*******************************************************************************
  113. * 函數(shù)名         : DS18B20_ReadTemp
  114. * 函數(shù)功能                 : 讀取溫度
  115. * 輸入           : 無
  116. * 輸出                  : 溫度值
  117. *******************************************************************************/
  118. float DS18B20_ReadTemp(void)
  119. {
  120.         int temp=0;
  121.         float temp1;
  122.         unsigned char tmh,tml;
  123.         DS18B20_ChangTemp();                //先寫入轉(zhuǎn)換命令
  124.         DS18B20_ReadTempCom();                //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
  125.         tml=DS18B20_ReadByte();                //讀取溫度值共16位,先讀低字節(jié)
  126.         tmh=DS18B20_ReadByte();                //再讀高字節(jié)
  127.         temp=tmh;
  128.         temp<<=8;
  129.         temp|=tml;
  130.         if (temp<0)                 //溫度為負(fù)數(shù)
  131.         {               
  132.                 temp = temp-1;
  133.                 temp1 =~temp;
  134.                 temp1 =-temp1*0.0625-0.005;
  135.         }
  136.         else
  137.         {
  138.                 temp1 = temp;
  139.                 temp1 = temp1*0.0625+0.005;
  140.         }
  141.         return temp1;        
  142. }
復(fù)制代碼
KEY.C

  1. /******************************************************************************
  2. *文件描述:按鍵驅(qū)動文件
  3. *******************************************************************************/
  4. #include<reg52.h>
  5. #include "key.h"
  6. #include "delay.h"

  7. /*******************************************************************************
  8. * 函 數(shù) 名         : Key_Check()
  9. * 函數(shù)功能                   : 檢測有獨立按鍵按下并讀取鍵值
  10. * 輸    入         : 無
  11. * 輸    出         : KeyValue:按鍵值,無按鍵按下返回0
  12. *******************************************************************************/
  13. uchar Key_Check(void)
  14. {
  15.         uchar KeyValue=0;                                //按鍵值初始化為0
  16.         if((GPIO_KEY&0x0f)!=0x0f)            //讀取高4位,判斷按鍵是否按下
  17.         {
  18.                 Delay_Ms(10);                    //延時10ms進行消抖
  19.                 if((GPIO_KEY&0x0f)!=0x0f)        //再次檢測鍵盤是否按下
  20.                 {
  21.                         switch(GPIO_KEY&0x0f)
  22.                         {
  23.                                 case(0x0e): KeyValue=1; break;
  24.                                 case(0x0d): KeyValue=2; break;
  25.                                 case(0x0b): KeyValue=3; break;
  26.                                 case(0x07): KeyValue=4; break;
  27.                         }
  28.                 }
  29.         }
  30.         return KeyValue;
  31. }
復(fù)制代碼
主要代碼都在上面,拒絕白嫖,就不上傳附件了,歡迎各位大佬留言。

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:262 發(fā)表于 2022-3-19 04:16 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

板凳
ID:1002955 發(fā)表于 2022-3-19 07:43 | 只看該作者
為啥我的只能用揚聲器發(fā)聲http://www.zg4o1577.cn/bbs/dpj-218190-1.html
回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2022-3-19 14:31 | 只看該作者
在定時中斷中讀溫度不太好吧?
這里起碼耗掉幾個ms吧?
回復(fù)

使用道具 舉報

5#
ID:856329 發(fā)表于 2022-3-19 14:59 | 只看該作者
lkc8210 發(fā)表于 2022-3-19 14:31
在定時中斷中讀溫度不太好吧?
這里起碼耗掉幾個ms吧?

十幾個ms,不影響數(shù)碼管顯示,目前沒有其他好方法,放在主函數(shù)中一直刷會被定時器打斷,測溫讀數(shù)亂碼。
回復(fù)

使用道具 舉報

6#
ID:161164 發(fā)表于 2022-3-19 15:17 | 只看該作者
Lxy18 發(fā)表于 2022-3-19 14:59
十幾個ms,不影響數(shù)碼管顯示,目前沒有其他好方法,放在主函數(shù)中一直刷會被定時器打斷,測溫讀數(shù)亂碼。

DS18B20的初始化和讀寫可以分9步來完成
每步只耗600~700us
步與步之間可以干其它事情


  1. typedef         unsigned char        u8;  //0 to 255
  2. typedef         unsigned int        u16;  //0 to 65535

  3. u16 Ds18b20ReadTemp()//放在while(1)中呼叫
  4. {
  5.     static u8 step = 0, tml = 0, tmh = 0;
  6.     u16 temp = 0;
  7.     if(!Delayms_Ds18b20)
  8.     {
  9.         TMR_x10 = 1;//Delayms_Ds18b20每1ms減1
  10.         Delayms_Ds18b20 = 2;//if(Delayms_Ds18b20)Delayms_Ds18b20--;<<放到1ms中斷中
  11.         switch(step)
  12.         {
  13.                                         case 0:Ds18b20Init();break;
  14.                                         case 1:Ds18b20WriteByte(0xcc);break;
  15.                                         case 2:Ds18b20WriteByte(0x44);break;
  16.                                         case 3:Ds18b20Init();break;
  17.                                         case 4:Ds18b20WriteByte(0xcc);break;
  18.                                         case 5:Ds18b20WriteByte(0xbe);break;
  19.                                         case 6:tml = Ds18b20ReadByte();break;
  20.                                         case 7:tmh = Ds18b20ReadByte();break;
  21.                                         case 8:
  22.                                                         temp = tmh;
  23.                                                         temp <<= 8;
  24.                                                         temp |= tml;
  25.                                                         tml = 0;
  26.                                                         tmh = 0;
  27.                                                         break;
  28.                                         default:
  29.                                                         Delayms_Ds18b20 = 25;
  30.                                                         TMR_x10 = 0;//Delayms_Ds18b20每10ms減1
  31.                                                         break;
  32.         }
  33.         step = ++step % 10;
  34.     }
  35.     return temp;
  36. }
復(fù)制代碼
回復(fù)

使用道具 舉報

7#
ID:941265 發(fā)表于 2022-3-21 19:11 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

8#
ID:992677 發(fā)表于 2022-12-9 17:07 | 只看該作者
大佬,delay的代碼沒有啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区四区高清 | 亚洲视频免费在线观看 | 欧美v片 | 午夜av一区二区 | 亚洲欧美日韩在线一区二区 | 国精产品一区一区三区免费完 | 亚洲成人av在线 | 国产精品视频入口 | 中文字幕亚洲一区二区va在线 | 精品免费国产视频 | 欧美三级不卡 | 精品久久久久久亚洲精品 | 国产91中文 | 久久久99精品免费观看 | 欧美成人免费在线视频 | 色综合久久久久 | 久久久久九九九女人毛片 | 粉嫩av久久一区二区三区 | 日本欧美国产在线观看 | 国产剧情一区 | 久草中文在线观看 | 久久婷婷麻豆国产91天堂 | 亚洲精品一区二区三区中文字幕 | 伊人网综合在线观看 | 国产yw851.c免费观看网站 | av手机免费在线观看 | 狠狠爱综合网 | 国产91一区二区三区 | 亚洲欧美精品在线 | 嫩草网 | 亚洲成av人片在线观看无码 | 亚洲国产精品一区二区三区 | 久久伊人操 | 日韩一区二区免费视频 | 日韩一二三 | 一级片av| 91精品国产综合久久香蕉922 | 成人毛片在线视频 | 永久免费在线观看 | 久久这里只有精品首页 | 久久久久久91香蕉国产 |