欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 原創(chuàng)STC15單片機(jī)+DS18B20做的溫度異常超溫報(bào)警器 [打印本頁(yè)]

作者: 劉海龍    時(shí)間: 2016-10-15 18:30
標(biāo)題: 原創(chuàng)STC15單片機(jī)+DS18B20做的溫度異常超溫報(bào)警器


  1.簡(jiǎn)介:通過(guò)按鍵可以設(shè)定溫度上限和溫度下限的值,當(dāng)溫度低于溫度下限值或者當(dāng)溫度高于上限值時(shí),蜂鳴器發(fā)出聲音提醒。
   2.元件:STC15W408AS單片機(jī)+共陰數(shù)碼管+有源蜂鳴器+3個(gè)按鍵+DS18B20
   3.設(shè)計(jì)思路:利用單片機(jī)逐點(diǎn)掃描的方式直接驅(qū)動(dòng)三位共陰數(shù)碼管,通過(guò)DS18B20讀取溫度與設(shè)定的溫度進(jìn)行比較,如果溫度異常則蜂鳴器發(fā)出滴滴的聲音提醒,按下K3鍵則清除報(bào)警聲(溫度恢復(fù)正常后再次異常時(shí)自動(dòng)報(bào)警)。
   4.使用方法:程序下載后首次使用前需同時(shí)按下K2鍵和K3鍵(對(duì)最初的溫度上下限值寫(xiě)入EEPROM中)以后斷電自動(dòng)保存無(wú)需進(jìn)行此操作
   5.按下K1鍵則進(jìn)入溫度上限設(shè)置菜單,可以通過(guò)按K2進(jìn)行加   K3進(jìn)行減,再次按K1鍵則進(jìn)入溫度下限報(bào)警值的設(shè)定界面。設(shè)置后5秒無(wú)操作則自動(dòng)保存設(shè)定的數(shù)據(jù)并返回溫度顯示界面。

所有資料下載:
溫度控制超溫報(bào)警stc15w.rar (80.31 KB, 下載次數(shù): 407)

  1. //2016.10.15編寫(xiě)

  2. /*********************************************************************************************/

  3. //作者:劉海龍
  4. //硬件:三位共陰數(shù)碼管+stc15單片機(jī)+DS18B20溫度芯片+蜂鳴器//選擇內(nèi)部12M晶振
  5. #include <STC15W.h>
  6. #include <intrins.h>
  7. #include<4LED_YIN.H>//數(shù)碼管驅(qū)動(dòng)顯示程序
  8. #include<DS18B20.H>//DS18B20溫度芯片驅(qū)動(dòng)程序
  9. #include<EEPROM.H>//STC15系列內(nèi)部EEPROM
  10. bit w=0,q;//報(bào)警標(biāo)志位
  11. sbit beep=P5^4;//蜂鳴器負(fù)極連接IO正極接vcc
  12. sbit k1=P1^3;//設(shè)置鍵
  13. sbit k2=P1^4;//        加鍵
  14. sbit k3=P1^5;//         減鍵
  15. //sbit led1=P1^6;//
  16. //sbit led2=P1^7;//
  17. unsigned char menu=0,cou,HH,HL,LH,LL;//HH為溫度上限高8位HL為溫度上限低8位
  18. //LH為溫度下限高8位LL為溫度下限低8位
  19. unsigned int L,H;//H為溫度上限,L為溫度下限
  20. /************************************************************************/
  21. void delay1ms (unsigned int a){ // 1ms延時(shí)程序
  22.         unsigned int i;
  23.         while( --a != 0){
  24.                 for(i = 0; i < 629; i++);//STC15單片機(jī)在外部晶振為12MHz時(shí)i值上限為629  
  25.         }                                                      
  26. }
  27. /*****************************************************************************/
  28. void disp(unsigned int t){//數(shù)碼管顯示
  29. unsigned int i;
  30. i=        t/100;//第一位數(shù)碼管顯示溫度十位
  31. diplay_data (1,disdata);
  32. i=t%100/10;//第二位數(shù)碼管顯示溫度個(gè)位
  33. diplay_data (2,disdata+0x80);//0x80為個(gè)位數(shù)后面的小數(shù)點(diǎn)
  34. i=t%100%10;//第三位數(shù)碼管顯示溫度小數(shù)位
  35. diplay_data (3,disdata);
  36. }
  37. /***********************************************/
  38. void di(){//蜂鳴器驅(qū)動(dòng)程序
  39.         beep=0;
  40.         delay1ms(500);
  41.         beep=1;
  42.         delay1ms(500);
  43.         }
  44. /*********************************************************************************************
  45. 函數(shù)名:定時(shí)/計(jì)數(shù)器初始化函數(shù)
  46. 調(diào)  用:T_C_init();
  47. /**********************************************************************************************/
  48. void T_C_init (void){
  49.         TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
  50.         EA = 1;        //中斷總開(kāi)關(guān)
  51.         TH0 = 0x3c; //16位計(jì)數(shù)寄存器T0高8位(寫(xiě)入初值)
  52.         TL0 = 0xb0; //16位計(jì)數(shù)寄存器T0低8位
  53.         ET0 = 1; //T/C1中斷開(kāi)關(guān)
  54.         TR0 = 0; //T/C1關(guān)閉開(kāi)關(guān)        
  55. }
  56. /*********************************************************************************************
  57. 函數(shù)名:定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)
  58. 調(diào)  用:[T/C1溢出后中斷處理]
  59. /*****************************/
  60. void T_C0 (void) interrupt 1  using 1{ //切換寄存器組到1
  61.     cou++;                      // 軟計(jì)數(shù)器加1   
  62.     if(cou > 99){// 計(jì)數(shù)值到(5s)
  63.         cou = 0;// 軟計(jì)數(shù)器清零
  64.         IapEraseSector(0x00); //擦除整個(gè)扇區(qū)
  65.         IapProgramByte(0x00,HH );//將 新的溫度上限值高8位寫(xiě)入 EEPROM
  66.         IapProgramByte(0x01, HL);//將 新的溫度上限值低8位寫(xiě)入 EEPROM
  67.         IapProgramByte(0x02,LH );//將 新的溫度下限值高8位寫(xiě)入 EEPROM
  68.         IapProgramByte(0x03, LL);//將 新的溫度下限值低8位寫(xiě)入 EEPROM         
  69.         TR0 = 0; //T/C1停止計(jì)數(shù)
  70.         menu=0;//返回 主菜單的溫度顯示界面                 
  71.     }               
  72.         TH0 = 0x3c; //16位計(jì)數(shù)寄存器T0高8位(重新寫(xiě)入初值)
  73.         TL0 = 0xb0; //16位計(jì)數(shù)寄存器T0低8位
  74. }
  75. /**********************************************************************************************/
  76. /**********************************************************************************************/
  77. void main (void){
  78.         unsigned char i;
  79.         delay1ms(300); //延時(shí)待系統(tǒng)穩(wěn)定
  80.         init();//IO工作方式初始化
  81.         T_C_init();//定時(shí)器初始化
  82.         
  83.         ReadTemperature(); //讀取溫度
  84.         HH = IapReadByte(0x00);//開(kāi)機(jī)時(shí)從EEPROM中讀取H高8位參數(shù)
  85.         HL = IapReadByte(0x01);//開(kāi)機(jī)時(shí)從EEPROM中讀取H的低8位參數(shù)
  86.         H=HH*256+HL;//讀出溫度上限值
  87.         LH = IapReadByte(0x02);//開(kāi)機(jī)時(shí)從EEPROM中讀取L高8位參數(shù)
  88.         LL = IapReadByte(0x03);//開(kāi)機(jī)時(shí)從EEPROM中讀取L的低8位參數(shù)
  89.         L=LH*256+LL;//讀出溫度下限值
  90.         while(1){//主循環(huán)
  91.                           
  92. /**********************顯示溫度界面******************************/
  93.                   if(menu==0){
  94.                            for(i=15;i>0;i--){
  95.                            disp(ReadTemperature());}
  96.                           if(tem>=H&&w==0||tem<=L&&w==0){
  97.                             di();//超溫或者低溫報(bào)警
  98.                           q=1;
  99.                             }
  100.                   
  101.                           if(k3==0&&q==1){w=1;}//如果報(bào)警時(shí)按下K1則關(guān)閉報(bào)警聲
  102.                           if(tem<=H&&tem>=L){w=0;}//如果溫度恢復(fù)正常把報(bào)警標(biāo)志清除
  103.                         if(k2==0&&k3==0){//k2k3同時(shí)按下溫度上限下限值恢復(fù)出廠設(shè)置
  104.                                 delay1ms(10);
  105.                                 if(k2==0&&k3==0){
  106.                                         H=380;//溫度上限38度
  107.                                         L=370;//溫度下限37度
  108.                                         LL=L;
  109.                                         LH=(L>>8);
  110.                                         HL=H;
  111.                                         HH=(H>>8);
  112.                                         IapEraseSector(0x00); //擦除整個(gè)扇區(qū)
  113.                                         IapProgramByte(0x00,HH );//將 新的溫度上限值高8位寫(xiě)入 EEPROM
  114.                                         IapProgramByte(0x01, HL);//將 新的溫度上限值低8位寫(xiě)入 EEPROM
  115.                                         IapProgramByte(0x02,LH );//將 新的溫度下限值高8位寫(xiě)入 EEPROM
  116.                                         IapProgramByte(0x03, LL);//將 新的溫度下限值低8位寫(xiě)入 EEPROM         
  117.                                         di();
  118.                                 }
  119.                         }        
  120.                    }
  121. /*********************進(jìn)入調(diào)溫度上限界面*******************************/
  122.                   if(menu==1){
  123.                          diplay_data (1,disdata[H/100]);
  124.                          diplay_data (2,disdata[H%100/10]+0x80);
  125.                           diplay_data (3,disdata[H%10]);
  126.                          if(k2==0){
  127.                                 delay1ms(10);
  128.                                  if(k2==0){
  129.                                 H++; //按下K1鍵則溫度上限加零點(diǎn)一度
  130.                                  cou=0;//重新計(jì)數(shù)
  131.                                  TR0 = 1; //T/C1啟動(dòng)開(kāi)關(guān)
  132.                                     
  133.                                  while(!k2);
  134.                                 HL=H;
  135.                                 HH=(H>>8);
  136.                                 }
  137.                           }
  138.                          if(k3==0){
  139.                                 delay1ms(10);
  140.                                  if(k3==0){
  141.                                 H--; //按下K1鍵則溫度上限減零點(diǎn)一度
  142.                                  cou=0;//重新計(jì)數(shù)
  143.                                  TR0 = 1; //T/C1啟動(dòng)開(kāi)關(guān)
  144.                                     
  145.                                  while(!k3);
  146.                                 HL=H;
  147.                                 HH=(H>>8);
  148.                                 }
  149.                           }
  150.                         
  151.                   }
  152. /*******************進(jìn)入調(diào)溫度下限界面****************************/
  153.                    if(menu==2){
  154.                          diplay_data (1,disdata[L/100]);
  155.                          diplay_data (2,disdata[L%100/10]+0x80);
  156.                           diplay_data (3,disdata[L%10]);
  157.                          if(k2==0){
  158.                                 delay1ms(10);
  159.                                  if(k2==0){
  160.                                  cou=0;//重新計(jì)數(shù)
  161.                                  TR0 = 1; //T/C1啟動(dòng)開(kāi)關(guān)
  162.                                     L++; //按下K1鍵則溫度下限加零點(diǎn)一度
  163.                                  while(!k2);
  164.                                 LL=L;
  165.                                 LH=(L>>8);
  166.                                 }
  167.                          }

  168.                          if(k3==0){
  169.                                 delay1ms(10);
  170.                                  if(k3==0){
  171.                                 cou=0;//重新計(jì)數(shù)
  172.                                  TR0 = 1; //T/C1啟動(dòng)開(kāi)關(guān)
  173.                                     L--; //按下K1鍵則溫度下限減零點(diǎn)一度
  174.                                  while(!k3);
  175.                                 LL=L;
  176.                                 LH=(L>>8);                                
  177.                              }
  178.                         }
  179.                   }
  180. /*************************按下K1鍵進(jìn)入菜單設(shè)置界面***************************/
  181.                   if(k1==0){
  182.                          delay1ms(10);
  183.                          if(k1==0){
  184.                          cou=0;//重新計(jì)數(shù)
  185.                          TR0 = 1; //T/C1啟動(dòng)開(kāi)關(guān)
  186.                             menu++; //按下K1鍵則菜單加一
  187.                            if(menu>2){menu=0;}
  188.                          while(!k1);
  189.                         }
  190.                    }                                
  191.         }        
  192. }
  193. /*****************************************************************************/
復(fù)制代碼

作者: Animals    時(shí)間: 2016-10-30 20:38
謝謝分享!已制作成功
作者: gshuxiao8    時(shí)間: 2016-12-9 22:38
樓主是個(gè)有思想的人。贊\
作者: bpdy168    時(shí)間: 2017-1-1 13:13
請(qǐng)教:原創(chuàng)STC15單片機(jī)+DS18B20做的溫度異常超溫報(bào)警器,keil顯示錯(cuò)誤,如何解決?STC15W.h(526): warning C322: unknown identifier
STC15W.h(528): warning C322: unknown identifier
STC15W.h(530): warning C322: unknown identifier
STC15W.h(532): warning C322: unknown identifier
STC15W.h(534): warning C322: unknown identifier
STC15W.h(536): warning C322: unknown identifier
STC15W.h(538): warning C322: unknown identifier
溫度控制器.C(64): warning C206: 'IapEraseSector': missing function-prototype
溫度控制器.C(64): error C267: 'IapEraseSector': requires ANSI-style prototype
溫度控制器.c - 1 Error(s), 8 Warning(s).
作者: 劉海龍    時(shí)間: 2017-1-3 21:32
bpdy168 發(fā)表于 2017-1-1 13:13
請(qǐng)教:原創(chuàng)STC15單片機(jī)+DS18B20做的溫度異常超溫報(bào)警器,keil顯示錯(cuò)誤,如何解決?STC15W.h(526): warning  ...

IapEraseSector這個(gè)函數(shù)在編譯時(shí)無(wú)法獲取其原型。
要么把IapEraseSector()函數(shù)體放在調(diào)用它的函數(shù)前面,要么在前面添加IapEraseSector()函數(shù)的原型聲明。
作者: z843757475    時(shí)間: 2017-1-6 12:20
給一下ds18b20的初始化函數(shù)啊
作者: wsjmyp    時(shí)間: 2017-4-13 11:10
不錯(cuò)不錯(cuò),需要下載才能看到其他文件的。
作者: xiaoyao111    時(shí)間: 2017-6-3 09:21
怎么無(wú)法下載啊
作者: xedewo    時(shí)間: 2017-6-8 22:33
好資料~模塊很清晰非常好用~謝謝
作者: ads2017    時(shí)間: 2017-6-16 11:07
 謝謝分享!已制作成功
作者: ads2017    時(shí)間: 2017-6-16 11:27
樓主,Delay_us();微秒延時(shí)怎么寫(xiě)?
作者: 晨曦星辰    時(shí)間: 2017-7-17 21:02
不錯(cuò)不錯(cuò),感謝分享
作者: 3760609865    時(shí)間: 2017-8-8 21:28
謝謝分享,學(xué)習(xí)一下EEPROM的操作。
作者: iloveplc    時(shí)間: 2017-8-11 01:39

謝謝分享,學(xué)習(xí)一下18B20的寫(xiě)法
作者: brave_ruan    時(shí)間: 2017-9-20 08:47
制作成功了,在制作過(guò)程中犯了一些低級(jí)小錯(cuò)誤,最后請(qǐng)教了樓主南瓜大哥,感謝南瓜大哥的昨天細(xì)心指導(dǎo)與分析,謝謝,很給力。
作者: brave_ruan    時(shí)間: 2017-9-20 08:48
感謝南瓜大哥的分享與指導(dǎo),很給力,  謝謝
作者: autoauto    時(shí)間: 2017-10-18 05:52
試試看看,正需要
作者: iloveplc    時(shí)間: 2017-12-13 10:26
正在使用樓主的程序,改在我的學(xué)習(xí)板上,謝謝樓主的程序
作者: nanning321    時(shí)間: 2018-6-7 00:10
劉海龍老師這里什么改

1.png (22.37 KB, 下載次數(shù): 145)

1.png

作者: nanning321    時(shí)間: 2018-6-7 00:12


作者: 2661    時(shí)間: 2018-6-7 01:22
謝謝,寫(xiě)的很實(shí)用,亨給利
作者: 494950313    時(shí)間: 2018-6-14 23:12
謝謝,寫(xiě)的很實(shí)用
作者: 羅文    時(shí)間: 2018-6-16 14:48
謝謝分享,不錯(cuò)
作者: 風(fēng)158    時(shí)間: 2018-6-17 10:50
謝謝分享,下來(lái)學(xué)習(xí)學(xué)習(xí)
作者: yubo2007    時(shí)間: 2018-12-2 10:22
好資料~模塊很清晰非常好用~謝謝
作者: zhouwei0815    時(shí)間: 2018-12-2 23:01
不錯(cuò) 很喜歡樓主的設(shè)計(jì) 有實(shí)用性
作者: WFX777888    時(shí)間: 2018-12-3 05:55
謝謝分享資料
作者: xiaozhiTZM    時(shí)間: 2018-12-13 13:39
大佬這個(gè)程序可以用單片機(jī)編程嗎
作者: mocpso    時(shí)間: 2019-6-18 11:06
不錯(cuò) 很喜歡樓主的設(shè)計(jì) 有實(shí)用性
作者: 竹林清風(fēng)2022    時(shí)間: 2022-11-14 15:06
劉海龍 發(fā)表于 2017-1-3 21:32
IapEraseSector這個(gè)函數(shù)在編譯時(shí)無(wú)法獲取其原型。
要么把IapEraseSector()函數(shù)體放在調(diào)用它的函數(shù)前面, ...

今天做了很多次,時(shí)序總是不對(duì),只有請(qǐng)教高手了
作者: 竹林清風(fēng)2022    時(shí)間: 2022-11-14 15:08
代碼真的很好,借鑒了
作者: liziwen    時(shí)間: 2022-11-18 21:40
Animals 發(fā)表于 2016-10-30 20:38
謝謝分享!已制作成功

請(qǐng)問(wèn)程序怎么燒錄呀

作者: heicad    時(shí)間: 2022-11-18 22:15
liziwen 發(fā)表于 2022-11-18 21:40
請(qǐng)問(wèn)程序怎么燒錄呀

給你做好的板子通電,用串口線連接好電腦,打開(kāi)stcisp軟件,載入hex文件,點(diǎn)擊下載程序,按提示冷啟動(dòng)即可
作者: mcuhui    時(shí)間: 2023-2-8 19:20
大師,請(qǐng)問(wèn)數(shù)碼管有筆畫(huà)暗是什么原因?數(shù)碼管沒(méi)有問(wèn)題,已經(jīng)全部點(diǎn)亮看過(guò)的。
作者: abslearn    時(shí)間: 2023-2-10 15:06
我只是來(lái)點(diǎn)贊一下,支持一下作者··
作者: 542783891    時(shí)間: 2023-5-12 23:19
DS18B20做的溫度




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1