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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機溫度上下限監控報警程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:535889 發表于 2019-5-24 00:15 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>         //包含頭文件
  3. #define uchar unsigned char
  4. #define uint unsigned int   //宏定義
  5. #include "eeprom52.h"
  6. ////////////////////
  7. sbit dj=P1^0;
  8. sbit dq=P1^1;
  9. sbit DQ=P1^6;
  10. sbit bj=P1^7;
  11. //////////按鍵接口/////////////////////////////////
  12. sbit key1=P3^5;//
  13. sbit key2=P3^6;//
  14. sbit key3=P3^7;//
  15. //////////////////////////////////////////////////////
  16. sbit w1=P2^4;
  17. sbit w2=P2^5;
  18. sbit w3=P2^6;
  19. sbit w4=P2^7;        //
  20. /////共陰數碼管段選//////////////////////////////////////////////
  21. uchar table[22]=
  22. {0x3F,0x06,0x5B,0x4F,0x66,
  23. 0x6D,0x7D,0x07,0x7F,0x6F,
  24. 0x77,0x7C,0x39,0x5E,0x79,0x71,
  25. 0x40,0x38,0x76,0x00,0xff,0x37};//'-',
  26. uint wen_du;                                                  
  27. uint shang,xia; //
  28. uchar dang;//
  29. uchar flag;
  30. uchar d1,d2,d3;//
  31. uchar m;
  32. uchar js;

  33. /******************把數據保存到單片機內部eeprom中******************/
  34. void write_eeprom()
  35. {
  36.         SectorErase(0x2000);               
  37.         byte_write(0x2000, shang);      
  38.         byte_write(0x2001, xia);
  39.         byte_write(0x2060, a_a);
  40. }

  41. /******************把數據從單片機內部eeprom中讀出來*****************/
  42. void read_eeprom()
  43. {
  44.         shang   = byte_read(0x2000);               
  45.         xia = byte_read(0x2001);                        
  46.         a_a      = byte_read(0x2060);                 
  47. }

  48. /**************開機自檢eeprom初始化*****************/
  49. void init_eeprom()
  50. {
  51.         read_eeprom();               
  52.         if(a_a != 1)               
  53.         {
  54.                 shang   = 30;
  55.                 xia = 20;               
  56.                 a_a = 1;               
  57.                 write_eeprom();         
  58.         }      
  59. }

  60. void delay(uint ms)                //延時函數,大約延時1ms
  61. {
  62.         uchar x;
  63.         for(ms;ms>0;ms--)
  64.                 for(x=121;x>0;x--);
  65. }
  66. /***********ds18b20延遲子函數(晶振12MHz )*******/
  67. void delay_18B20(uint i)
  68. {
  69.         while(i--);
  70. }
  71. /**********ds18b20初始化函數**********************/
  72. void Init_DS18B20()
  73. {
  74.          uchar x=0;
  75.          DQ=1;         
  76.          delay_18B20(8);  
  77.          DQ=0;         
  78.          delay_18B20(80);
  79.          DQ=1;         
  80.          delay_18B20(14);
  81.          x=DQ;            
  82.          delay_18B20(20);
  83. }
  84. /***********ds18b20讀一個字節**************/  
  85. uchar ReadOneChar()
  86. {
  87.         uchar i=0;
  88.         uchar dat=0;
  89.         for (i=8;i>0;i--)
  90.          {
  91.                   DQ=0; //
  92.                   dat>>=1;
  93.                   DQ=1; //
  94.                   if(DQ)
  95.                   dat|=0x80;
  96.                   delay_18B20(4);
  97.          }
  98.         return(dat);
  99. }
  100. /*************ds18b20寫一個字節****************/  
  101. void WriteOneChar(uchar dat)
  102. {
  103.         uchar i=0;
  104.         for (i=8;i>0;i--)
  105.         {
  106.                   DQ=0;
  107.                 DQ=dat&0x01;
  108.             delay_18B20(5);
  109.                 DQ=1;
  110.             dat>>=1;
  111.         }
  112. }
  113. /**************讀取ds18b20當前溫度************/
  114. void ReadTemperature()
  115. {
  116.         uchar a=0;
  117.         uchar b=0;
  118.         uchar t=0;
  119.         Init_DS18B20();
  120.         WriteOneChar(0xCC);           
  121.         WriteOneChar(0x44);        
  122.         delay_18B20(100);      
  123.         Init_DS18B20();
  124.         WriteOneChar(0xCC);        
  125.         WriteOneChar(0xBE);        
  126.         delay_18B20(100);
  127.         a=ReadOneChar();           
  128.         b=ReadOneChar();                  
  129.         wen_du=((b*256+a)>>4);   
  130. }

  131. void zi_keyscan()
  132. {
  133.         if(key1==0)                                       
  134.         {
  135.                 delay(80);                                       
  136.                 if(key1==0)
  137.                 {
  138.                         flag=1;                                 
  139.                         while(key1==0);
  140.                 }
  141.         }
  142.         while(flag==1)                                               
  143.         {
  144.                 d1=18;d2=shang/10;d3=shang%10;         
  145.                 if(key1==0)                                                
  146.                 {
  147.                         delay(80);                                          
  148.                         if(key1==0)
  149.                         {
  150.                                 flag=2;                          
  151.                                 while(key1==0);
  152.                         }
  153.                 }
  154.                 if(key2==0)                              
  155.                 {
  156.                         delay(80);                                       
  157.                         if(key2==0)                                         
  158.                         {
  159.                                 shang+=1;                       
  160.                                 if(shang>=100)shang=100;  
  161.                                 while(key2==0);
  162.                         }
  163.                 }
  164.                 if(key3==0)                                                  
  165.                 {
  166.                         delay(80);                                       
  167.                         if(key3==0)                              
  168.                         {
  169.                                 shang-=1;                              
  170.                                 if(shang<=10)shang=10;         
  171.                                 while(key3==0);
  172.                         }
  173.                 }               
  174.         }
  175.         while(flag==2)                                                
  176.         {
  177.                 d1=17;d2=xia/10;d3=xia%10;                  
  178.                 if(key1==0)
  179.                 {
  180.                         delay(80);
  181.                         if(key1==0)
  182.                         {
  183.                                 flag=0;
  184.                                 while(key1==0);
  185.                                 write_eeprom();                          
  186.                         }
  187.                 }
  188.                 if(key2==0)
  189.                 {
  190.                         delay(80);
  191.                         if(key2==0)
  192.                         {
  193.                                 xia+=1;
  194.                                 if(xia>=99)xia=99;
  195.                                 while(key2==0);
  196.                         }
  197.                 }
  198.                 if(key3==0)
  199.                 {
  200.                         delay(80);
  201.                         if(key3==0)
  202.                         {
  203.                                 xia-=1;
  204.                                 if(xia<=0)xia=0;
  205.                                 while(key3==0);
  206.                         }
  207.                 }               
  208.         }
  209. }

  210. void init()                  
  211. {
  212.         TMOD=0x01;         
  213.         TH0=0xf8;
  214.         TL0=0x30;         
  215.         ET0=1;                  
  216.         TR0=1;                  
  217.         EA=1;                  
  218. }

  219. void zi_dong()
  220. {
  221.         d1=dang;d2=wen_du/10;d3=wen_du%10;      
  222.         zi_keyscan();
  223.         if(wen_du<xia){dang=0;}_du>=xia)&&(wen_du<=shang))
  224.         {dang=1;}
  225.         if(wen_du>shang){dang=2;}}
  226. void main()                  //主函數
  227. {
  228.         uchar j;
  229.         dj=0;                  
  230.         shang=30;
  231.         xia=20;                  
  232.         init_eeprom();  
  233.         for(j=0;j<80;j++)         
  234.         ReadTemperature();
  235.         init();
  236.         while(1)                        
  237.         {      
  238.                 if(js>=50)                       
  239.                 {
  240.                         ReadTemperature();
  241.                         js=0;                              
  242.                 }      
  243.                
  244.                 zi_dong();}
  245. }



  246. void T0_TIME() interrupt 1                 
  247. {
  248.         TH0=0xf8;
  249.         TL0=0x30;                                         
  250.         m++;                                                  switch(dang)                                 
  251.         {
  252.                 case 0:dj=0;break;                  
  253.                 case 1:if(m<=3)dj=1;else dj=0;break;
  254.                 case 2:dj=1;break;                 
  255.                 default:;                                 
  256.         }
  257.         switch(m)                                          
  258.         {
  259.                 case 1:                                                                       
  260.                                 w4=1;P0=~table[d1];w1=0; break;      
  261.                 case 2:
  262.                                 w1=1;P0=~table[16];w2=0; break;      
  263.                 case 3:
  264.                                 w2=1;P0=~table[d2];w3=0;        break;      
  265.                 case 4:
  266.                                 w3=1;P0=~table[d3];w4=0;m=0;if(js<50)js++;break; //
  267.                                                                                                                               
  268.                 default:;                                                               
  269.         }
  270.         if(m>4)                  {
  271.                 m=0;  
  272.         }
  273. }
復制代碼


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

使用道具 舉報

沙發
ID:1 發表于 2019-5-24 06:12 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

板凳
ID:23606 發表于 2019-5-24 09:27 | 只看該作者
電路和程序好像不匹配
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人福利影院 | 91久久国产综合久久91精品网站 | 久久精品国产一区二区三区不卡 | 美女黄色在线观看 | 日韩中文字幕一区 | 欧美一级二级三级视频 | 亚洲乱码一区二区三区在线观看 | 中文字幕第三页 | 日韩在线中文字幕 | 亚洲精品视频久久 | heyzo在线 | 天天综合久久 | 国产精品日韩在线观看 | 久草网站 | 日韩成年人视频在线 | av大片 | 亚洲欧美国产一区二区三区 | 日本又色又爽又黄的大片 | 久久久久久亚洲国产精品 | 99福利视频 | 中文字幕一区在线观看视频 | 一区二区三区影院 | 午夜免费视频观看 | 久久久久国产 | 在线欧美一区 | 欧美九九 | 成人久久18免费网站麻豆 | 久久久久久久久久久久一区二区 | 久久综合久久综合久久综合 | 亚洲第一色av| 色资源在线 | 国产乱码精品一区二区三区中文 | 欧美日日| 久久久久九九九女人毛片 | www.youjizz.com日韩| 国产精品亚洲精品日韩已方 | 亚洲精品一区二区三区 | 一本大道久久a久久精二百 欧洲一区二区三区 | 欧美日韩亚洲三区 | 久久久www成人免费无遮挡大片 | 久久88|