1、 目录1,系统设计(1) 传感器的选择(2) 系统功能的描述(3) 系统原理框图(4) 系统结构分析2,主要器件的功能介绍(1)AD0804的结构图(2)AD0804引脚功能的介绍(3)AT89C51的结构图(4)AT89C51的主要特性及各引脚的功能3,传感器的工作原理4,系统元件选择以及参数设定5,系统的接线电路6,总结7,附录(1)程序(2)电路图基于光电传感器测距系统设计摘要物体距离检测系统,人们可以设置一定的距离范围,在该范围内移动光源,光照强度的变化通过电压反映出来,在显示器中显示出来,根据电压的大小大概推算出距离的远近。我们将光敏电阻传感器作为检测元件,它可以完成从光强从电阻值得
2、信号转换,再把电阻值转换成电信号就可以作为系统的输入信号。输入信号经过转换将数据送入单片机中进行数据处理,这一系列的过程我们是使用AT89C51单片机、AD0804转换器这两个器件来完成的。输入信号处理后,就可以显示了,。对于显示部分可以利用LCD液晶显示器来完成,在一定范围内,不同的距离在显示屏中显示的电压是不一样的。 一,系统设计1,传感器的选择:硫化镉(Cds),光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达110M;在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。2,系统功能的描述:在测量物体距离时我们采用的时光敏电阻作为本次课题
3、的光电传感器。距离的变化引起光照强度的变化,进而光敏电阻的阻值发生变化,最终引起电路的输出电压的变化。本课题是以AT89C51单片机、AD0804转换器核心器件,AD0804将电路中的模拟信号转换成数字信号送入单片机进行数据的处理,最后通过LCD液晶将电路的电压显示出来。3,系统原理框图光电传感器LCD液晶显示信号处理单片机 4, 系统结构分析: 光电传感器(信号采集部分) 采用光敏电阻作为信号采集器件,光敏电阻是基于光电导效应的一种光电器件,无光照时,光敏电阻值(暗电阻)很大,电路中的(暗电流)很小,当受到光照时,半导体材料电导率增加,电阻减小,其阻值随光照强度而减小,。光敏电阻作为光电式传
4、感器的一种,它具有灵敏度高,光谱响应范围宽,体积小,重量轻,机械强度高,耐冲击,耐震动,抗过载能力强和寿命长等优点,所以选择光敏电阻采集光照信号,把不同的光照强度转化为不同的电阻值。把光敏电阻串联在直流电路中即可把不同的电阻值转化为不同的电压值。把对光电信号的处理转化为对电压信号的处理。 AD0804(信号处理部分) AD0804是一只具有20引脚8位CMOS连续近似的A/D转换器,将光敏电阻采集到的电压模拟量信号转换成数字量的信号。 AT89C51(数据处理部分)AT89C51是一种带4K字节闪烁可编程可擦除的只读存储低电压高性能的CMOS8位微处理器,在本次课题中,AT89C51将AD08
5、04转换出来的数字信号进行处理,处理完成将电压通过显示器显示出来,AT89C51和AD0804的接线图如原理图所示。 LCD液晶显示(显示部分)将电压信号通过显示器显示出来,距离的改变直接通过电压显示出来,电压的大小近似取决于距离的远近。 二,主要器件的功能介绍 1,AD0804的结构图 2,AD0804引脚功能的介绍(1)PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写,入与否,当其为低位准(low) 时会active。(2)PIN2 ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7
6、 DB0 输出至其它处理单元。(3)PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时,ADC0804 做清除的动作,系统重置。当WR 由01且CS 0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。 (4) PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出最大值无法大于640KHz,一般可选用外部或内部来提供频率。(5)PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位 (low)告
7、知其它的处理单元已转换完成,可读取数字数据。 (6) PIN6、PIN7 (VIN(+)、VIN(-):差动模拟讯号的输入端。输入电压VINVIN(+)VIN(-),通常使用单端输入,而将VIN(-)接地。(7)PIN8 (A GND):模拟电压的接地端。(8)PIN9 (VREF2)模拟参考电压输入端。VREF 为模拟输入电压VIN 的上限值。若PIN9空接,则VIN 的上限值即为VCC。(9)PIN10 (D GND)数字电压的接地端。(10)PIN11 PIN18 (DB7 DB0)转换后之数字数据输出端。(11)PIN20 (Vcc)驱动电压输入端 3,AT89C51的结构图 4,AT
8、89C51的主要特性及各引脚的功能 (1)特性 与MCS-51 兼容4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路(2)引脚的功能1.VCC:供电电压;2.GND:接地;3.P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输
9、入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。4.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。5.P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。 并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16
10、位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。6.P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表41所示:引 脚第二功能信 号 名 称P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3
11、.7RXDTXDINT0INT1T0T1 WRRD串行数据接收串行数据发送外部中断0请求外部中断1请求定时器/计数器0计数输入定时器/计数器1计数输入外部RAM写选通外部RAM读选通P3口的第二功能 (3)晶振电路 时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ。 MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典
12、型值为30pF。 三,传感器的工作原理 光电传感器是利用光敏元件将光信号转换为电信号的的传感器,它的敏感波长在可见光波长附件,包括红外线波长和紫外线波长。光敏电阻器是利用半导体光电导效应制成的一种特殊电阻器,对光线十分敏感,它的电阻值能随着外界光照强弱(明暗)变化而变化。在无光照射时,呈高阻状态;当有光照射时,其电阻值迅速减小,广泛用于各种控制电路,(自动照明灯控制电路、自动报警电路等),家用电气(如电视机中的高度自动调节。照相机中的自动曝光控制等)及各种测量仪器中。光敏电阻又称光导管,它几乎都是用半导体材料制成的光电器件。光敏电阻没有极性,纯粹是一个电阻器件,使用时既可以加直流电压,也可以加
13、交流电压。当光敏电阻受到一定波长范围的光照时,它的阻值急剧减小,电路中的电流迅速增大,一般希望暗电阻越大越好,亮电阻越小越好,此时光敏电阻的灵敏度高。该系统可通过光敏电阻将由于距离变化引起的光照强度变化这一非电气量转化为电压这一电气量。当距离近时,光照强,光敏电阻的阻值很小;当距离远时,光照弱,光敏电阻的阻值大。四,系统的元件的选择及参数的设定元件型号滑动变阻器RV11K电阻R1=R210K电阻R3=R41K电容C1150pf电容C2=C333pf晶振振荡频率12MHz模数转换器AD0804单片机AT0804显示器LCD(LM016L)电源部分:电源电压设置为5V; 仿真时用滑动变阻器RV1代
14、替光敏电阻,电阻;五,系统的接线电路该电路用滑动变阻器代替了光敏电阻,电阻值的变化引起电路输出电压的变化,电压这个模拟量经过AD0804模数转换为数字量,数字量的电压信号进入单片机进行处理,最后通过LCD显示。我们通过实验得到距离和光敏电阻两端电压的数据,从数据我们可以得到距离和电压的近似的关系,数据如下:距离/mm5101520253035404550电压/v3.612.661.711.20.940.750.610.510.430.37 通过表格中的数据,我们可以大概绘制出距离和电压的曲线图,如下: 从曲线图中我们我们可以看出,在一定的距离范围,随着距离的增大,光照强度变弱,光敏电阻的阻值增
15、大,电路输出的电压值变小,所以我们就可以根据显示器显示的的电压的大小来大概判断出距离的多少六,总结 经过两周的课程设计,我学到了很多。这次课程设计我们学到的远不止光电传感器的设计,而是团队的力量。 虽然一开始我们遇到了一些困难,程序设计也遇到了挫折。但是组员积极配合,通过与向别人的请教和查询相关资料,最终我们都克服了这些困难。 作为当代大学生,我们需要学习的不仅仅是课本知识这么简单的了,更多的是需要学习自己的动手能力,在现在这个社会下,我们需要作出的不仅是书本知识,而是全面的素养。为此,通过这次课程设计,七,附录AT89S51的程序#include#define uchar unsigned
16、char#define uint unsigned intsbit rs=P25;sbit lcden=P27;sbit wr=P26;sbit WRR=P36;sbit RDD=P37;sbit CS=P20;uchar love=0;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)rs=0;wr=0;lcden=0;delay(1);P0=com;delay(1);lcden=1;delay(1);lcden=0;void write_date(uchar date)rs=
17、1;wr=0;lcden=0;P0=date;delay(1);lcden=1;delay(1);lcden=0;void init_lcd()lcden=0;write_com(0x38);delay(1);write_com(0x0c);delay(1);write_com(0x06);delay(1);write_com(0x01);delay(1);write_com(0x80);delay(1);write_date(L);write_com(0x81);delay(1);write_date(o);write_com(0x82);delay(1);write_date(v);wri
18、te_com(0x83);delay(1);write_date(e);write_com(0x84);delay(1);write_date( );write_com(0x85);delay(1);write_date(D);write_com(0x86);delay(1);write_date(o);write_com(0x87);delay(1);write_date(n);write_com(0x88);delay(1);write_date(g);write_com(0x89);delay(1);write_date( );write_com(0x8a);delay(1);write
19、_date(S);write_com(0x8b);delay(1);write_date(h);write_com(0x8c);delay(1);write_date(e);write_com(0x8d);delay(1);write_date(n);write_com(0x8e);delay(1);write_date(g);/*void write_sfm(uchar add,uchar date)uchar ge,shi;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30
20、+ge); */void init_ad()P1=0;P0=0;CS=0;void start()WRR=0;WRR=1;void main()uchar result;init_ad();init_lcd();P1=0xff;while(1)/P1=0;CS=0;start();delay(5);RDD=0;delay(8);result=P1;RDD=1;delay(20);/lcdinit();P0=result;/while(1);/result=result/256*5;/*lcdwritetable(0x83,AD Convert,10);lcddisplay(0x80+0x40+
21、5,result*5/256+48);lcddisplay(0x81+0x40+5,.);lcddisplay(0x82+0x40+5,result*5*10/256%10+48);lcddisplay(0x83+0x40+5,result*5*100/256%10+48);lcddisplay(0x84+0x40+5,V);delay(1000); */P0=P1;write_com(0x80+0x40+5);write_date(result*5/256+0);write_com(0x80+0x40+6);write_date(.);write_com(0x80+0x40+7);write_date(result*5*10/256%10+0);write_com(0x80+0x40+8);write_date(result*5*100/256%10+0);write_com(0x80+0x40+9);write_date(V);delay(10);电路图滑动变阻器的阻值的大小改变,显示器上电压的示数也随之改变。12