一.硬件方案
本设计硬件部分,中央处理器采用了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