震动传感器共有4个引脚,VCC、GND、AO、DO,我们用到的引脚有VCC、GND、DO。 VCC和GND分别接到51单片机的5V电源和GND引脚,DO则是接到自己选择的引脚,我这里选择的是P3^3引脚。
#include "reg52.h" //51单片机的头文件
#include "intrins.h" //_nop_()函数的头文件
sbit led1 = P3^7; //led1的引脚定义
sbit DO = P3^3; //震动传感器DO的引脚定义
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
//用while不断查询震动传感器的状态
while(1)
{
//当DO为低电平时,说明震动传感器感受到了震动
if(DO == 0)
{
//led1灯亮
led1 = 0;
//延时1秒,使效果更明显
Delay1000ms();
}
else
{
//led1灯灭
led1 = 1;
}
}
}
震动传感器点灯的原理其实不难,就是控制IO给高低电平,通过while来一直查询震动传感器的状态。