51单片机雨滴传感器触发蜂鸣器LED

180it 2022-03-20 PM 1019℃ 0条
#include<reg51.h>
#include<stdio.h>
#include<intrins.h>    

sbit ydcgq=P1^1; //引脚
sbit led=P1^2; //引脚
sbit beep=P1^5; //引脚

typedef unsigned int u16;
typedef unsigned char u8;

unsigned char date;

void delays(unsigned int n) //毫秒延时函数
{
    unsigned int a,b;
        for(a=0;a<n;a++)
            for(b=0;b<110;b++);
}


void delay(u16 i) //10倍微秒延时函数,延时10*t微秒
{
    while(i--);    
}

void Alarm(u8 t) //蜂鸣器报警,持续t秒
{
 u8 i,j;     
 for(j=0;j<t;j++)
 { for(i=0;i<200;i++)
      {beep=0;delay(50);beep=1;delay(50);}
   //for(k=0;k<100;k++)
     // {beep=0;delay_us(110);beep=1;delay_us(110);}
 }
}

void Initial_com(void)
{
     EA=1;        //开总中断
     ES=1;        //允许串口中断
     ET1=1;        //允许定时器T1的中断
     TMOD=0x20;   //定时器T1,在方式2中断产生波特率
     PCON=0x00;   //SMOD=0
     SCON=0x50;   // 方式1 由定时器控制
     TH1=0xfd;    //波特率设置为9600
     TL1=0xfd;
     TR1=1;       //开定时器T1运行控制位

}

void main()
{
    Initial_com();
    while(1)
    {
  
        if(ydcgq==0)//检测到雨滴
        {

        led=0;
        delay(50000); //450ms
        led=1;
        delay(50000); //450ms    

        Alarm(5);//启动报警响5秒    
            
        }

        if(ydcgq==1)//未检测到雨滴
        {
        beep=led=0;  // 关闭beep 和 led

        }
        

        
    if(RI)
        {
            date=SBUF;
            SBUF=date;
            RI=0;
        }
    }
}
支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

51单片机雨滴传感器触发蜂鸣器LED