找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1614|回复: 0
打印 上一主题 下一主题
收起左侧

单片机智能水温控制系统设计

[复制链接]
跳转到指定楼层
楼主
ID:715499 发表于 2020-3-26 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
智能水温控制系统是利用单片机AT89C51来实现水温的智能控制,使水温能够在30℃-90℃之间实现温度调节,实时检测水温并显示;水温低于设定的温度值报警并启动加热功能;水温达到设定的温度值自动关闭加热系统

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<wendu.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. sbit key1=P3^0;
  7. sbit key2=P3^1;
  8. sbit key3=P3^2;
  9. sbit led=P3^3;
  10. sbit shenwen=P3^4;
  11. sbit baojing=P3^5;
  12. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xbf,0xc7,0x89};
  13. uchar code tab3[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3f,0xff};
  14. uchar yi,er,san,si,san1;
  15. uint shangxian=90,xiaxian=30,flag=0;
  16. void delay(int ma);
  17. void display1(uchar yi,uchar er,uchar san,uchar si);
  18. void display2(uchar yi,uchar er,uchar san1,uchar si);
  19. void keyscan();
  20. void main()
  21. {
  22. float wendu=0;
  23. int wenduzhen=0;
  24. yi=11;er=11;san=11;si=11;
  25. baojing=shenwen=1;
  26. while(1)
  27. {
  28. keyscan();
  29. if(flag==0)
  30. {
  31. wendu=temget();        
  32. if(wendu<xiaxian)
  33. {
  34. shenwen=0;
  35. baojing=0;
  36. }
  37. else if((wendu>=xiaxian) && (wendu<=shangxian) )
  38. {
  39. baojing=1;
  40. }
  41.         else if(wendu>=shangxian)
  42. {
  43. shenwen=1;
  44.         baojing=0;
  45. }
  46. wenduzhen=wendu*10;
  47. yi=wenduzhen/1000;
  48. er=wenduzhen%1000/100;
  49.         san=wenduzhen%100/10;
  50.         si=wenduzhen%10;         
  51.         display1(yi,er,san,si);
  52. }
  53.         Else if(flag==1)
  54.         {
  55.                 yi=13;er=12;
  56.                 san1=xiaxian%100/10;
  57.                 si=xiaxian%10;
  58.                 isplay2(yi,er,san1,si);
  59.         }
  60.         Else if(flag==2)
  61.         {
  62.                  yi=14;er=12;
  63.                  san1=shangxian%100/10;
  64.                  si=shangxian%10;
  65.                 isplay2(yi,er,san1,si);
  66. }
  67.                 if(xiaxian>=shangxian)led=0;
  68.                  else led=1;
  69.         }
  70. }
  71. void keyscan()
  72. {
  73. if(key1==0)
  74. {
  75. delay(5);
  76.         if(key1==0)
  77.         {
  78.                 flag++;
  79.             if(flag>2)flag=0;
  80.         }
  81.                 while(!key1);        
  82. }
  83.           if(key2==0)
  84.         {
  85.            delay(5);
  86.                 if(key2==0)
  87.         {
  88.                 if(flag==1)
  89.         {
  90.                 xiaxian++;
  91.                 if(xiaxian>=89)xiaxian=89;
  92.         }
  93.                 else if(flag==2)
  94.         {
  95.                 shangxian++;
  96.                 if(shangxian>=90)shangxian=90;
  97.         }
  98.         }
  99.          while(!key2);        
  100. }
  101.         if(key3==0)
  102. {
  103.         delay(5);
  104.         if(key3==0)
  105.         {
  106.           if(flag==1)
  107.                 {
  108.                   xiaxian--;
  109.                         if(xiaxian<0)xiaxian=0;
  110.                 }
  111.                         else if(flag==2)
  112.                 {
  113.                         shangxian--;
  114.                         if(shangxian<1)xiaxian=1;
  115.                 }
  116.         }
  117.                 while(!key3);        
  118. }
  119. }
  120. void display1(uchar yi,uchar er,uchar san,uchar si)
  121. {
  122.         P2=0X01;
  123.         P0=tab[yi];
  124.         delay(1);
  125.         P2=0X02;
  126.         P0=tab[er];
  127.         delay(1);
  128.         P2=0X04;
  129.         P0=tab3[san];
  130.         delay(1);
  131.         P2=0X08;
  132.         P0=tab[si];
  133.         delay(1);
  134. }
  135. void display2(uchar yi,uchar er,uchar san1,uchar si)
  136. {
  137.         P2=0X01;
  138.         P0=tab[yi];
  139.         delay(1);
  140.         P2=0X02;
  141.         P0=tab[er];
  142.         delay(1);
  143.         P2=0X04;
  144.         P0=tab[san1];
  145.         delay(1);
  146.         P2=0X08;
  147.         P0=tab[si];
  148.         delay(1);
  149. }
  150. void delay(int ms)
  151. {
  152.         int i,a;
  153.         for(i=ms;i>0;i--)
  154.         for(a=125;a>0;a--);
  155. }
复制代码
全部资料51hei下载地址:
智能水温控制系统.rar (50.78 KB, 下载次数: 34)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表