q 基于光电传感器测距系统设计解析Word文档下载推荐.docx
- 文档编号:21338961
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:17
- 大小:279.96KB
q 基于光电传感器测距系统设计解析Word文档下载推荐.docx
《q 基于光电传感器测距系统设计解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《q 基于光电传感器测距系统设计解析Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
1、AD0804的结构图
2、ADC0804引脚功能的介绍
(1)引脚1(CS):
ChipSelect,与RD、WR接脚的输入电压高低一起判断读取或写,入与否,当其为低位准(low)时会active。
(2)引脚2(RD):
Read。
当CS、RD皆为低位准(low)时,ADC0804会将转换后的数字讯号经由DB7~DB0输出至其它处理单元。
(3)引脚(WR):
启动转换的控制讯号。
当CS、WR皆为低位准(low)时,ADC0804做清除的动作,系统重置。
当WR由0→1且CS=0时,ADC0804会开始转换信号,此时INTR设定为高位准(high)。
(4)引脚4、引脚19(CLKIN、CLKR):
频率输入/输出。
频率输入可连接处理单元的讯号频率范围为100kHz至800kHz。
而频率输出最大值无法大于640KHz,一般可选用外部或内部来提供频率。
(5)引脚5(INTR):
中断请求。
转换期间为高位准(high),等到转换完毕时INTR会变为低位(low)告知其它的处理单元已转换完成,可读取数字数据。
(6)引脚6、引脚7(VIN(+)、VIN(-)):
差动模拟讯号的输入端。
输入电压VIN=VIN(+)—VIN(-),通常使用单端输入,而将VIN(-)接地。
(7)引脚8(AGND):
模拟电压的接地端。
(8)引脚9(VREF∕2)︰
模拟参考电压输入端。
VREF为模拟输入电压VIN的上限值。
若引脚9空接,则VIN的上限值即为VCC。
(9)引脚10(DGND)︰数字电压的接地端。
(10)引脚11~引脚18(DB7~DB0)︰转换后之数字数据输出端。
(11)引脚20(Vcc)︰驱动电压输入端
3、A/D转换电路
A/D转换电路如图所示,由于PROTUES仿真软件不能仿真光敏电阻接受光照后电阻的变化,故在ADC0804的输入端加一滑变电阻器,来代替光敏电阻产生的0~4.92V模拟电压,经过A/D转换后送到单片机的P1口,从而实现电路的仿真。
4、AT89C52的结构图
5、AT89C52单片机概述
AT89C52是美国Atmel公司生产的低电压、高性能CMOS
8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
其主要工作特性是:
1)片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;
2)片内数据存储器内含256字节的RAM;
3)具有32根可编程I/O口线;
4)具有3个可编程定时器;
5)中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;
6)串行口是具有一个全双工的可编程串行通信口;
7)具有一个数据指针DPTR;
8)低功耗工作模式有空闲模式和掉电模式;
9)具有可编程的3级程序锁定位;
10)AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;
11)AT89C52最高工作频率为24MHz
6、AT89C52的各引脚功能:
·
P0
口:
口是一组8
位漏极开路型双向I/O
口,
也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8
个TTL逻辑门电路,对端口P0
写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8
位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash
编程时,P0
口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1
是一个带内部上拉电阻的8
位双向I/O
的输出缓冲级可驱动(吸收或输出电流)4
个TTL
逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉
电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51
不同之处是,P1.0
和P1.1
还可分别作为定时/计数器2
的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),
Flash
编程和程序校验期间,P1
接收低8
位地址。
P2
是一个带有内部上拉电阻的8
口,P2
对端口P2
写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16
位地址的外部数据存储器(例如执行MOVX
@DPTR
指令)时,P2
口送出高8
位地址数据。
在访问8
位地址的外部数据存储器(如执行MOVX
@RI
口输出P2
锁存器的内容。
编程或校验时,P2亦接收高位地址和一些控制信号。
·
P3
口是一组带有内部上拉电阻的8
口。
口输出缓冲级可驱动(吸收或输出电流)4
对P3
口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3
口将用上拉电阻输出电流(IIL)。
口除了作为一般的I/O
口线外,更重要的用途是它的第二功能,P3
口还接收一些用于Flash
闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8
位字节。
一般情况下,ALE
仍以时钟振荡频率的1/6
输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE
脉冲。
对Flash
存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH
单元的D0
位置位,可禁止ALE
操作。
该位置位后,只有一条
MOVX
和MOVC指令才能将ALE
激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE
禁止位无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52
由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN
有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU
仅访问外部程序存储器(地址为0000H—FFFFH),EA
端必须保持低电平(接地)。
需注意的是:
如果加密位LB1
被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU
则执行内部程序存储器中的指令。
存储器编程时,该引脚加上+12V
的编程允许电源Vpp,当然这必须是该器件是使用12V
编程电压Vpp。
XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
7、晶振电路
时钟电路是计算机的心脏,它控制着计算机的工作节奏。
MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ。
MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。
电容C1和C2的作用有两个:
其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。
8、显示电路
LCD与单片机的接口电路如图所示,单片机通过P0口向LCD输送数据,显示测得的距离所对应的电压。
值得注意的是,P0口要接上拉电阻来保证对LCD的成功驱动。
四、软件
1、系统软件结构框图
2、AT89S51的程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitrs=P2^5;
sbitlcden=P2^7;
sbitwr=P2^6;
sbitWRR=P3^6;
sbitRDD=P3^7;
sbitCS=P2^0;
ucharlove=0;
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidwrite_com(ucharcom)
rs=0;
wr=0;
lcden=0;
delay
(1);
P0=com;
lcden=1;
voidwrite_date(uchardate)
rs=1;
P0=date;
voidinit_lcd()
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
write_date('
L'
);
write_com(0x81);
o'
write_com(0x82);
v'
write_com(0x83);
e'
write_com(0x84);
'
write_com(0x85);
D'
write_com(0x86);
write_com(0x87);
n'
write_com(0x88);
g'
write_com(0x89);
write_com(0x8a);
S'
write_com(0x8b);
h'
write_com(0x8c);
write_com(0x8d);
write_com(0x8e);
}
/*voidwrite_sfm(ucharadd,uchardate)
{
ucharge,shi;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
}*/
voidinit_ad()
P1=0;
P0=0;
CS=0;
voidstart()
WRR=0;
WRR=1;
voidmain()
ucharresult;
init_ad();
init_lcd();
P1=0xff;
while
(1)
//P1=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,"
ADConvert"
10);
lcddisplay(0x80+0x40+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_com(0x80+0x40+7);
write_date(result*5*10/256%10+'
write_com(0x80+0x40+8);
write_date(result*5*100/256%10+'
write_com(0x80+0x40+9);
delay(10);
五、系统总电路图
六、系统的元件的选择及参数的设定
元件
型号
滑动变阻器
1K
电阻R1=R2
10K
电阻
电容C1
150pF
电容C2=C3
33pF
晶振
振荡频率12MHz
模数转换器
ADC0804
单片机
AT89C52
显示器
LCD(LM016L)
电源部分:
电源电压设置为5V;
仿真时用滑动变阻器RV1代替光敏电阻,电阻;
七、仿真调试界面及仿真结果说明
滑动变阻器的阻值的大小改变,显示器上电压的示数也随之改变。
八、系统的接线电路
该电路用滑动变阻器代替了光敏电阻,电阻值的变化引起电路输出电压的变化,电压这个模拟量经过ADC0804模数转换为数字量,数字量的电压信号进入单片机进行处理,最后通过LCD显示。
我们通过实验得到距离和光敏电阻两端电压的数据,从数据我们可以得到距离和电压的近似的关系,数据如下:
距离/mm
5
10
15
20
25
30
35
40
45
50
电压/V
3.61
2.66
1.71
1.2
0.94
0.75
0.61
0.51
0.43
0.37
通过表格中的数据,我们可以大概绘制出距离和电压的曲线图,如下:
从曲线图中我们我们可以看出,在一定的距离范围,随着距离的增大,光照强度变弱,光敏电阻的阻值增大,电路输出的电压值变小,所以我们就可以根据显示器显示的的电压的大小来大概判断出距离的
九、参考文献
1.
薛小玲、刘志群、贾俊荣编著《单片机接口模块应用于开发实例详解》
北京航空航天大学出版社
2010
2.
谭浩强
著《C程序设计》(第三版)
清华大学出版社
2005
3.
何桥、段清明、邱春玲编著《单片机原理及应用》
中国铁道出版社
2004
4.
.曲波
肖圣兵
吕建平编著《工业常用传感器选型指南》
2002
5.
.陈鸿茂编著《常用电子器件简明手册》
中南矿业大学出版社
2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于光电传感器测距系统设计解析 基于 光电 传感器 测距 系统 设计 解析