功能:
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. 《ASP.NET4 从入门到精通》学习笔记4
  2. python复数类型-Python基本数据类型巩固题
  3. winform 时间控件 可以选择时分 设置为空
  4. 1025:保留12位小数的浮点数
  5. Px4源码框架结构图
  6. 中石油训练赛 - Edit Distance(思维+构造)
  7. 学习ccna,ccnp中如何提高英语问题
  8. 前端学习(811):api和webapi
  9. 机器学习问题总结(03)
  10. python好用的第三方库_非常有用的 Python 第三方库
  11. mobilenet cpu 加速_(300223)半导体+芯片概念,净利润增长408%!加速上涨!
  12. tigervnc环境搭建
  13. Hadoop下虚拟机的创建与克隆
  14. TCP/IP 原理 -- ICMP:因特网控制报文协议
  15. sqlserver中查询(升序、降序、top、百分比)
  16. srgb色彩空间_网页设计师的色彩:了解sRGB
  17. 擦地机器人排行榜_十大扫地机器人品牌排行榜扫地机器人哪个牌子好
  18. 一文入门车载以太网,吐血整理!不看后悔!
  19. 谷歌地图创建自定义位置_如何使用Google Home为任何命令创建自定义快捷方式
  20. Ansible-大总结(六)

热门文章

  1. 使用VScode写Python最后一行出现黄色下划线问题
  2. 学习笔记1 直流微电网概述
  3. centos 7.2 邮件服务器搭建-iredmail邮件服务器搭建与使用
  4. 计算机毕业设计Java高考志愿智能辅助填报系统(源码+系统+mysql数据库+lw文档)
  5. 精品js Firefox 加入收藏夹功能代码 兼容Firefox 和 IE等各种浏览器
  6. Mysql 远程连接的问题 2003 - Can't connect to MySQL server on '39.106.187.107' (60 Operation timed out)
  7. JavaScript bold() 方法
  8. Curve25519加解密与Ed25519加密签
  9. 看《墨攻》理解软件世界的IoC概念
  10. 各种视频格式的对比与解析