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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機智能熱得快仿真設計 含源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:328014 發(fā)表于 2018-7-1 04:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
智能熱得快仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序:
  1. /*頭文件*/

  2. #include<reg52.h>
  3. #include <intrins.h>
  4. /*****************宏定義******************/
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. /***********位操作端口定義**************/
  8. sbit set_key=P1^4;          //“設置”鍵 K1
  9. sbit add_key=P1^5;           //“加”鍵 K2
  10. sbit cut_key=P1^6;           //  “減”鍵 K3
  11. sbit speak=P3^7;          //   蜂鳴器
  12. sbit JK1=P3^6;                 //           溫度繼電器
  13. sbit JK2=P3^5;                 //          水位繼電器
  14. sbit DQ1=P3^3;
  15. sbit qian_wei=P0^7;
  16. sbit bai_wei=P0^6;
  17. sbit shi_wei=P0^5;
  18. sbit ge_wei=P0^4;
  19. sbit led4=P0^3;          //滿水位指示燈紅色
  20. sbit led3=P0^2;          //3/4水位指示燈
  21. sbit led2=P0^1;          //1/2水位指示燈
  22. sbit led1=P0^0;         //1/4水位指示燈

  23. sbit SW041=P1^0; //1/4水位
  24. sbit SW021=P1^1; //1/2水位
  25. sbit SW043=P1^2; //3/4水位
  26. sbit SW01=P1^3; //滿水位
  27. uchar bianma[]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14,0xf6};
  28. uchar flog4;
  29. uint DD1;
  30. uchar T_data[4]={0,0,0,0};
  31. uchar Set_data[3]={0,0,0};
  32. uint HT=300,LT;
  33. void delay_1ms(uchar i)
  34. {
  35.           uint x,y;
  36.         for(x=i;x>0;x--)
  37.                 for(y=124;y>0;y--);
  38. }
  39. void data_pro()
  40. {
  41.         Set_data[0]=HT/1000;
  42.         Set_data[1]=(HT%1000)/100;
  43.         Set_data[2]=(HT%100)/10;
  44. }
  45. /*****延時子程序*****/
  46. void Delay_DS18B20(int num)
  47. {
  48.    while(num--) ;
  49. }
  50. /*****初始化DS18B20*****/
  51. void Init_DS18B20(void)
  52. {
  53.    uchar x=0;
  54.    DQ1=1;          //DQ復位
  55.    Delay_DS18B20(2);   //稍做延時
  56.    DQ1=0;          //單片機將DQ拉低
  57.    Delay_DS18B20(80); //精確延時,大于480us
  58.    DQ1=1;          //拉高總線
  59.    Delay_DS18B20(14);
  60.    x=DQ1;            //稍做延時后,如果x=0則初始化成功,x=1則初始化失敗
  61.    Delay_DS18B20(20);
  62. }

  63. /*****讀一個字節(jié)*****/
  64. uchar ReadOneChar(void)
  65. {
  66.    uchar i=0;
  67.    uchar dat=0;
  68.    for(i=8;i>0;i--)         //串行接收數據
  69.    {
  70.            DQ1=0;     // 給脈沖信號
  71.            dat>>=1;
  72.            DQ1=1;     // 給脈沖信號
  73.            if(DQ1)
  74.            dat|=0x80;
  75.            Delay_DS18B20(8);
  76.    }
  77.    return(dat);
  78. }

  79. /*****寫一個字節(jié)*****/
  80. void WriteOneChar(uchar dat)
  81. {
  82.         uchar i=0;
  83.         for(i=8;i>0;i--)
  84.         {
  85.                 DQ1=0;
  86.                 DQ1=dat&0x01;          //寫入最低位
  87.                 Delay_DS18B20(10);
  88.                 DQ1=1;
  89.                 dat>>=1;          //右移一位
  90.     }
  91. }

  92. /*****讀取溫度*****/
  93. uint ReadTemperature(void)
  94. {
  95.    uchar a=0;
  96.    uchar b=0;
  97.    uint t=0;
  98.    float tt=0;
  99.    Init_DS18B20();            //初始化DS18B20
  100.    WriteOneChar(0xCC); //跳過讀序號列號的操作
  101.    WriteOneChar(0x44); //啟動溫度轉換
  102.    Delay_DS18B20(20);
  103.    Init_DS18B20();           //初始化DS18B20
  104.    WriteOneChar(0xCC); //跳過讀序號列號的操作
  105.    WriteOneChar(0xBE); //讀取溫度寄存器
  106.    a=ReadOneChar();    //讀低8位
  107.    b=ReadOneChar();    //讀高8位
  108.    t=b;
  109.    t<<=8;
  110.    t=t|a;
  111.    tt=t*0.0625;
  112.    t= tt*10+0.5;      //放大10倍輸出并四舍五入
  113.    return(t);
  114. }

  115. void pos_data()
  116. {
  117.         DD1=ReadTemperature();
  118.         T_data[0]=DD1/1000;
  119.         T_data[1]=(DD1%1000)/100;
  120.         T_data[2]=(DD1%100)/10;
  121.         T_data[3]=DD1%10;
  122. }

  123. void display_set()                 //溫度報警值設置
  124. {
  125.         qian_wei=0;
  126.         bai_wei=1;
  127.         shi_wei=1;
  128.         ge_wei=1;
  129.         P2=bianma[10];
  130.         delay_1ms(5);
  131.         qian_wei=1;
  132.         bai_wei=0;
  133.         shi_wei=1;
  134.         ge_wei=1;
  135.         P2=bianma[Set_data[0]];
  136.         delay_1ms(5);
  137.         P2=0xff;
  138.         qian_wei=1;
  139.         bai_wei=1;
  140.         shi_wei=0;
  141.         ge_wei=1;
  142.         P2=bianma[Set_data[1]];
  143.         delay_1ms(5);
  144.         P2=0xff;
  145.         qian_wei=1;
  146.         bai_wei=1;
  147.         shi_wei=1;
  148.         ge_wei=0;
  149.         P2=bianma[Set_data[2]];
  150.         delay_1ms(5);
  151.         P2=0xff;
  152. }

  153. void display()                   //測量值顯示
  154. {
  155.         qian_wei=0;
  156.         bai_wei=1;
  157.         shi_wei=1;
  158.         ge_wei=1;
  159.         P2=bianma[0];
  160.         delay_1ms(5);
  161.         qian_wei=1;
  162.         bai_wei=0;
  163.         shi_wei=1;
  164.         ge_wei=1;
  165.         P2=bianma[T_data[1]];
  166.         delay_1ms(5);
  167.         P2=0xff;
  168.         qian_wei=1;
  169.         bai_wei=1;
  170.         shi_wei=0;
  171.         ge_wei=1;
  172.         P2=bianma[T_data[2]]&0xfb;
  173.         delay_1ms(5);
  174.         P2=0xff;
  175.         qian_wei=1;
  176.         bai_wei=1;
  177.         shi_wei=1;
  178.         ge_wei=0;
  179.         P2=bianma[T_data[3]];
  180.         delay_1ms(5);
  181.         P2=0xff;
  182. }
  183. /********** 報警處理函數******************/
  184. void baojing()
  185. {
  186.           LT=HT-50;         //測量溫度低于設定溫度10度以下時 重新加熱
  187.           if(HT<DD1) //如果溫度超過上限 停止加熱
  188.           {
  189.                         JK1=1;
  190.           }
  191.          if(DD1<LT) //如果溫度低于下限 開始加熱
  192.           {
  193.                         JK1=0;
  194.           }
  195.          if((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==1))        //0水位 指示 啟動水泵加水
  196.          {
  197.                 led1=1;
  198.                 led2=1;
  199.                 led3=1;
  200.                 led4=1;
  201.                 JK2=0;
  202.         }
  203.         
  204.         if((SW01==0)&&(SW043==1)&&(SW021==1)&&(SW041==1))        //1/4水位指示
  205.          {
  206.                 led1=0;
  207.                 led2=1;
  208.                 led3=1;
  209.                 led4=1;
  210.         }
  211.         if((SW01==0)&&(SW043==0)&&(SW021==1)&&(SW041==1))  //1/2水位指示
  212.          {
  213.                 led1=0;
  214.                 led2=0;
  215.                 led3=1;
  216.                 led4=1;
  217.         }
  218.         if((SW01==0)&&(SW043==0)&&(SW021==0)&&(SW041==1))        //3/4水位指示
  219.          {
  220.                 led1=0;
  221.                 led2=0;
  222.                 led3=0;
  223.                 led4=1;
  224.         }
  225.         if((SW01==0)&&(SW043==0)&&(SW021==0)&&(SW041==0))        //如果水滿了 指示燈指示 停止加水
  226.          {
  227.                 led1=0;
  228.                 led2=0;
  229.                 led3=0;
  230.                 led4=0;
  231.                 JK2=1;
  232.         }

  233.         if(((SW01==1)&&(SW043==1)&&(SW021==1)&&(SW041==1))||(HT<DD1)||(DD1<LT))          //缺水或者 溫度超過上限 蜂鳴器響
  234.         {
  235.                 speak=0;
  236.         }
  237.         else
  238.         {
  239.                 speak=1;        
  240.         }
  241. }
  242. /**********主函數******************/
  243. void main()
  244. {        
  245.         data_pro();
  246.         while(1)
  247.         {
  248.         if(set_key==0)
  249.          {
  250.                  delay_1ms(5);
  251.                 if(set_key==0)
  252.                 {                 
  253.                         flog4=!flog4;
  254.                         while(set_key==0);
  255.                 }
  256.          }
  257.         if(flog4==1)
  258.         {
  259.                         speak=1;
  260.                  if(add_key==0)
  261.                         {
  262.                          delay_1ms(5);
  263.                          if(add_key==0)
  264.                          {
  265. ……………………

  266. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
智能熱得快.rar (354.99 KB, 下載次數: 180)


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

使用道具 舉報

無效樓層,該帖已經被刪除
板凳
ID:721273 發(fā)表于 2020-4-3 13:34 來自觸屏版 | 只看該作者
這個怎么沒有水泵和加熱器啊
回復

使用道具 舉報

地板
ID:305511 發(fā)表于 2020-4-3 18:26 | 只看該作者
還挺復雜的!
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成a人片 | 欧美日韩电影一区二区 | 最新日韩在线视频 | 中文字幕国产高清 | 欧美一级全黄 | 日韩欧美一区在线 | 亚洲精选久久 | 日韩欧美在线观看视频 | 岛国av免费观看 | 成人在线免费观看视频 | 91网在线播放 | 成年人在线视频 | 色综合久久久久 | 亚洲视频在线看 | 欧美成人精品二区三区99精品 | 91精品国产自产精品男人的天堂 | 五月天国产视频 | 亚洲精品一区二三区不卡 | 超碰免费在线观看 | 亚洲午夜精品 | 亚洲在线一区 | 在线免费亚洲视频 | 在线观看中文字幕 | 国产精品久久久久久久久久久久 | 91精品一区 | 亚洲午夜小视频 | 国产在线观看不卡一区二区三区 | 亚洲精品一区中文字幕乱码 | 亚洲国产精品一区二区第一页 | 日本激情视频中文字幕 | 亚洲国产精品视频一区 | 黄色毛片黄色毛片 | 欧美高清视频 | 在线免费观看黄色av | 日本久久www成人免 成人久久久久 | 日韩av在线不卡 | 在线日韩 | 亚州综合一区 | 一区二区三区视频 | 日韩在线播放一区 | 激情久久网|