找回密码
 立即注册

QQ登录

只需一步,快速开始

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

漏水检测及控制装置(单片机源码)

[复制链接]
跳转到指定楼层
楼主
ID:338668 发表于 2018-5-26 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void init()
{        
        TMOD &= 0xf0;
  TMOD|= 0x01;
        TH0=(65536-50000)/256; //设置T0计数初值高8位,定时时间50ms
        TL0=(65536-50000)%256; //设置T0计数初值低8位
        ET0=1;                       //开放T0中断允许
        EA=1;                  //开放总中断允许
}
void init1()
{
        TMOD &= 0x0f;
  TMOD|= 0x10;
        TH1=(65536-50000)/256; //设置T0计数初值高8位,定时时间50ms
        TL1=(65536-50000)%256; //设置T0计数初值低8位
        ET1=1;                       //开放T0中断允许
        EA=1;                  //开放总中断允许
}

void timer0() interrupt 1
{
        TH0=(65536-50000)/256; //重新设置T0计数初值高8位
        TL0=(65536-50000)%256; //重新设置T0计数初值低8位
  k++;
         LCD_Clear();                 //50ms计数器加1
        if(k==20){
                k=0;                //50ms计数器清零
                time++;
        }
        if(time>60){
                time=0;
        }
}

void timer1() interrupt 3
{
        TH1=(65536-50000)/256; //重新设置T0计数初值高8位
        TL1=(65536-50000)%256; //重新设置T0计数初值低8位
        z++;
        LCD_Clear();
        if(z==20)
        {
                z=0;                //50ms计数器清零
                waterjs--;        
        }
        if(waterjs==0&&djs==0){
                sol=0;//自动关断电磁阀
                waterjs=5;
                djs=1;
        }
        if(waterjs==0&&djs==1){
                djs=2;
                flag=1;
                sol=1;//5秒之后电磁阀打开
                flow=1;        
                DelayMs(2000);
        }

        if(det==1&&flow==1){//没有水流 正常  
                led2=0;
                led3=0;
                led4=1;
                TR1=0;
                flag=0;
                mode+=1;
                if(mode==1){
                time=30;
                        if(det==0&&flag==2){
                        TR0=0;
                        waterjs=15;
                        flag=1;
                        if(flag==1&&waterjs!=0){
                        flag=3;
                        TR1=1;//kai
                  }}
                        if(time==45){TR0=0;}
                }
                if(mode==2){
                TR0=1;
                        waterjs=10;
                        if(time==60){TR0=0;}
                }
                if(mode==3){
                        TR0=1;
                        waterjs=5;
                        if(time==30){TR0=0;}
                }
                if(mode==4){
                        time=0;
                        TR0=1;
                        waterjs=20;
                        TR1=1;
                        mode0_flag=1;
                        if(waterjs==0&&mode0_flag==1)
                        {
                                sol=1;
                                mode=0;
                        }
                }
        }

        if(det==0&&flow==1){//有水流漏水
                flow=3;                        
                waterjs=2;//两秒之后
        }
        if(det==0&&waterjs==0){
                led5=0;
                flow=2;
        }
        if(waterjs==0&&flow==2){
                sol=0;//2秒之后电磁阀关闭
                led4=0;
                led3=0;
                led2=1;
                TR1=0;
                time=0;
        }
        if(waterjs<=2){
                led1=0;
                DelayMs(100);
                led1=1;
        }
}
void time30(){
        if(0<=time&&time<=30){
                if(det==0&&flag==0){
                        TR0=0;
                        waterjs=15;
                        flag=1;
                        if(flag==1&&waterjs!=0){
                        flag=2;
                        TR1=1;//kai
                  }}if(det){
                        TR0=1;
                }
        }
}

void time45(){
                if(30<=time&&time<=45){
        if(det==0&&flag==0){
                  TR0=0;
                        waterjs=10;
                        flag=1;
                        if(flag==1&&waterjs!=0){
                        TR1=1;//kai
                        TR0=0;}//guan
                        }if(det){
                        TR0=1;
                        led=1;
                }
        }
}

void time60(){
                if(45<=time&&time<=60){
                if(det==0&&flag==0){
                        TR0=0;
                        waterjs=5;
                        flag=1;
                        if(flag==1&&waterjs!=0){
                        TR1=1;//kai
                        TR0=0;}//guan
                        }if(det){
                        TR0=1;
                }
        }
}

漏水检测及控制装置.rar

73.33 KB, 下载次数: 14, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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