1.3单片机入门项目(电动车报警器)

该系统利用433M无线模块进行控制,设有警卫和空闲两种模式。在警卫模式下,震动触发继电器闭合,喇叭报警;空闲模式则无响应。用户可通过按键切换模式,长响为进入警卫模式,短响为解除警戒。微控制器使用标志符mark来判断当前状态。
摘要由CSDN通过智能技术生成

1.3.1需要的硬件

还有杜邦线别忘记了

1.3.2项目实现的目标

  1. 通过433M无线发射接收模块控制,报警状态,上锁警卫模式or无锁空闲

  1. 在警卫模式下,当发生震动时,继电器闭合,喇叭报警

  1. 在空闲模式下无反应

  1. 在上锁or开锁时,喇叭通过长响和短响提醒

1.3.3还是有点难度,话不多说直接上代码

这里我们运用了标志符 mark 来判断是否进入警报模式,这在以后的学习中很常见

#include "reg52.h"
#include<intrins.h>
#define J_ON 1
#define J_OFF 0
sbit switcher = P1^0;
sbit D0_ON = P1^1;
sbit D1_OFF = P1^2;
sbit vibrate = P1^3;

void Delay2000ms() //@11.0592MHz
{
    unsigned char i, j, k;
    _nop_();
    i = 15;
    j = 2;
    k = 235;
    do
    {
    do
    {
        while (--k);
            } while (--j);
    } while (--i);
}

void Delay500ms() //@11.0592MHz
{
    unsigned char i, j, k;
    _nop_();
    i = 4;
    j = 129;
    k = 119;
    do
    {
    do
    {
        while (--k);
            } while (--j);
    } while (--i);
}

void main()
{
    int mark = J_OFF;

    while(1)
    {
    /    /1. 如果a按键被按下,设定为开启警报模式
        if(D0_ON == 1){
            //长响,表示进入警报模式
            switcher = 0;
            Delay2000ms();
            switcher = 1;
            //设定警报模式标记
            mark = J_ON ;
        }
        //2. 如果b按键被按按下,设定为关闭警报模式
        if(D1_OFF == 1){
            //短响,表示进入解除警报模式
            switcher = 0;
            Delay500ms();
            switcher = 1;
            //设定警报解除模式标记
            mark = J_OFF ;
        }
        //3. 如果标记是在警报模式下
        if(mark == J_ON){
            //3.1 如果发生了震动
            if(vibrate == 0){
                    //喇叭响,给继电器低电平,导通
                    switcher = 0;
             }//3.2 如果不发生震动
             else{
                    //喇叭不响,给继电器高电平,不导通
                    switcher = 1;
                }
            }
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值