基于51单片机液位检测与报警

该系统以AT89C51作为核心控制部件,外加传感器,一片A/D转换芯片和数码管来完成系统的预期任务,即液位的检测、显示和超限报警。传感器实现液位信号到电压信号的转换,再由8位A/D转换芯片ADC0809将模拟信号转换为数字信号,实现液位信息的输入,AT89C51从ADC0809读取液位信息后进行数据处理和超限判断,随后将处理过的数据输出到数码管显示,设置最高液位和最低液位,若液位超限则由单片机报警。

#include 
unsigned char code table[]={0xde,0x91,0xcd,0xd5,0x93,0x2b,0x5f,0xd4,0xdf,0xd1};
sbit sw6=P1^5;//水位6
sbit sw5=P1^4;//水位5
sbit sw4=P1^3;//水位4
sbit sw3=P1^2;//水位3
sbit sw2=P1^1;//水位2
sbit sw1=P1^0;//水位1
sbit beep=P1^6;//蜂鸣器
sbit dianji=P1^7;//电机
sbit LED=P2^6;//电机指示灯
sbit red=P2^3;//red
sbit green=P2^4;//green
sbit yellow=P2^5;//yellow

void delay02s(void)
{
  unsigned char i,j,k;
  for(i=100;i>0;i--)
  for(j=100;j>0;j--)
  for(k=248;k>0;k--);
}
        main()
                      {
                         P0=0;
                         while(1)
                         {  
                        if(sw6==0&&sw5==1&&sw4==1&&sw3==1&&sw2==1&&sw1==1)//水位6
                        {
                         dianji=0;
                         LED=0;red=0;green=0;yellow=0;
				                 beep=0;
                        P0=table[6];
                                delay02s();
                        }
                               
                        if(sw6==1&&sw5==0&&sw4==1&&sw3==1&&sw2==1&&sw1==1)//水位5
                        {
													      dianji=0;
                                LED=0;red=0;green=0;yellow=0;
													      beep=0;
                                P0=table[5];
                        }
                       
                        if(sw6==1&&sw5==1&&sw4==0&&sw3==1&&sw2==1&&sw1==1)//水位4
                        {
													      dianji=0;
                                LED=0;red=0;green=0;yellow=0;
													      beep=0;
                                P0=table[4];
                        }
                       
                        if(sw6==1&&sw5==1&&sw4==1&&sw3==0&&sw2==1&&sw1==1)//水位3
                        {         
													        dianji=0;
                                  LED=0;red=0;green=1;yellow=1;
													        beep=0;
                                  P0=table[3];
                        }
                     
                        if(sw6==1&&sw5==1&&sw4==1&&sw3==1&&sw2==0&&sw1==1)//水位2
                        {      
													      dianji=1;
                                LED=1;red=1;green=1;yellow=0;
													      beep=1;
                                P0=table[2];
                        }
                     
                        if(sw6==1&&sw5==1&&sw4==1&&sw3==1&&sw2==1&&sw1==0)//水位1
                        {
													      dianji=1;
                                LED=1;red=1;green=0;yellow=1;
													      beep=1;												
                        P0=table[1];
                        }
               }
         
}

基于51单片机液位检测与报警_第1张图片

基于51单片机液位检测与报警_第2张图片

你可能感兴趣的:(单片机)