基于51单片机的汽车智能灯光控制系统

一.硬件方案

本设计硬件部分,中央处理器采用了STC89C52RC单片机,另外使用两个灯珠代表远近光灯,感光部分采用了光敏电阻,因为光敏电阻输出的是电压模拟信号,单片机不能直接处理模拟信号,所以经过ADC0832进行转化成数字信号,还有显示部分采用了LCD1602液晶,还增加按键部分电路,可以选择手自动切换远近光灯,最后还是用了超声模块进行检测距离;电路主要由51单片机+LCD1602液晶+光敏电阻+超声波+ADC0832+LED灯而成;

二.设计功能

(1)按键说明:从左边第一个起,减键、加键、设置键。单独一个控制为复位按键。
(2)LCD1602液晶第一行显示超声波的距离,第二行显示光线的强弱。
(3)可以设定超声波和光敏的下限值,并具有掉电保存功能,数据保存在STC单片机的内部。
(4)用光敏传感器测光线亮度,低于设置值时自动开启灯光。
(5)用超声波测距离,低于设置值时自动将远光灯变成近光灯,大于设置值时又会自动变换成远光

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述

(2)Protues仿真图如下:
在这里插入图片描述

四.软件设计

主程序源码

void main()
 {  
   interrupt_int();	//调用定时器初始化函数
   LCD1602_cls();  //调用1602初始化函数
   read_memory();  //调用读存储
   init_measuring(); //调用超声波相应端口初始化
   while(1)
    {
	  display();  //显示函数
	  if(ir_ok)
	   {
	    ir_ok=0;
		 trigger(); //触发超声波启动
		 
		while(echo==0) //等待回声&&TH0<200
		{
		;	
		}	
		measuring(); //进行距离测量
		init_measuring(); //超声波相应端口初始化
		 
	   }
	   if(memory_flag) //如果存储标志位是1
	   {
	   	memory_flag=0;	//清0,
		memory();	   //执行一次存储函数
	   }
	   if(A_M)	  //如果是自动状态
	   {
	   	led1=0;	   //自动模式指示灯点亮
		led2=1;
		police(); //执行自动处理函数
	   }
	   else	  //否则
	   {
	   	led2=0;	 //手动指示灯点亮
		led1=1;
	   }
	   AD_dispose(); //调用AD处理函数
	   switch(beam)	//根据beam的值,切换远近光灯状态
	   {
	   	case 0:LED_1=1;LED_2=1;break;  //关闭
		case 1:LED_1=1;LED_2=0;break;	//近光
		case 2:LED_1=0;LED_2=1;break;  //远光
	   }
	}
 }

资料链接:https://pan.baidu.com/s/166xg2gqZ_BO0MFfXqFvpDQ?pwd=o5fv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值