51单片机电动车防盗报警器

目录

具体实现功能

设计介绍

51单片机简介

资料内容

原理图(AD19)

程序(Keil5)

全部资料

资料获取


具体实现功能

具体功能:

(1)系统分为主机和从机。从机上有布防、撤防、紧急报警按键。

(2)按下布防按键后,进入监控状态,当主机检测到震动或人体时,进行报警。

(3)按下撤防按键解除布防。当遇到特殊紧急情况时,可按下紧急报警键,进行报警。

设计介绍

51单片机简介

51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。

本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容

原理图(AD19)

本系统原理图设计采用Altium Designer19,具体如图。

注1:请使用Altium Designer19直接打开资料中的工程文件(资料中已说明打开方式)!

注2:此设计需按照原理图制作实物,不可直接烧录到任何开发板中运行(需要修改程序)!

程序(Keil5)

本设计利用KEIL5软件实现程序设计。

主函数如下:

复制代码
////////////////
void main()							  //主函数
{
	uchar j;
	relay=0;
	key1=0;
	key2=0;
	key3=0;	
	Uart_init();					  //中断初始化函数
	init_eeprom();
	LED_Y=LED_G=0;
	delay(5000);
	SendString("AT\r\n");
    delay(1000);
	SendString("AT\r\n");
    delay(1000);
	SendString("ati\r\n");
    delay(1000);
	SendString("ati\r\n");
    delay(1000);
    SendString("ATH\r\n");
    delay(1000);
	SendString("AT+IPR=9600\r\n");
    delay(1000);
	RsPoint=0;
	for(j=0;j<RsBuf_N;j++)
	{
		RsBuf[j]=0;
	}
    delay(10000);

	SendString("AT\r\n");
    delay(1000);
	SendString("ati\r\n");
    delay(1000);
    SendString("ATH\r\n");
    delay(1000);
    SendString("AT+CMGF=1\r\n");
    delay(1000);
	SendString("AT+CNMI=2,1,0,0,0\r\n");
    delay(1000);
	SendString("AT+CSCS=\"UCS2\"\r\n");		
	delay(1000);	
	SendString("AT+CSMP=17,0,2,25\r\n");		
	delay(1000);
	SendString("AT+CMGL=\"REC UNREAD\",0\r\n");
	delay(1000);
	REN=1; 		 // 不允许串口接收数据 	 
	ES=1; 	     // 串口中断不应许
	LED_Y=LED_G=1;

	while(1)						  //进入循环
	{
		if(RsPoint>10)
		{
    		deal();
			RsPoint=0;
		}
		keyscan();					  //按键函数
		
		if((rsd==0||zd==0)&&flag_BF==1&&TR0==0)		  //热释电有信号并且在布防状态
		{
			if(rsd==0) flag_rsd=0;
			if(zd==0) flag_zd=0; 
			LED_G=flag_zd;
			LED_Y=flag_rsd;							  //点亮发送短信指示灯
			j=200;				 //初值200
			while(j--)
			{
				delay(10);		 //5ms*200=1s
				if(rsd==0) flag_rsd=0;
				if(zd==0) flag_zd=0;
				if(flag_rsd==0&&flag_zd==0)
				break;
			}

			LED_G=flag_zd;
			LED_Y=flag_rsd;							  //点亮发送短信指示灯
			GSM_work();					  //发送短信函数
		}
		if(SOS==1)
		GSM_work();					  //发送短信函数
	}	  
}

void T0_time() interrupt 1			  //定时器0中断服务函数
{
	TH0=0x4b;
	TL0=0xff;						  //重新赋初值50ms
	m++;							  //每50ms变量m加一次
	if(m>=10)						  //加10次,也就是500ms
	{
		m=0;						  //m清零
		n++;						  //变量n加一次是500ms
		if(flag==1/*||flag_bj==1*/)		  //布防计时并且再次发送短信等待变量为1
		{
			LED_G=!LED_G;			  //布防指示灯闪烁
			LED_Y=LED_G;
		}
		if(flag_alarm==1)			  //报警开关打开
		{
			BUZZ=!BUZZ;				  //蜂鸣器取反
			sec_alarm++;			  //报警计时
			if(sec_alarm>=40)		  //取反十次,也就是蜂鸣器响5次
			{
				sec_alarm=0;		  //秒清零
				BUZZ=1;				  //关闭蜂鸣器
				flag_alarm=0;		  //报警变量清零
				sec=0;
				TR0=0;
				LED_G=1;			  //布防指示灯闪烁
				LED_Y=1;
			}
		}
		
		if(n>=2)					  //n大于等于2,也就是加两次,就是1s
		{
			n=0;					  //n清零
			sec++;					  //秒加
			if(sec>=20&&flag==1)	  //秒加到20,布防计时状态下
			{
				BUZZ=1;	//关闭蜂鸣器
				sec=0;				  //秒清零
				flag=0;				  //开始布防变量清零
				LED_G=1;			  //布防指示灯熄灭
				LED_Y=1;
				flag_BF=1;			  //布防变量置1,代表进入布防状态
				TR0=0;				  //关闭定时器
				sec_alarm=0;		  //秒清零
			}
		}
	}
}

程序运行结果如图:

注:请使用KEIL C51直接打开资料中的工程文件(资料中已说明打开方式)!

全部资料

全部资料包括原理图(AD19)、程序(Keil5)、protues仿真(protues8.7)、设计报告(仅供参考)、仿真视频、开发资料、仿真视频、单片机最小系统介绍等,全网最全!资料内容如下图所示!!

资料获取

https://docs.qq.com/doc/DT1pkdERzcVBpYUhk