系统的功能分析及体系结构设计
(附文件)
系统功能分析
本设计由STC89C52单片机+光照检测电路(光敏电阻)+超声波HC-SR04模块电路+4位高亮白色LED灯+黄绿LED指示灯电路+拨动开关电路+电源电路组成。
1、通过光敏电阻模块检测光照强度,正常情况下,白天灯不亮,晚上的时候开启远光灯,且光照阈值可以通过传感器上的电位器调节。
2、产品有自动模式和手动模式两种模式,模式通过拨动开关选择,具有模式指示灯。
3、自动模式:通过超声波模块检测距离,如果距离小于30cm,那么远光灯转化为近光灯,超过30cm,近光灯转化为远光灯。
4、手动模式,通过两个按键切换远近光灯。
框图:
原理图:
光照检测模块电路设计电路设计
本系统选择光照传感器模块对光照进行检测。
一、传感器参数
(1)可以检测周围环境的亮度和光强
(2)灵敏度可调(图中蓝色数字电位器调节)
(3)工作电压3.3V-5V
(4)输出形式 a 模拟量电压输出,b 数字开关量输出(0和1)
(5)电源指示灯(红色)和数字开关量输出指示灯(绿色)
(6)比较器采用LM393芯片,工作稳定
二、接口说明(4线制)
(2)VCC 外接3.3V-5V
(2)GND 外接GND
(3)DO 小板数字量输出接口(0和1)
(4)AO 小板模拟量输出接口
三、使用说明
(1)光敏电阻模块对环境光强最敏感,一般用来检测周围环境的亮度和光强。
(2)模块在无光条件或者光强达不到设定阈值时,DO口输出高电平,当外界环境光强超过设定阈值时,模块D0输出低电平;
(3)小板数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光强改变;
(4)小板数字量输出DO可以直接驱动本店继电器模块,由此可以组成一个光电开关;
5小板模拟量输出AO可以和AD模块相连,通过AD转换,可以获得环境光强更精准的数值;
模块接口原理图如下图所示。
HC-SR04超声波避障传感器电路设计
本设计选择的超声波模块为HC-SR04 超声波模块,此本模块性能稳定,测度距离精确。可以提供20-400cm的非接触式距离感测功能,测量精度科大3mm,模块包括超声波发射器、超声波接收器和控制电路。能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近,稳定的测距是此产品成功走向市场的有力根据!此模块完全谦容GH-311防盗模块。
一、模块主要技术参数:
(1)使用电压:DC5V
(2)静态电流:小于2mA
(3)工作电流:15mA
(4)工作频率:40KHZ
(5)测量角度:15度
(6)电平输出:高5V
(7)电平输出:底0V
(8)探测距离:2cm-450cm
(9)高精度:可达0.3cm
(10)规格尺寸:45cm
(11)输入触发信号:10uS的TTL脉冲
(12)输出回响信号:输出TTL电平信号,与射程成正比
二、模块接线方式:
(1) VCC接5V电源
(2)trig(控制端)接单片机I/O口
(3)echo(接收端)接单片机I/O口
(4)GND接地线
三、注意事项
(1) TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。
OUT脚为此模块作为防盗模块时的开关量输出脚,测距模块不用此脚!
(2)模块应先插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。
四、超声波模块工作原理:
(1)采用IO触发测距,给至少10us的高电平信号
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。
(4)测试距离=(高电平时间*声速(340M/S))/2;
(5)本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到移动测量的值。
试验证明HC-SR04 超声波模块性能优越,灵敏度高,满足本设计要求。其模块接口图如下图所示。
二挡拨动开关检测电路设计
拨动开关是通过拨动开关柄使电路接通或断开,从而达到切换电路的目的的。拨动开关常用的品种有单极双位、单极三位、双极双位以及双极三位等,它一般用于低压电路,具有滑块动作灵活、性能稳定可靠的特点,拨动开关主要广泛用于:各种仪器/仪表设备,各种电动玩具,传真机,音响设备,医疗设备,美容设备,等其它电子产品领域。
简单的说,拨动开关就是通过拨动其执行机构(开关柄),来接通或断开电路。
通过拨动开关实现对信号的切换,电阻为上拉电阻。当二档拨动开关拨下去时,单片机控制引脚为低电平。当二档拨动开关拨上去时,单片机控制引脚为高电平。进而实现对信号的完美切换。其电路图如下图所示。
系统软件设计
程序流程图
本系统设计主要采用Keil uVision4软件编写与调试程序,程序语言采取易读性和移植性更高的C语言编写。系统运行流程图如下图所示。
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<stdio.h>#include "delay.h"//#include "math.h"#define SHOUDONG 0x00#define ZIDONG 0x01sbit Trip=P3^2; //出发放超声波sbit Edg=P3^3; //检测反馈sbit LighRst=P1^0; sbit Ledy=P1^1; //远光灯sbit Ledj=P1^2; //近光灯sbit Leds=P1^3; //手动灯sbit Ledz=P1^4; //自动灯sbit Keyy=P1^5; //远光灯切换按键sbit Keyj=P1^6; //近光灯切换按键sbit KeyQ=P1^7; //自动手动切换#define Val_Edg (Edg)//超声波测距变量定义#define Trip_Set (Trip=1)#define Trip_Cle (Trip=0)unsigned long sysslot=0; //定时器计数unsigned long TestCount=0;//超声波测距反馈计数unsigned char TripFlag=0; //出发标志unsigned char Test_Flag=0; //反馈测试unsigned long DIS_MM=0; //实际测试距离unsigned char ModeFlag=0;//手动自动模式变量unsigned char rekey0,rekey1;//按键防止重复变量unsigned char LEDjFlag=0; //led近光灯变量void Init_Timer0(void); //函数声明void main (void){Init_Timer0(); //定时器0初始化Ledy=0; //远光灯Ledj=0; //近光灯Leds=0; //手动灯Ledz=0; //自动灯DelayMs(100);Ledy=1; //远光灯Ledj=1; //近光灯Leds=1; //手动灯Ledz=1; //自动灯Trip_Cle; //清空触发while (1) //主循环{if(KeyQ==0) //手动自动切换{ModeFlag=SHOUDONG;Leds=0;Ledz=1;} //切换置位对应灯亮else{ModeFlag=ZIDONG;Leds=1;Ledz=0;} //自动标志 即灯指示if(ModeFlag==SHOUDONG)//手动模式下{if(Keyy==0) //远光灯切换按键{if(rekey0==0){if(Keyy==0) //远光灯切换按键{rekey0=1;Ledy=!Ledy;//切换灯开关远光灯}}}else{rekey0=0;}if(Keyj==0) //远光灯切换按键{if(rekey1==0){if(Keyj==0) //远光灯切换按键{rekey1=1;Ledj=!Ledj; //切换灯开关 近光灯}}}else{rekey1=0;}}if(ModeFlag==ZIDONG)//自动模式下{if(LighRst==1) //光照暗{Ledj=0; //近光灯LEDjFlag=1;}else{Ledj=1; //近光灯LEDjFlag=0;}}if(TripFlag==1){TripFlag=0;Trip_Cle; //清空触发DelayMs(10);Trip_Set; //置位触发 一直触发DelayMs(10);}if(ModeFlag==ZIDONG)//自动模式下{if(LEDjFlag==1){if(DIS_MM<300)//全速前进距离检测 在定时器中断中{Ledy=1; //远光灯}else{Ledy=0; //远光灯}}else{Ledy=1;} //远光灯}}}
.
链接:/s/1YYyki5dzUA4wap8eAPocJg
提取码:8c5o
.