资讯详情

51单片机和振动传感器的结合(STC89C52RC)

说 明:振动检测模块DO引脚与单片机相连P当振动检测模块检测到10时 到振动时,DO通过检测口输出低电平P控制状态10LED1灭, 当检测到振动时,LED一亮两秒后,熄灭。(此程序分别使用延迟。 中断完成亮两秒的任务) 注:下载时勾选6T(双速)模式 代码:

#include <STC89C5xRC.H> #include "intrins.h" sbit led_1=P3^7; sbit led_2=P3^6; sbit vibrate=P1^0;  ///振动检测 振动时输出低电平 int led_2_temp;  //LED2的标志物 //======================================================= void Delay2000ms()  //@11.0592MHz 延时2秒 { 
         unsigned char i, j, k;   _nop_();  i = 15;  j = 2;  k = 235;  do  { 
          do   { 
           while (--k);   } while (--j);  } while (--i); }  void vibrate_detection_1()  ///振动检测(延迟模式) { 
         if(vibrate==0)  { 
          led_1=0;   Delay2000ms();   led_1=1;  } } //======================================================= //======================================================= void Timer0Init(void)		//5毫秒@11.0592MHz
{ 
       
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x00;		//设置定时初始值
	TH0 = 0xEE;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=1;
	EA=1;
}
int count_1;
void timer0_service() interrupt 1   //定时器0的服务函数,LED2每次亮2秒
{ 
       
	if(led_2_temp==0)
	{ 
       
		count_1++;
		if(count_1>=400)
		{ 
       
			led_2_temp=1;
			count_1=0;
		}
	}
}
void led_control()   //通过LED2标志位来控制LED2的状态
{ 
       
	led_2=led_2_temp;
}
void vibrate_detection_2() //振动检测(定时器模式)
{ 
       
	if(vibrate==0&&led_2_temp==1)
	{ 
       
		led_2_temp=0;
	}
}
//=======================================================
void main()
{ 
       
	led_1=led_2=1;
	Timer0Init();
	while(1)
	{ 
       
// vibrate_detection_1();
		vibrate_detection_2();
		led_control();
	}
}

标签: 11ea开关传感器0050振动传感器振动传感器输出44200205010振动传感器0280217518传感器tf4200250108振动传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台