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

標題: 單片機智能熱得快仿真設計 含源碼 [打印本頁]

作者: 51hei團團    時間: 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. /*****讀一個字節*****/
  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. /*****寫一個字節*****/
  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)



作者: 穆染    時間: 2020-4-3 13:34
這個怎么沒有水泵和加熱器啊
作者: 太陽黑子1    時間: 2020-4-3 18:26
還挺復雜的!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: www.久久久久久久久久久 | 久久久久久国产精品 | 一级黄色片在线免费观看 | 人人澡视频 | 性国产xxxx乳高跟 | 国产a视频| 综合久久亚洲 | 日日操操 | 欧美中文字幕一区二区 | 日韩资源| 国产精品美女久久久久久久网站 | 超黄毛片 | 中文av电影 | 中文视频在线 | 久久久不卡网国产精品一区 | 亚洲综合视频 | 久久久男人的天堂 | 亚洲精品一区二区三区蜜桃久 | 国产免费看 | 久久久久久天堂 | 欧美一区二区三区在线看 | 韩日在线视频 | 成人影院在线视频 | 日韩av在线免费 | 亚洲性在线| 无码日韩精品一区二区免费 | 国产极品粉嫩美女呻吟在线看人 | 午夜视频在线 | 91久久精品一区二区二区 | 日韩综合| 日本黄色片免费在线观看 | 国产精品国产三级国产播12软件 | 一区二区国产精品 | 亚洲成在线观看 | 看av网| 国产免国产免费 | 精品久久久久久国产 | 欧美综合一区 | 黄网站涩免费蜜桃网站 | 99热国产免费 | 久久成人免费视频 |