基于单片机的红外测距系统设计

上传人:豆浆 文档编号:40879673 上传时间:2018-05-27 格式:DOC 页数:13 大小:109.50KB
返回 下载 相关 举报
基于单片机的红外测距系统设计_第1页
第1页 / 共13页
基于单片机的红外测距系统设计_第2页
第2页 / 共13页
基于单片机的红外测距系统设计_第3页
第3页 / 共13页
基于单片机的红外测距系统设计_第4页
第4页 / 共13页
基于单片机的红外测距系统设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于单片机的红外测距系统设计》由会员分享,可在线阅读,更多相关《基于单片机的红外测距系统设计(13页珍藏版)》请在金锄头文库上搜索。

1、 北京联合大学应用科技学院北京联合大学应用科技学院实训报告实训报告基于单片机的红外测距系统设计基于单片机的红外测距系统设计系系 别别 电子电子 专专 业业 电子信息工程技术电子信息工程技术 年年 级级 12 级级 02 班班 组长:组长: 张祎楠张祎楠 2012191294068 组员:殷跃组员:殷跃 2012191294070 白雨童白雨童 2012191294063目目 录录第 1 章 绪论.11.1 本课题研究的目的.21.2 本课题研究的内容.313 整个红外测距系统显示.4第 2 章 红外测距的软件设计.5后 记.6第第 1 章章 绪论绪论1.3 本课题研究的目的本课题研究的目的我们

2、所进行的课题便是做一个简易的,精确的,近距离的距离检测仪,这也是对我们所学知识的一种考验方法,从中我们可以更系统的认识单片机,了解 AD 转换和红外收发模块。1.4 本课题研究的内容本课题研究的内容红外传感器的测距基本原理为:红外发射电路的红外发光管发出红外光,红外接收电路的光敏接收管接收发射光,根据发射光的强弱判断出所测的距离。由于接收管接收的光强度是随着发光管与测量物的距离变化而变化的,因而,与测量物的距离近则接收光强,距离远则接收光弱。具体方法如图 1 所示,红外模块发出并接收到红外线信号;AD 转换模块将接收到的模拟信号转换成数字信号再交给单片机, 启动单片机中断程序,此时单片机得到数

3、字信号也就是电压值,再由软件进行判别、计算,得出距离数并送给 LED/LCD 显示。单片机红外模块AD 模块电压距离公式显示模块图 1.1 反射能量法原理北京联合大学实训报告图 3.7 protues 中整体系统单片机 AT89C52 左端分别接了时钟电路和复位电路,这是单片机最小的系统。XTAL1 和 XTAL2 串连一个晶振,并且分别接上一个 20p 的电容,两个电容另一端都接地,构成时钟电路。RST 同时接上 100p 电容,4 脚按键,1k 电阻,4 脚按键另一端接上一个 1k 电阻再与 100p 电容并联接 VCC,1k 电阻另一端则接地,构成复位电路。单片机 AT89C52 右端

4、P0 端同时接 LED 的 D1-D7 端口和排阻,P2.0 接 CLK,P2.1 接DO,P2.2 接 CS,P2.5 接 E,P2.6 接 RW,P2.7 接 RS。MCP3001 的 VREF 接 vcc,IN+接红外距离传感器的 Vo。软件程序软件程序 #include #include #define uchar unsigned char#define uint unsigned int北京联合大学实训报告#define ulong unsigned longsbit RS=P20; /LCD 命令/数据端sbit RW=P21; /LCD 读/写端sbit LCDE=P22; /

5、LCD 使能端sbit MCP_CS=P23;/MCP3001 与 AT89S52 的管脚接线定义sbit MCP_DO=P24;sbit MCP_CLK=P25;uint measure;uchar flag; /Busy 标志uchar code dis=“Measure Start“;/显示uchar code dis1 = “V= . V,L= CM“;uchar code dis2 = “0123456789.“;/显示代码uchar code dis3=“Out Measure!“;/显示uchar dis_buf8;/显示缓冲区void L_delay(void);/短延时voi

6、d delay_ms(uint n);/延时函数uint read_MCP(void);/读 MCP3001void init_1602(void);/1602 初始化函数void busy(void);/LCD 忙标志判断函数void dat_wrt(uchar dat);/写数据子函数void cmd_wrt(uchar cmd);/写命令子函数uint distance(void);/距离计算函数void lcd_start(uchar start);/设定显示位置函数void LCD_Clear(void);/LCD 清屏函数uchar dat_adj(uint dat1);/显示数据

7、调整函数void print(uchar *str);/字符串显示函数void disp(uint dat);/显示子函数uint average(void);/算术平均滤波程序/*主函数*/main()init_1602();print(dis);/显示测量开始delay_ms(1000);北京联合大学实训报告while(1)measure=distance();disp(measure);/显示高度delay_ms(100);/*延时函数*/void delay_ms(uint n)uint j;while(n-)for(j=0;j60)/转换测量数据elsetemp1=0x00ff;/超

8、出测量范围,返回错误标志return(temp1);/*算术平均滤波程序*/uint average(void)uchar i;uint av_dat; /av_dat 平均数据/北京联合大学实训报告ulong ave=0;for(i=0;i10;i+)/连续读取 10 个数据值ave+=read_MCP();/读转换数据L_delay();av_dat=(uint)(ave/10);/求平均值return(av_dat);/*1602 初始化函数*/void init_1602(void)cmd_wrt(0x01);/清屏cmd_wrt(0x0c);/开显示,不显示游标,不闪烁cmd_wrt

9、(0x06);/完成一个字符码传送后,光标左移,显示不发生移位元cmd_wrt(0x38);/162 显示,57 点阵,8 位数据接口/*设定显示位置函数*/void lcd_start(uchar start)cmd_wrt(start|0x80);/*LCD 清屏函数*/void LCD_Clear(void)cmd_wrt(0x01);/写入清屏指令delay_ms(1);/*显示数据调整函数*/ uchar dat_adj(uint dat1) /dat1 L 距离/uchar i=0;北京联合大学实训报告uint date;date=average()/2;dis_buf0=(uch

10、ar)(dat1/100);/百位dis_buf1=(uchar)(dat1%100/10);/十位dis_buf2=(uchar)(dat1%100%10);/个位dis_buf3= date/100 ;dis_buf4= date%100/10;dis_buf5= date%100%10;if(dis_buf0=0)i=1;return(i);/*字符串显示函数*/void print(uchar *str)while(*str!=0)/直到字符串结束dat_wrt(*str); str+;/指向下一个字符/*显示子函数*/void disp(uint dat)uchar temp,j;i

11、f(dat!=0x00ff)temp=dat_adj(dat);LCD_Clear();lcd_start(0x40);print(dis1);lcd_start(0x42);dat_wrt(dis2dis_buf3);print(“.“);北京联合大学实训报告for(j=4;j6;j+)dat_wrt(dis2dis_bufj);/显示文字lcd_start(0x4B+temp); /确定显示起始位置for(j=temp;j3;j+)/写显示数据dat_wrt(dis2dis_bufj);elseLCD_Clear();lcd_start(0x42+temp);/确定显示起始位置print(dis3);北京联合大学实训报告后后 记记在这次论文设计中我明白了理论和实际之间有着巨大的差距,理论成立但毕竟只是原理上,一旦做起来就会发现现实中有着各种各样的因素影响着你,只看理论是不会发现这些的,只有实践中你才会发现自己的不足。比如这次红外测距中,时间差距法原理上没问题,但是实际上它是用来测几千米

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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