31、基于51单片机老人防跌倒蜂鸣器报警加速度检测系统设计

毕设帮助、开题指导、技术解答(有偿)见文末。

目录

摘要

一、硬件方案

二、设计功能

三、实物图

四、原理图 

五、PCB图

六、程序源码

七、资料包括 


摘要

目前,随着当今社会老龄化进程的逐步加剧,我们在新闻中经常能看到老人跌倒了,无人扶,进而导致老人的死亡。对于这种悲剧,我们也很无奈,因为怕扶了老人,可能会被讹,老年人跌倒造成的致病、住院率和死亡率急速提高,带来了严重的社会经济负担。因此,在不影响老年人正常活动的前提下,通过科学的手段监测老年人的活动,在检测到跌倒后迅速报警求助,可以有效地减少老年人跌倒带来的健康伤害和医疗开支。在分析比较国内外跌倒检测相关技术研究后,本文提出了一种基于ADXL345倾角传感器的跌倒检测与报警系统。ADXL345倾角传感器实时采集老人在日常活动中产生的倾角数据,然后将数据送到单片机STC89C52进行处理,并判断老年人的运动状态。当系统检测到跌倒发生时,发出报警声音提醒老人和周围的人。

关键词:单片机,按键,蜂鸣器

一、硬件方案

本系统采用51单片机+ADXL345重力加速度传感器、按键、蜂鸣器报警及电源组成。

二、设计功能

1、本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用)

2、板子竖直放置的时候,蜂鸣器不报警,板子歪倒一定角度,一定时间没有恢复竖直,则蜂鸣器鸣叫报警。

3、系统带有误报警按键,蜂鸣器报警的时候,如果老人认为是误报警,则按键按下,蜂鸣器停止报警。

4、按键停止报警后,如果还未站起,延时一段时间会报警,防止老人发生意外。

三、实物图

四、原理图 

五、PCB图

六、程序源码

#include <reg52.h> 
#include <intrins.h>
#include <stdio.h>
#include  <math.h>    //Keil library  
#include "delay.h"
#include "adxl345.h"
 
 
sbit buzzer=P1^4;	//引脚定义
sbit key=P2^2;  
 
unsigned long times_20ms=0;		//定时器计数
unsigned char reportFlag=0;		//确认是否发送警报
unsigned char CheckNum=0;				//adxl345采集次数
unsigned char ErrorNum=0;				//adxl345采集次数中正常未跌倒次数
unsigned char read_adxl345=0;		//读取adxl345数据标志
unsigned char Delay_Sec=0;				//秒延时 定时器中断中处理
 
void Init_Timer0(void);//定时器初始化
 
void main (void)
{
	Init_Timer0();        //定时器0初始化
 
	buzzer=0;	//打开蜂鸣器		
	DelayMs(100);          //延时有助于稳定
	buzzer=1;		 	//关闭蜂鸣器
 
	Init_ADXL345();                 	//初+始化ADXL345
	if(Single_Read_ADXL345(0X00)!=0xe5)	//读出的数据为0XE5,表示正确//**All notes can be deleted and modified**//
	{
		DelayMs(5);
//		SendStr("ready ok",8);//显示第二行
	}
	else
	{
		DelayMs(3);
	}
 
	buzzer=1;	//闭合蜂鸣器
	
	while(1)         //主循环
	{
		if(read_adxl345==1)	 //进行读取
		{
			read_adxl345=0;	//读取标志清除
			ReadData_x();		//读取数据 并进行判断 再该函数内部
			CheckNum++;
			if((temp_X<550)||(abs(temp_Y)>750))       //方位值判断 查看正常次数
			{
				ErrorNum++;		   //异常计数
			}
			if(CheckNum>=5)	  	//进行5次处理
			{
				if(ErrorNum>=1)	   //角度出现错误 5次出息1次情况
				{
					if(reportFlag==0)	   //检测是否第一次开始 是开始延时
					{
					 	Delay_Sec=0;	//延时清零
					}
					reportFlag=1;	 //警报									
				}
				else
				{					
					reportFlag=0;	  //不进行警报
					Delay_Sec = 0;	
				}						
				ErrorNum=0;		  //清空滤波计数
				CheckNum=0;		  //清空检测次数
			}
		}				
 
		if((reportFlag==1)&&(Delay_Sec>=3))//3S   上报
		{
			buzzer=0;	//打开蜂鸣器		
		}
		else
		{buzzer=1;}	 	//关闭蜂鸣器
		if(key == 0)
		{
			DelayMs(10);
			if(key == 0)			//有按键触发 关闭蜂鸣器响声
			{
				Delay_Sec=0;   	//清空延时计数
				reportFlag=0;
				buzzer=1;		//关闭蜂鸣器
			}
		}
	}
}
 
void Init_Timer0(void)
{
//**All notes can be deleted and modified**//
  TMOD |= 0x10;  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}
 
 
void Timer0_isr(void) interrupt 1 
{
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	times_20ms++;
	if(times_20ms%10==0)		  //200ms 
	{
		read_adxl345=1;		 //启动转换
		if(reportFlag==1)//如果处于触发警报 延时自加

七、资料包括 

需要完整的资料可以点击下面的名片,找我要资源压缩包的百度网盘下载地址及提取码。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠一电子设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值