基于51单片机的汽车灯光报警控制系统proteus仿真原理图PCB

功能:
0.本系统采用STC89C52作为单片机
1.模拟汽车灯光控制系统,支持双闪,转向灯光控制
2.上锁后,非法进入,灯光双闪,喇叭报警,报警电路采用的LED和蜂鸣器组成的声光报警系统
3.本系统采四个功能按键来操控转弯灯、双闪灯
4.采用DC002作为电源接口可直接输入5V给整个系统供电
5.采用HC-SR501人体红外传感器判断车辆内是否有人
6.车门锁采用一个波动开关来模拟演示

原理图:
在这里插入图片描述

PCB :
在这里插入图片描述

主程序:

#include "main.h"

bit refreshFlag = 1;
bit doubleFlashFlag = 0; //双闪标志
bit leftFlag = 0; //左转标志
bit rightFlag = 0; //右转标志
bit alarmSwitch = OFF; //报警开关
bit alarmFlag = 0; //报警标志


void main(void)
{
    Timer0_Init();

    while (1) //主循环
    {
        
        if (refreshFlag == 1) //100ms获取数据
        {
            refreshFlag = 0;
                       
            if (alarmSwitch == ON)
            {
                if (ALARM_PIN == 0) //非法进入检测
                {
                    if (alarmFlag == 0)
                    {
                        alarmFlag = 1;
                        doubleFlashFlag = 1;
                        LED_LEFT = OFF;
                        LED_RIGHT = OFF;
                    }
                }
                else
                {
                    if (alarmFlag == 1)
                    {
                        alarmFlag = 0;
                        doubleFlashFlag = 0;
                        LED_LEFT = OFF;
                        LED_RIGHT = OFF;
                    }
                }
            }
            
            if (alarmFlag == 1)
            {
                BUZZER = ~BUZZER;
            }
            else
            {
                BUZZER = OFF;
            }
            
            if (LOCK_PIN == CLOSE) //车辆上锁
            {
                if (alarmSwitch == OFF)
                {
                    alarmSwitch = ON;
                }
            }
            else
            {
                if (alarmSwitch == ON)
                {
                    alarmSwitch = OFF;
                    alarmFlag = 0;
                    doubleFlashFlag = 0;
                    LED_LEFT = OFF;
                    LED_RIGHT = OFF;
                }
            }
        }

        KeyProcess();
    }
}

/*------------------------------------------------
                    定时器初始化子程序
------------------------------------------------*/
void Timer0_Init(void)
{
    TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x4C;		//设置定时初值 50ms
    EA = 1;  //总中断打开
    ET0 = 1; //定时器中断打开
    TR0 = 1; //定时器开关打开
}

/*------------------------------------------------
                定时器中断子程序
------------------------------------------------*/
void Timer0_Interrupt(void) interrupt 1
{
    static unsigned int time50ms = 0;
    
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x4C;		//设置定时初值 50ms

    time50ms++;
    if (time50ms >= 10) // 0.5s
    {
        time50ms = 0;
        refreshFlag = 1;
        if (doubleFlashFlag == 1) //双闪
        {
            LED_LEFT = ~LED_LEFT;
            LED_RIGHT = ~LED_RIGHT;
        }
        else if (leftFlag == 1) //左转灯
        {
            LED_LEFT = ~LED_LEFT;
            LED_RIGHT = OFF;
        }        
        else if (rightFlag == 1) //右转灯
        {
            LED_RIGHT = ~LED_RIGHT;
            LED_LEFT = OFF;
        }
        else
        {
            LED_LEFT = OFF;
            LED_RIGHT = OFF;
        }
    }
    
}

仿真演示视频:
https://www.bilibili.com/video/BV1N5411X7bQ/

实物演示视频:
https://www.bilibili.com/video/BV1N14y1E7GA/

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值