找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2374|回复: 1
打印 上一主题 下一主题
收起左侧

基于51单片机的电动车防盗仿真修改数码管显示(最终版本)源程序

[复制链接]
跳转到指定楼层
楼主
基于51单片机的电动车防盗系统设计数码管显示!(最终版本)
文件全部放在附件中了,自行下载,包含电路图、仿真图、流程图、仿真、程序。

电动车防盗仿真修改数码管显示后最后版本.zip (796.47 KB, 下载次数: 57) 功能如下:
1. 遥控器与主机采用315m无线方式通信,两路检测(震动+人体);
2. 遥控器上3个按键,功能是布防、撤防和报警提示;
3. 按下布防按键,主板人体感应模块和震动传感器检测人体和震动,当检测到有信号时,相应的LED灯亮,蜂鸣器响报警。30S后停止报警,也可以通过撤防按键取消报警;
4. 当在布防状态,两个传感器都检测到信号,就都报警,同时对应的指示灯亮,一路检测到信号,也会有相应的指示灯亮和报警;
5.加继电器端口模拟被盗取时切断整车电源。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


电路原理图如下:

单片机程序很简洁:
#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;
        }
}


评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:312929 发表于 2021-4-8 10:17 | 只看该作者
仿真软件需要用8.7版本以上才能打开哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表