功能:
0.本系统采用STC89C52作为单片机
1.该系统采用的是两个USB小灯作为模拟汽车远光灯和近光灯
2.采用HC-SR04超声波模块模拟汽车障碍物检测系统
3.采用光敏电阻来检测环境光,汽车灯光根据环境光的情况来开启或则关闭车灯
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:

PCB :

主程序:

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include <stdio.h>
#include "delay.h"
//#include "math.h"
#define MANUAL 0
#define AUTO 1sbit TRIG = P1^0; //出发放超声波
sbit ECHO = P1^1; //检测反馈sbit LIGHT_FLAG = P1^2;sbit HIGH_BEAM = P2^2; //远光灯sbit LOW_BEAM = P2^3; //近光灯sbit LED_MANUAL = P2^0; //手动模式指示灯sbit LED_AUTO = P2^1; //自动模式指示灯sbit KEY_CHANGE = P3^7; //远近光灯切换按键
sbit KEY_SWITCH = P3^6; //关灯按键
sbit KEY_MODE = P3^2; //自动手动切换bit TrigFlag = 0; //触发标志
unsigned char LEDFlag = 0; //远近光灯标志
float distance = 0; //实际测试距离
bit modeFlag = 0;   //手动自动模式变量
bit switchFlag = 0;
bit rekey0;
bit rekey1;
bit rekey2; //按键防止重复变量void Timer0_Init(); //函数声明
void Timer1_Init();
void KeyProcess();void main()
{TRIG = 0;Timer0_Init(); //定时器0初始化Timer1_Init();HIGH_BEAM = 0;      //远光灯LOW_BEAM = 0;      //近光灯LED_MANUAL = 0;      //手动指示灯LED_AUTO = 0;      //自动指示灯DelayS(1);HIGH_BEAM = 1; //远光灯LOW_BEAM = 1; //近光灯LED_MANUAL = 1; //手动灯LED_AUTO = 1; //自动灯while (1) //主循环{if (TrigFlag == 1){TR0 = 0;TrigFlag = 0;TRIG = 1; //启动一次模块        //不可以使用其他终端 容易造成死循环DelayUs10x(1);TRIG = 0;while (!ECHO);    //当RX为零时等待TR1 = 1; //开启计数while (ECHO); //当RX为1计数并等待TR1 = 0;distance = 1.12 * ((float)TH1 * 256 + TL1) * 17 / 100; //算出来是mm,1.12为系数TH1 = 0;TL1 = 0;TH0 = (65536 - 18432) / 256; //重新赋值 20msTL0 = (65536 - 18432) % 256;TR0 = 1;}if (switchFlag == 1){if (modeFlag == AUTO) //自动模式下{LED_MANUAL = 1;LED_AUTO = 0;if (LIGHT_FLAG == 1) //光照暗{if (distance < 300){LOW_BEAM = 0;  //近光灯开HIGH_BEAM = 1; //远光灯关}else{LOW_BEAM = 1;  //近光灯关HIGH_BEAM = 0; //远光灯开}}else{LOW_BEAM = 1;  //近光灯关HIGH_BEAM = 1; //远光灯关}}else{LED_MANUAL = 0;LED_AUTO = 1;if (LEDFlag == 0){LOW_BEAM = 1;  //近光灯关HIGH_BEAM = 1; //远光灯关}else if (LEDFlag == 1){LOW_BEAM = 0;  //近光灯开HIGH_BEAM = 1; //远光灯关}else{LOW_BEAM = 1;  //近光灯关HIGH_BEAM = 0; //远光灯开}}}else{LOW_BEAM = 1;  //近光灯关HIGH_BEAM = 1; //远光灯关//指示灯闪烁,有助于判断程序是否运行LED_MANUAL = 1; LED_AUTO = 1; DelayMs(250);DelayMs(250);LED_MANUAL = 0; LED_AUTO = 0;DelayMs(250);DelayMs(250);}KeyProcess();}
}void KeyProcess()
{if (switchFlag == 1){if (KEY_MODE == 0) //手动自动切换{DelayMs(10);if (KEY_MODE == 0 && rekey0 == 0){rekey0 = 1;modeFlag = ~modeFlag;}} //切换置位对应灯亮else{  rekey0 = 0;}if (modeFlag == MANUAL) //手动模式下{if (KEY_CHANGE == 0) //远光灯切换按键{DelayMs(10);if (KEY_CHANGE == 0 && rekey1 == 0) //远光灯切换按键{rekey1 = 1;if (LEDFlag >= 2){LEDFlag = 1;}else{LEDFlag++;}}}else{rekey1 = 0;}}}if (KEY_SWITCH == 0) //切换按键{DelayMs(10);if (KEY_SWITCH == 0 && rekey2 == 0) //切换按键{rekey2 = 1;switchFlag = ~switchFlag;}}else{rekey2 = 0;}
}void Timer0_Init()
{TMOD &= 0xF0;TMOD |= 0x01;                //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 18432) / 256; //重新赋值 20msTL0 = (65536 - 18432) % 256;EA = 1;  //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}void Timer1_Init()
{TMOD &= 0x0F;TMOD |= 0x10;                //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH1 = 0; TL1 = 0;EA = 1;  //总中断打开ET1 = 1; //定时器中断打开TR1 = 0; //定时器开关关闭
}void Timer0_Interrupt() interrupt 1
{static unsigned int cnt = 0;TH0 = (65536 - 18432) / 256; //重新赋值 20msTL0 = (65536 - 18432) % 256;cnt++;if (cnt > 50) //1s定时发出超声波{TrigFlag = 1;cnt = 0;}
}void Timer1_Interrupt() interrupt 3
{TH1 = 0;TL1 = 0;
}

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

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

基于51单片机汽车自动照明灯远近光灯proteus仿真原理图PCB相关推荐

  1. 基于51单片机的教室车辆计数器报警proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示进出计数和当前总数 2.系统设计有四个功能按键,按键可设定总数上限阈值,超过上限,系统将报警 3.报警电路由蜂鸣器和LE ...

  2. 基于51单片机的衣柜鞋柜湿度控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前湿度值 2.当湿度超过设定湿度阈值范围时,启动加热和风机控制继电器,否则关闭 3.按键可设定湿度阈值 4.采用D ...

  3. T045基于51单片机温湿度检测系统无线蓝牙传输Proteus仿真原理图PCB

    功能: 0.本项目采用STC89C52作为单片机系统的控制MCU 1.系统内采用DHT11作为湿度传感器,支持温湿度检测上传 2.系统具备无线蓝牙模块,支持定时循环发送手机端当前的温湿度状态 3.采用 ...

  4. 基于51单片机超声波的停车场车位管理系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前车位状态 2.当超声波探头检测到距离小于500mm时,判断为当前车位有车,否则无车 3.超声波传感器型号采用HC ...

  5. 基于51单片机的数字音乐彩灯电子琴proteus仿真原理图PCB

    0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前工作模式或曲目编号 2.支持电子琴模式和歌曲模式(内置8首歌曲) 3.按'切换'键可切换工作模式 4.电子琴模式下,按矩阵键 ...

  6. 基于51单片机的水箱水位监测控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.通过传感器监测水位,当水位低于水位下限时,接通加水水泵,直到水位达到水位上限,停止加水 2.水位低于水位下限时,声光报警 3.可按键手动加水, ...

  7. T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...

  8. 基于51单片机的水位水质检测系统Proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示水位.水质百分比 2.按键设置水位水质阈值并通过液晶显示 3.具备4个LED分别作为水位水质的上下限指示灯 4.具备声光 ...

  9. 【041】基于51单片机的自动音乐播放器Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的自动音乐播放器系统proteus仿真设计一份: (2).基于51单片机的自动音乐播放器系统proteus仿真设计keli源代码一份: (3).基于51单片机 ...

最新文章

  1. 在centos 下安装配置基于gitosis 的git 服务
  2. 《数据库技术原理与应用教程(第2版)》——习 题 1
  3. 刷圈兔下载_刷圈兔app
  4. ctrl键一直自动按住了_请允许Ctrl键“C位出道”
  5. python中zip的使用_浅谈Python中的zip()与*zip()函数详解
  6. 绕过waf mysql爆库_iwebsec刷题记录-SQL注入漏洞
  7. Qt-IP地址查询工具(使用HTTP GET方法)
  8. springboot项目执行controller方法时进入慢的问题
  9. 不会写漂亮代码不是优秀的程序员,没有钢铁侠之躯不是合格的程序员
  10. 使用Python自动完成Himawari-8(葵花8)卫星AOD数据下载与解析(转TIFF)
  11. 推荐几个好的粉碎文件的软件?这3款软件让你彻底摆脱无法删除文件的烦恼
  12. 使用Xcode创建第一个App
  13. 神经网络学说的主要观点,神经网络宏观解释包括
  14. 基于OpenAPI Specification自动生成Android客户端代码
  15. 三维重建(5)之三角测量计算双目相机坐标系下三维坐标
  16. BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略
  17. 括号配对c语言,括号匹配(c语言实现)
  18. 什么叫方法签名 Java
  19. PHP实现小程序微信支付V2获取prepay_id
  20. tensor和numpy中的乘法运算,如torch.mul()和torch.sum()函数的用法

热门文章

  1. Flipper的NO APPLICATION SELECTED问题
  2. Vue中使用TinyMce方法
  3. CVN2,CVC2,CVV2,CSC2区别
  4. mysql关于or的索引问题_SQL优化 MySQL版 - 避免索引失效原则(二)
  5. 烟台.Net俱乐部10月活动Asp.Net实战之旅 威海行
  6. 跬智信息 (Kyligence) 成功入选 2021 年度上海市“专精特新”企业名单
  7. (转载)搭建小型Git服务器
  8. ubuntu 环境 celery配置全解
  9. java 上传文件大小转换为 GB/MB/KB/B
  10. Ninjutsu_v3(忍者渗透测试系统部分中文乱码问题、及解决方法)