目录
一 硬件外设
编辑
编辑
二 震动传感器
三 蜂鸣器
四 继电器
五 震动通过继电器控制警报
五 433M无线射频模块
六 完结
效果展示:
基于C51的无线遥控电动车防盗器
1.蜂鸣器或者报警器
2.震动传感器
3.C52开发板
4.遥控器
5.继电器
6.433M无线射频模块
接线:
DO ->p3.3
VCC->5V
GND->GND
震动传感器也是低电平触发:
delay() 以让效果明显
烧录程序时候拔掉传感器供电,会影响烧录
#include "reg52.h"
#include
sbit ledOne = P3^7;
sbit vibrate = P3^3;
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){
if(vibrate == 0){
ledOne = 0;
Delay200ms();
}else{
ledOne = 1;
}
}
}
蜂鸣器同理,代码没区别,外接线即可
#include "reg52.h"
#include
sbit vibrate = P3^3;
sbit buzzer = P3^2;
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){
if(vibrate == 0){
buzzer = 0;
Delay200ms();
}else{
buzzer = 1;
}
}
}
原理类似
通过继电器来控制电路,比如智能插座,比如220V的灯,比如我们项目不带开关的傻瓜式报警器
当设置继电器为低电平处罚时,STC89C52RC的IO输出低电平,就会导致COM口和NO口闭合,也就是完成报警器的串联电路,开始响。
现在我们就可以来写程序,完成振动控制警报的功能
代码没区别:
继电器被触发,绿灯会亮,会“咯噔”一声响
#include "reg52.h"
#include
sbit vibrate = P3^3;
sbit relay = P3^2;
void Delay200ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){
if(vibrate == 0){
relay = 0;
Delay200ms();
}else{
relay = 1;
}
}
}
警报器需要掐线,然后正负两根线连接在继电器上,但是这个警报器太吵了,这里用蜂鸣器代替
不同点是蜂鸣器有三个接口,使得I/O口始终低电平就好。
代码差不多
#include "reg52.h"
#include
sbit vibrate = P3^3;
sbit relay = P3^2;
sbit buzzer = P3^4;
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
buzzer = 0;
while(1){
if(vibrate == 0){
relay = 0;
Delay1000ms();
}else{
relay = 1;
}
}
}
433m无线模块基础知识 - 百度文库 (baidu.com)
使用D0接口默认低电平,一按高电平,再一按低电平,对应遥控器按键A
#include "reg52.h"
sbit relay = P3^2;
sbit buzzer = P3^4;
sbit D0 = P1^0;
sbit key1 = P2^1;
sbit key2 = P2^0;
void main()
{
buzzer = 0;
while(1){
if(D0 == 1){
relay = 0;
}
if(D0 == 0){
relay = 1;
}
}
}
复合以上代码,加入标记,加入led,led亮表示电动车上锁,灭表示电动车解锁,完成
#include "reg52.h"
#include
sbit relay = P3^2;
sbit vibrate = P3^3;
sbit buzzer = P3^4;
sbit led = P3^7;
sbit D0 = P1^0;
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
buzzer = 0;
led = 1;
while(1){
if(D0 == 1){
led = 0;
if(vibrate == 0){
relay = 0;
Delay1000ms();
}else{
relay = 1;
}
}else{
led = 1;
}
}
}