数字式光照强度检测仪的设计实现

上传人:飞*** 文档编号:45963690 上传时间:2018-06-20 格式:DOC 页数:15 大小:499.50KB
返回 下载 相关 举报
数字式光照强度检测仪的设计实现_第1页
第1页 / 共15页
数字式光照强度检测仪的设计实现_第2页
第2页 / 共15页
数字式光照强度检测仪的设计实现_第3页
第3页 / 共15页
数字式光照强度检测仪的设计实现_第4页
第4页 / 共15页
数字式光照强度检测仪的设计实现_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数字式光照强度检测仪的设计实现》由会员分享,可在线阅读,更多相关《数字式光照强度检测仪的设计实现(15页珍藏版)》请在金锄头文库上搜索。

1、电子电路实验电子电路实验 3 综合设计总结报告综合设计总结报告题目:数字式光照强度检测仪的设 计实现班级: 学号: 姓名: 日期:2011.5.13摘 要光照强度检测仪可以应用在需要某一特定光强范围的领域 。它的主体是光敏 电阻,光敏电阻采用半导体材料制作,半导体吸收光子而产生的光电效应,使 得光敏电阻阻值变小;光敏电阻的电极一般采用梳状,提高了光敏电阻的灵敏 度;另外光敏电阻光谱特性好,光谱响应从紫外区一直到红外区,而且体积小、 重量轻、性能稳定。本实验采用的方案是:用单片机控制模数转换芯片通过模 拟开关采集三个方向光敏电阻与固定电阻的分压值,在单片机内部通过逻辑判 断保留接收最强光强(即光

2、照射方向)的采集结果,通过转换函数转换成对应 的光照强度,并用数码管显示,同时通过已判断光照射方向,显示相应的小数 点。设计选题及设计任务要求设计选题:数字式光照强度检测仪的设计实现任务要求:1、设置三个方向的光照强度检测,通过模数转换等用两位数码管显 示最强光照强度(即光照射方向的光照强度) ,要求在黑暗中显示 00,在室内强光下显示 99;2、用小数点显示光照方向:光从左侧入射亮高位小数点,光从右侧 入射亮低位小数点,光从前方入射不亮小数点。正 文1 方案的设计与论证方案一逻辑判断后选光照方向一侧信号采集目的侧模拟信号光 左侧 敏 电 阻 前侧 分 压 值 右侧比较器 LM358比较器 L

3、M358比较器 LM358STC 89C51模数 转换器 ADC 0804数字信号数 码 管 显 示方案二控制模拟开关依次选择三侧方案一是利用电压比较器 LM358 对任意两路电压进行比较,把比较结果送 到单片机进行逻辑判断选择光照方向一侧的光敏电阻进行模数转换,把转换后 数据送到单片机,经单片机程序转换成光照强度让数码管显示,并显示光照方 向侧的小数点。 方案二是利用模拟开关在单片机的控制下依次选择三侧模拟信号,通过模 数转换器采集数据分别存入三个变量,利用程序判断光照方向,将光照方向数 字信号转换成光照强度通过数码管显示,并显示光照方向侧的小数点。 方案一采用先判断后采集的方式,每次只需采

4、集一侧模拟信号,节省采集 时间,适合采集频率较高的系统。但该方案与方案二相比较电路复杂,并且判 断后再采集可能有滞后影响高精度。方案二具有电路结构简单、无采集滞后等 优点,缺点是采集三侧模拟信号浪费时间,但本选题所用的光敏电阻光照特性 非线性,本身不是精确测量,故采集频率高并不一定更精确。鉴于方案二的上 述优点故本选题实现方案选择方案二。2 理论计算(1) 单片机主模块下图即为单片机最小系统,采用 STC89C51 单片机,外接复位电路,时钟电路, 其中 P20 端口的 LED 是为了检验单片机实际电路是否正常连接。光 左侧 敏 电 阻 前侧 分 压 值 右侧STC 89C51数 码 管 显

5、示模 拟 开 关 CD 4051数字 信号模 数 转 换 器 ADC 0804(2) 通信模块 用于下载程序到 SYC89C51 单片机。(3) 光敏输出模块下图依次为左侧、前侧、右侧光敏电阻输出模块。测得光敏电阻在室内光照 射下电阻约为 1.7k 欧姆,黑暗中约为 150k 欧姆,选取的分压电阻不能太大, 否则灵敏度太小,经试选 5.1k 欧姆合适;电位器的电阻在下载程序后测试调整, 使得当同样的光照强度从另外两个方向入射时数码管显示的数不变。(4)输出选择模块。X0X1X2电位器5.1K电位器根据单片机发来的指令使 CBA 依次为 000、001、002 来选择 X0、X1、X2 三路中

6、一路模拟开关,使模拟电压经 X 传送到 ADC0804 经行模数转换。经 10k 电阻接 ADC0804Vin+P05 P04 P03CD4051 管脚图、管脚说明及真值表:(5) ADC0804 模块用单片机控制 CS、RD、WR 完成 ADC0804 的驱动,将 X 传来的模拟信号转换成 数字信号,再将数字信号传送到单片机。ADC0804 的规格及引脚图:数数据据线线读读写写控控制制片片选选时时钟钟输输入入中中断断申申请请模模拟拟输输入入参参考考电电压压XP00 P01 P02时序图如下:(6)数码管显示电路。数码管为共阳极连接,P32、P33 分别控制十位、个位的位选, P06、P07

7、分别控制十位、个位小数点。P32P33P06P07数据CSWRINTRRDDB转换结束时序图R10KC 150PfCLK=1 1.1RC =600KHz3 测试方法与数据(1) 测试方法: A、测试项目:在无光情况下观察数码管是否显示为 00;在室内用三个 方向的光敏电阻依次对着光入射的方向观测数码管显示值是否相等,以 及是否是光从左侧入射时显示高位小数点、光从前侧入射时不显示小数 点、光从右侧入射时显示低位小数点。 B、如何测试:用 keil 软件编程,程序说明如下: 【1】AD0804 驱动子程序,根据 ADC0804 时序图编写; unsigned char adc0804( void

8、) /读 AD0804 子程序 unsigned char addata,i; rd=1;wr=1;/int1=1; /读 ADC0804 前准备 P1=0xff; /P1 全部置一准备 cs=0;wr=0;wr=1; /启动 ADC0804 开始测电压 rd=0; /开始读转换后数据 i=i; i=i; /无意义语句,用于延时/等待 ADC0804 读数完毕 addata=P1; /读出的数据赋与 addate rd=1;cs=1; /读数完毕 return(addata); /返回最后读出的数据 【2】显示子程序,依次显示十位、个位; void display(int temp) /显示程

9、序 ge=1;delay(2);P2=tabletemp/10; /显示十位 shi=0;delay(2);shi=1;shi=1;P2=tabletemp%10; /显示个位ge=0;delay(2);ge=1; 【3】转换子程序,将采集转换后的数字信号通过函数转换成显示数;uint zhuan(uchar temp) int x=255-temp; int y; if(x=250) /当采集后数字数据大于/250 时认为最大光强显示 99 y=99; if(x40 /数码管十位 sbit ge=P33; /数码管个位 sbit dp1=P06; /十位小数点 sbit dp2=P07; /

10、个位小数点sbit cs=P00; sbit rd=P01; sbit wr=P02; /ad 控制管脚定义sbit c=P03; sbit b=P04; sbit a=P05; /cd4051 控制管脚定义#define uchar unsigned char #define uint unsigned int Unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; /数码管段选显示 0-9 /*/ void delay(uint count) /delay uint i;while(count)

11、i=200;while(i0)i-;count-; /*/ unsigned char adc0804( void ) /读 AD0804 子程序 unsigned char addata,i; rd=1;wr=1;/int1=1; /读 ADC0804 前准备 P1=0xff; /P1 全部置一准备 cs=0;wr=0;wr=1; /启动 ADC0804 开始测电压 rd=0; /开始读转换后数据 i=i; i=i; /用于延时等待 ADC0804 读数完毕 addata=P1; /读出的数据赋与 addaterd=1;cs=1; /读数完毕 return(addata); /返回最后读出的

12、数据 /*/ void display(int temp) /显示程序 ge=1;delay(2);P2=tabletemp/10; /显示十位 shi=0;delay(2);shi=1;shi=1;P2=tabletemp%10; /显示个位ge=0;delay(2);ge=1; /*/ uint zhuan(uchar temp) /转换程序,目的是让 ad 采集进来的/数字信号转换成 0099 的二位数显示 int x=255-temp; int y; if(x=250) y=99; if(x40 return(y); /*/ void main() /主程序 int i=0; /数码管

13、检验,小数点全亮,数字从 0099 依次显示一 次 while(i10) shi=0; dp1=0; dp2=0; ge=0;P2=tablei; i+; delay(100); /检验完毕 while(1) uchar DATA0,DATA1,DATA2; a=0; b=0; c=0; DATA0=adc0804();delay(2); a=1; b=0; c=0; DATA1=adc0804();delay(2); a=0; b=1; c=0; DATA2=adc0804();delay(2); if(DATA0=DATA1 /左路 dp1=0; dp2=1; else if(DATA1=DATA0/中路 dp1=1; dp2=1; else display(zhuan(DATA2);/右路 dp1=1; dp2=0; delay(2);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号