基于51单片机的电动车防盗系统proteus仿真

硬件设计

链接:https://pan.baidu.com/s/1wnOX12XFd0ZznX2kQ5P8CA
提取码:9piw
在这里插入图片描述

代码设计

#include <reg52.h>

#define uc unsigned char
#define ui unsigned int

sbit SOS	=	P1^2;//测试
sbit bufang	=	P1^4;//布放按键
sbit chefang=	P1^3;//撤防
sbit baojing=	P1^1;//蜂鸣器
sbit jdq	=	P1^0;//继电器
sbit led1=P0^2;
sbit led2=P0^3;
sbit sos1=P0^0;//第一路报警
sbit sos2=P0^1;//第二路报警	 //热释电

bit bdata flag,flag1;//flag布防标志,flag1布防倒计时标志 
uc t,t1,js;			//定时器专用变量 

void delay(ui x)	//延时函数1ms  
{
	ui i,j;
	for(i=0;i<x;i++)
	for(j=0;j<110;j++);
}
	
void kongzhi()		//控制函数 
{
	if((bufang==1)&&(flag==0))	//在报警等待时按下布防键 
	{
		delay(10);
		if((bufang==1)&&(flag==0))
		{
		P2=0x85;		//显示字母b 
			t=0;
			t1=0;			//清零计时器 
			TR0=1;			//打开计时器 
			baojing=0;
			led1=0;
			led2=0;
			delay(500);
			baojing=1;
			led1=1;
			led2=1;
		}
	}
	if((flag==1)&&(sos1==0))	//震动传感器按下,人体传感器必然起作用,但是人体传感器触发震动传感器不一定触发//
	{
	    
		flag1=1;			//蜂鸣器鸣响 
		led1=0;	   
		led2=0;
		jdq=0;
		TR0=1;				//开启定时器 
	}
	if((flag==1)&&(sos2==0))	//报警按键按下
	{

		TR0=1;		
		led2=0;	   
	}
	if((flag==0)&&(SOS==1))	//报警按键按下
	{
		flag1=1;			//蜂鸣器鸣响 
		led1=0;
		led2=0;	 
		P2=0xbf;			//显示"-"
		jdq=0;
		TR0=1;				//开启定时器 
	}
	if(chefang==1)			//撤防键按下 
	{
		delay(10);
		if(chefang==1)
		{
			{
			    P2=0xff;		//关闭显示
				flag1=0;
				baojing=1;	//关闭蜂鸣器 
				flag=0;		//停止计时器计时
				TR0=0;		//关闭计时器 
				led1=1;
				led2=1;
				jdq=1;
			}
		}
	}
}

void init()	//初始化函数 
{
	TH0=0x4b;
	TL0=0xff;
	TMOD=0x01;
	EA=1;
	ET0=1;
	TR0=0;		//定时器初始化 
	bufang=0;
	SOS=0;
	chefang=0;	//按键初始化
	jdq=1; 
}

void main()	//主函数
{
	init();	//调用初始化 
	while(1)//循环
	{
		kongzhi();//控制函数 
	}
}

void time() interrupt 1//定时器函数 
{
	TH0=0x4b;
	TL0=0xff;		//重新赋初值 
	t++;
	if(t==20)
	{
		t=0;
		t1++;
		if(t1==2)//计时到30s时开启布防数码管停止显示  关闭定时器   
		{
			t1=0;
			flag=1;
			P2=0xff;
			TR0=0;
		}
	}
	if((t>=10)&&(flag1==1))//报警
	{
		baojing=~baojing;
		js++;
		if(js==120)
		{
			js=0;
			flag1=0;
			baojing=1;	//关闭蜂鸣器 
			flag=0;		//停止计时器计时
			TR0=0;		//关闭计时器 
			led1=1;
			led2=1;
			jdq=1;
			t=0;
			t1=0;			//清零计时器 
			TR0=1;			//打开计时器 
		}
		t=0;
	}
}


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值