当前位置:文档之家› 激光测速仪

激光测速仪

第三组实验方案
激光测速仪
原理介绍:
外对射探测器全名叫“光束遮断式感应器””(Photoelectric Beam Detector),其基本的构造包括激光束生器、光敏传感器、LED信号指示灯等。

当激光照射到光敏电阻上时使光敏电阻阻值改变而引起光敏电阻两端的电压改变。

电压变化信号通过传感器传到计数器上计数器计时。

光电系统一端有2个激光束源,另一端对应有2个光敏传感器;当有物体挡光时,光敏电阻两端为高电压。

当光电系统计数时,传感器将高低变化的信号传到计数器上,计数器计数一次。

当计数器计时时,计数器获得高电压时计时开始,获得低电压时计时结束。

这样就可以测的物体通过光电系统的时间。

光敏电阻原理图:
光敏电阻特性:
测量方法:
在物体要通过路径的一边并排放上2个红外发生器且2发生器的距离较小,再在路径的另一边对应的放上2个光敏传感器。

校正发生和接受装置,使其能正常接收和发生时开始实验。

实验时让物体通过光电装置,当物体第一次挡光时开始计时,物体开始第二次挡光时结束计时。

再利用单片机计算出速度后在显示模块上显示出速度。

然后再设计一个程序使速度超过一个范围时发出蜂鸣警告超时。

硬件:
硬件原理: 光传感器 激光发生装置和接收装置:DH4604。

计数器模块:片内计数方案是指采用单片机的内部计数器完成对电压信号的计数过程。

处理器:处理器是单片机89c51. LCD 显示部分:在正常情况下LED 显示当前速度值,当速度超出一定范围后通过灯光和蜂鸣器进行报警。

光传感器 光电耦合器 计数器 单片机 LCD 显示
器 蜂鸣报警蜂鸣报警蜂鸣报警器
报警模块:采用蜂鸣器与发光二极管作为声光报警器主要器件。

简要说明:
一、尺寸:全长25mm宽10mm高10mm
二、主芯片:三极管
三、工作电压:直流5V
四、特点:电路简单实用,接线简单,蜂鸣器报警音,清脆响亮。

电源模块:采用交流220v|50hz电源转换为直流5v电源模块。

单片机模块:选用p89c51单片机。

软件:
*********************************************************************/
/********************************************************************
说明:1、当测量浓度大于设定浓度时,单片机IO口输出低电平
*********************************************************************/
#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
I/O定义
*********************************************************************/ sbit LED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端
sbit DOUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器的输入端/********************************************************************
延时函数
*********************************************************************/ void delay()//延时程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/ void main()
{
while(1) //无限循环
{
LED=1; //熄灭P1.0口灯
if(DOUT==0)//当浓度高于设定值时,执行条件函数
{
delay();//延时抗干扰
if(DOUT==0)//确定浓度高于设定值时,执行条件函数
{
LED=0; //点亮P1.0口灯
}
}
}
}
/********************************************************************
结束
*********************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码
//uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端(开发板) uchar wei[4]={0X80,0X40,0X20,0X10}; //位的控制端(仿真) uint z,x,c,v, date; //定义数据类型
uint dispcount=0;
/******************************************************************
延时函数
******************************************************************/
void delay(uchar t)
{
uchar i,j;
for(i=0;i<t;i++)
{
for(j=13;j>0;j--);
{ ;
}
}
}
/**********************************************************************
数码管动态扫描
*********************************************************************/
void xianshi()
{
/*****************数据转换*****************************/
z=date/1000; //求千位
x=date%1000/100; //求百位
c=date%100/10; //求十位
v=date%10; //求个位
P2=wei[0];
P0=duan[z];
delay(50);
P2=wei[1];
P0=duan[x];
delay(50);
P2=wei[2];
P0=duan[c];
delay(50);
P2=wei[3];
P0=duan[v];
delay(50);
}
/*************************************************************************
主函数
**************************************************************************/ void ExtInt0() interrupt 0 //中断服务程序
{
dispcount++; //每按一次中断按键,计数加一
if (dispcount==9999) //计数范围0-9999
{dispcount=0;}
}
/*************************************************************************
主函数
**************************************************************************/ void main()
{
TCON=0x01; //中断设置
IE=0x81;
while(1)
{
date=dispcount;
xianshi();
}
}
/********************************************************************
结束
*********************************************************************/。

相关主题