简易光强检测仪.docx

上传人:b****6 文档编号:7407902 上传时间:2023-01-23 格式:DOCX 页数:11 大小:165.06KB
下载 相关 举报
简易光强检测仪.docx_第1页
第1页 / 共11页
简易光强检测仪.docx_第2页
第2页 / 共11页
简易光强检测仪.docx_第3页
第3页 / 共11页
简易光强检测仪.docx_第4页
第4页 / 共11页
简易光强检测仪.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

简易光强检测仪.docx

《简易光强检测仪.docx》由会员分享,可在线阅读,更多相关《简易光强检测仪.docx(11页珍藏版)》请在冰豆网上搜索。

简易光强检测仪.docx

简易光强检测仪

第一章题目要求与分析

1.1课程设计的意义

本次课程设计是我们在学习单片机后的一次实习。

可增强我们的动手能力,特别对单片机的系统设计有很大的帮助。

1.2题目要求

1.设计并制作一台数字显示的光强检测仪。

2.基本要求:

测量传感器可以任选,实现光强测量精度±10%。

1.3题目分析

本设计是测光强电路,可以使用光敏电阻之类的器件利用其感光效应,在将随被测光亮变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测光强显示出来。

第二章系统总体方案及硬件设计

2.1光强测量系统设计

本设计使用光敏电阻5228搭建光电转换电路,经过AD转换将光电模拟信号数字化,在通过单片机进行数据处理,最终在4位LED上显示光强。

同时设计了报警系统,当光强达到一定上限值时,启动报警模式。

单片机的RESET口上提供了供电自启动,在X1,X2口上提供了12MHZ晶振,以支持单片机的运行与启动。

系统由4个模块组成,分别为光电转换模块、AD转换模块、测量数据显示模块、报警模块。

系统框图如图1:

2.2硬件设计与分析

本系统主要由光电转换电路,AD转换器,单片机,存储器,LED显示,蜂鸣器组成。

2.2.1光电转换模块

光电转换模块采用5228光敏电阻进行光电转换,当有光照射到光敏电阻上时,光敏电阻的阻值发生变化,从而产生电信号。

在经过放大器将电信号放大,转换电路如图2所示。

为减小输出信号的噪声,输出端可接1个0.1μF的电容C4去除高频信号。

为防止产生自激振荡在输入与输出之间接1个0.1μF的补偿电容C1,对于增益电阻可采用高精度的可调电阻,输出信号幅度与R1成正比。

R1取值大一些可以增加信噪比,但R1取值要受输出电压幅度的限制。

图2光电转换电路

2.2.2A/D转换

A/D转换采样比较熟悉的ADC0809芯片。

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

本次设计中AD转换系统与AT89S51单片机的外部总线接口P0连接,接收采集到的光强电压。

如图3所示。

2.2.3LED显示和报警装置

显示系统为4个BCD-七段显示译码器与P1口相连,要求P1口输出8位BCD码,符合74LS49的译码规则,完成译码,再传输到7段数码显示器上进行数据显示。

同时报警装置对当前值进行判断,如大于一定值时,发出警报。

报警装置是由一个三极管,电阻和蜂鸣器组成。

三极管在此电路中起到开关作用,工作在饱和区。

整个报警系统属于低电平驱动,其中蜂鸣器是5V有源的。

路图如图3。

图3系统硬件电路原理图

第三章系统软件分析

3.1主程序流程图

主程序主要负责光强的显示,对光强的采集数据进行处理将其显示出来,并加上一定的报警设备。

如图4:

图4主流程图

3.2显示程序

显示数据使用数码管显示,显示前要定义7段码共阴极数码管0~9段码数组。

流程图如图5所示。

3.3报警装置

当光强度大到一定值时,蜂鸣器会发出警报,提醒人光度过强,以免眼睛受到伤害。

流程图如图6所示。

图5显示程序图6报警装置

第四章结果与分析

光敏电阻阻值因光的强度变大而变大,接入一个反相运放,使得输出电压随光强的增强而增大,达到更为直观的效果。

通过AD将光强电压值经单片机处理,再由LED显示光强电压值。

当光强电压达到一定值时启动报警系统。

实验效果图如图4-1,4-2,4-3:

本设计使用光敏电阻组成光电转换电路,设计中由于光敏电阻受光照阻值变化较大和光照不稳定产生了一些误差。

图4-1室内测量图4-2增加亮度测量

图4-3报警

测量结果分析,如表1

测量值(V)

理论值(V)

测量误差

1.95

1.96

0.51%

2.03

2.04

0.49%

2.05

2.05

0

2.30

2.31

0.43%

2.55

2.57

0.78%

2.79

2.80

0.36%

3.59

3.62

0.83%

表1测量结果

光强转换公式:

I=KUaLb

其中I为流光电阻两端的电流;K为光强比例系数;U为光电阻两端的电压;a为电压指数,近似为1;L为光照强度;b为照度指数。

实验中由于缺少上式中部分参数,故无法计算最终的光照强度值。

第五章总结与体会

经过一个星期的努力,我们完成了简易光强检测仪的课程设计。

这次设计与制作,主要是对光强这个陌生名词的理解和完成设计的硬件电路的设计。

首先,我们了解光强的基本概念,了解光强在生活中的应用。

因为我们没用光电传感器,所以我们需用光敏电阻或光敏二极管做成一个光电转换电路用来采集光强。

在设计电路上,我们需了解各个器件的引脚分布,防止接错。

焊接过程中,我们由于没有掌握器件的引脚,而导致电路不能正常工作。

在程序方面,相对比较简单,都是平时做过的一些实验。

通过这次课程设计,我们对单片机有了更好的了解。

更好的掌握了硬件电路的设计和焊接。

还有,在设计中我们要仔细的分析出错的原因,往往错误就错在一些细小的地方。

参考文献

[1]陈磊.单片机控制数字光强检测计的设计[J].大学物理实验.2009.4.

[2]马忠梅,张凯.单片机的C语言应用程序设计(第四版)[M].北京航天大学出版社.

附录

源程序:

#include"reg51.h"

#include"absacc.h"

#definedmP2//段码输出口

#defineucharunsignedchar

#defineuintunsignedint

sbitw0=P1^0;//数码管

sbitw1=P1^1;//数码管

sbitw2=P1^2;//数码管

sbitw3=P1^3;//数码管

sbitf=P1^4;//蜂鸣器

sbitAD_BUSY=P3^3;

ucharh;

uintgq,w;

//**************光强小数部分用查表法***********//

ucharcodetable_dm[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

//共阴LED段码表"0""1""2""3""4""5""6""7""8""9""不亮"

uchartable_dm1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//个位带小数点的断码表

uchardatadisplay[4]={0x00,0x00,0x00,0x00};//显示单元数据

/***********************************************/

voiddelay(uintt)

{

for(;t>0;t--);

}

voidscan()

{

intj;

for(j=0;j<4;j++)

{

switch(j)

{

case0:

dm=table_dm[display[0]];w0=1;w3=0;delay(100);//xiaoshu

case1:

dm=table_dm[display[1]];w1=1;w0=0;delay(100);//xiaoshu

case2:

dm=table_dm1[display[2]];w2=1;w1=0;delay(100);//gewei

case3:

dm=table_dm[display[3]];w3=1;w2=0;delay(100);//shiwei

}

}

}

 

/***********************************************/

work_gqj(uintgq)

{

unsignedchari=0;

while(gq!

=0)

{

display[i]=gq%10;

gq=gq/10;

i++;

}

if(display[3]==0)

{

display[3]=0x0a;

}

}

 

voidfengming(uintw)

{

if(w>=250)

{

f=0;

delay(100);

}

else

f=1;

}

/****************主函数************************/

#defineIN0XBYTE[0x0000]

voidmain()

{

dm=0x00;//初始化端口

w0=0;

w1=0;

w2=0;

w3=0;

for(h=0;h<4;h++)//开机显示"0000"

{

display[h]=0;

}

for(h=0;h<100;h++)//开机显示"0000"

{

scan();

}

while

(1)

{

unsignedchara;

unsignedintb;

unsignedchari=0;

IN0=0;

i=i;

i=i;

while(AD_BUSY==0);

a=IN0;

b=a*1.953125;

work_gqj(b);//处理光强数据

f=1;

fengming(b);

scan();//显示光强值

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1