常闭型震动传感器51单片机程序的应用

目录

  • 51系列单片机程序
    • 1、运用定时器中断
    • 2、运用外部中断
  • Arduino程序

51系列单片机程序

关于常闭型震动传感器51单片机的程序我这里提供两种方法供大家参考。

1、运用定时器中断

程序如下:

*****************************************/
#include
unsigned char date;
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^1;

/* 函数申明 -----------------------------------------------*/
void delay(uint z);
void Initial_com(void);

/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}

/*
********************************************************************************
** 串口初始化函数
********************************************************************************
*/
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运行控制位
}
 

/*
********************************************************************************
**主函数
********************************************************************************
*/
main()
{
Initial_com();
while(1)
{

if(key1==1)
{
delay(); //消抖动
if(key1==1) //确认触发
{
SBUF=0X01;
delay(200);


}

}

if(RI)
{
date=SBUF; //单片机接受
SBUF=date; //单片机发送
RI=0;
}


}
}

感兴趣的童鞋可以参考一下。

2、运用外部中断

程序如下:

#include
unsigned char date;
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;//模块D0接口
uint flag = 0;
sbit Beep = P1^5;
/*  ---------------------函数申明--------------------------*/
void delay(uint z);
void beep(uint m, uint k);

/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
	uint i,j;
	for(i=z;i>0;i--)
		for(j=110;j>0;j--);
}


/*
********************************************************************************
**	定义蜂鸣器函数
********************************************************************************
*/
void beep(uint m, uint k) //修改参数可改变蜂鸣器音调
{
	uchar i = 0;
	uint j = 0;
	for(j = m;j > 0;j --)
	{
		for(i = 0;i <= 50; i++)
		{
			Beep = ~Beep;
			delay(k);
		}
	}
}

/*
********************************************************************************
**	主函数
********************************************************************************
*/
main()
{
	IT0 = 1;                        //set INT0 int type (1:Falling 0:Low level)
	EX0 = 1;                        //enable INT0 interrupt
	EA = 1 ;
	while(1)
{

if(flag==1)
{
	delay(); //消抖动
	if(key1==1) //确认触发
	{
		SBUF=0X01;
		beep(3,1);
		delay(200);
}

}

if(RI=0)
	{
		date=SBUF; //单片机接受
		SBUF=date; //单片机发送
		RI=1;
}

}
}
void exint0() interrupt 0           //(location at 0003H)
{
	if(key1==0)	
		flag = 1;
	delay(100);	
}

在这个程序中我加入了蜂鸣器,实现的现象是:上电接入震动模块,每震动一次蜂鸣器便响一下,应用起来特别方便。

Arduino程序

地址:
震动传感器Arduino程序的应用

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