前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于51设计的宠物防丢系统(蓝牙+Android上位机)

基于51设计的宠物防丢系统(蓝牙+Android上位机)

作者头像
DS小龙哥
发布2022-01-21 14:21:02
9130
发布2022-01-21 14:21:02
举报

一、环境介绍

单片机型号: STC89C52

编程软件: keil5

编程语言: C语言

手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)

完整源码下载地址: https://download.csdn.net/download/xiaolong1126626497/19766960

资料包里包含了: 51单片机源码、Android手机APP源码、可执行文件apk、各种报警声音、说明文档、下载工具。

二、功能与硬件介绍

单片机采用STC89C52,资料非常丰富,keil建工程的时候选择AT89C52即可。

与手机通信的蓝牙采用:HC05 串口蓝牙。

功能介绍:

防丢功能主要是依靠蓝牙来判断是否已经断开。

1. 开发板复位后,蓝牙如果未连接状态,5秒之后蜂鸣器就会报警

2. 蓝牙一旦连接成功后,就需要以300ms的频率向设备发送指定的数据,保活。

3. 如果蓝牙连接上之后,没有发送数据到设备,300ms之后蜂鸣器就会报警。

4. APP上可以手动点击触发报警

5. 单片机按下复位键可以清除报警

APP界面:

如果自己不想焊接,想要直接模块化搭建环境,可以直接淘宝买系统板+模块即可:

蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。

为了简化51单片机的编程代码,可以先使用电脑串口调试助手,将HC05的的参数配置完毕,再接到51单片机上。 将HC05蓝牙配置成从机模式,设置好配对密码。

三、51单片机代码

代码语言:javascript
复制
#include <REG52.H>

#define uchar unsigned char 
#define uint unsigned long
    
uchar buffer[8];	//数据缓存数组

uchar rec_flag=0;	//数据处理标志 
sbit BUZZER = P1^3;
sbit KEY = P3^4;


void delay1ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void Delay(int ms)
{
    while(ms--)
    {
        delay1ms();
    }
}


/************************************************
** 函数名称 : void InitUART(void)
** 函数功能 : 串口初始化函数
** 输    入 : 无
** 输    出 : 无
** 说    明 : 定时器1方式2波特率发生模式,波特率9600bps,晶振11.0592MHZ,误差0%
**TMOD定时器计数器寄存器,SCON串行口寄存器,PCON功率控制寄存器,EA访问外部程序存储器控制信号,ES串口中断允许控制位,TR1定时器1的运行控制位
************************************************/
void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = 0xFD;
    PCON = 0x00;
    ES = 1;
    TR1 = 1;
	EA = 1;
}

/*********************************************
**名称:void TxChar(uchar ch)
**功能:串口发送函数
**输入:uchar ch>当前发送数据
**输出:无
*********************************************/
void TxChar(unsigned char ch)
{
	SBUF=ch;  
	while(!TI);
	TI=0;										
}
void putstring(uchar  *puts) //发送数据
{  
	for(;*puts!=199;puts++)   //遇到停止符199结束 
	TxChar(*puts); 
} 
/************************************************
** 函数名称 : void ser(void) interrupt 4
** 函数功能 : 串口接收中断函数
** 输    入 : 无
** 输    出 : 无
** 说    明 : 处理串口发送过来的数据串 
************************************************/
void ser(void) interrupt 4
{
	static uchar i;
    if(RI==1)
    {
        RI  =   0;
        if(rec_flag==0)
		{
			if(SBUF==0xff)
			{
				rec_flag=1;	
				i=0;
			}			
		}
		else
		{
			if(SBUF==0xff)
			{
				rec_flag=0;	
				if(i==3)
				{
					//Communication_Decode();		
				}
				i=0;
			}
			else
			{
				buffer[i]=SBUF;
				i++;
			}
		}		
    }
}
/************************************************
** 函数名称 : void main(void)
** 函数功能 : 主函数
** 输    入 : 无
** 输    出 : 无  
宠物检测

** 说    明 :
************************************************/

void main(void)
{
	uint STOP=0,a=0,a1=0;
	uchar bueezr_flag=0,bueezr_count=0,buzzer_time=3;//蜂鸣器报警变量
	uchar rxbuf[9];
	InitUART();
	rxbuf[0]='A';
	rxbuf[1]=25;
	rxbuf[2]='B';
	rxbuf[3]=99;
	rxbuf[4]='C';
	rxbuf[5]=99;
	rxbuf[6]='D';
	rxbuf[7]=99;
	rxbuf[8]=199;
	while(1)
	{
		putstring(rxbuf);//发送数据函数
		Delay(300); //延时300ms
		if(KEY==0 && !bueezr_flag){while(KEY==0);rxbuf[1]=22;bueezr_flag=1;}
		if(KEY==0 && bueezr_flag){while(KEY==0);rxbuf[1]=11;bueezr_flag=0;a=0;BUZZER=1;}
		if(!a)STOP++;	
		
        //FF 00 00 01 FF 
        //
        //判断APP下发的数据
		if(buffer[2]==0x01) //取消蜂鸣器
		{
			STOP=0;
			a1=1;
			buffer[2]=0x00;
		}
		
        //15个300ms还没有收到APP下发的数据,继续报警
		if(STOP>15 && a1)
		{
			bueezr_flag=1;			
		}
			
		if(buffer[1]==0x01)  //手动模式报警
		{
			bueezr_flag=1;//蜂鸣器直接响
			a=1;  //手动模式标志位
		}
		
		/*******蜂鸣器报警********/
		bueezr_count++;if(bueezr_count>buzzer_time*10)bueezr_count=buzzer_time+1;
		if(bueezr_count%buzzer_time==0 && bueezr_flag)
		{
			BUZZER=~BUZZER;//蜂鸣器取反  发出声音提示
		}		
	}	
}

四、Android手机APP代码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境介绍
  • 二、功能与硬件介绍
  • 三、51单片机代码
  • 四、Android手机APP代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档