基于51的电动车简易防盗系统

说 明:

  •   433M的D3连接到P10口,D1连接到P13口
    
  •   继电器的IN口连接到P11口,将振动检测模块的DO连接到P12口。
    
  •   当按下A时,振动检测模块开始工作,当按下C时,振动检测模块关闭
    
  •   当振动检测模块开启的时候,检测到振动后,关闭继电器一秒钟(低电平时关闭)	
    

main.c

#include <STC89C5xRC.H>
#include "intrins.h"
sbit A=P1^0;//433M的A按键
sbit C=P1^3;//433M的C按键
sbit switcher=P1^1;//继电器
sbit vibration=P1^2;//振动模块
sbit ledOne=P3^7;//led1
int workState=0;//工作模式标志位
int switcherTemp=0;//继电器标志位
int count_1;//中断0中定时器内技术标志
/**
*函数名称:workStateChoose
*函数功能:当按下A时,振动检测模块开始工作,当按下C时,振动检测模块关闭
*备 注:
*/
void workStateChoose()
{
	if(A==1)
	{
		workState=1;
	}
	if(C==1)
	{
		workState=0;
	}
	if(workState==1)
	{
		ledOne=0;
	}
	else
	{
		ledOne=1;
	}
}
/**
*函数名称:switcherWork
*函数功能:在振动检测模块工作时,当检测到振动时,打开继电器否则关闭继电器
*备 注:
*/
void switcherWork()
{
	if(workState==1)
	{
		if(vibration==0)
		{
			switcherTemp=1;
		}
	}
	if(workState==0)
	{
		switcherTemp=0;
	}
}
/**
*函数名称:Timer0Init
*函数功能:中断函数,每5毫秒中断一次
*备 注:
*/
void Timer0Init(void)		//5毫秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x00;		//设置定时初始值
	TH0 = 0x28;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	ET0=1;
	EA=1;
}

/**
*函数名称:timer0Service
*函数功能:中断函数服务函数,当继电器打开后开始工作,当继电器开启一秒后自动关闭
*备 注:
*/
void timer0Service() interrupt 1
{
	TL0 = 0x00;		//设置定时初始值
	TH0 = 0x28;		//设置定时初始值
	if(switcherTemp==1)
	{
		switcher=0;
		count_1++;
		if(count_1>=200)
		{
			count_1=0;
			switcherTemp=0;
			switcher=1;
		}
	}
	else
	{
		switcher=1;
		count_1=0;
	}
}
/**
*函数名称:main
*函数功能:主函数
*备 注:
*/
void main()
{
	Timer0Init();
	while(1)
	{
		workStateChoose();
		switcherWork();
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值