碧波液压网 欢迎你,游客。 登录 注册

基于PIC16F877的红外测距系统

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  

  越障机器人在行进过程中需要不断地获取关于前方障碍的信息,从而对机器人进行有效地控制。由于机器人体积小,对传感器要求精度高,因此采用单片机进行控制。PIC16F877内有8通道、具有10位精度的A/D转换模块,我们利用这种单片机设计了一个红外测距系统。

  1 红外传感器的原理

  传感器的红外发光管发出红外光,光敏接收管接收前方物体反射光;接收管接收的光强随反射物体的距离变化,据此判断前方是否有障碍物并根据接收信号强弱判断物体的距离。

  2 PIC16F877简介

  PIC16F877单片机是由美国Microchip公司生产的8位单片微机,具有独特的RISC(精简指令集)结构,数据总线和指令总线分离的哈佛总线结构,使指令只有单字长的特性,且允许指令码的位数可多于8位的数据位数,这与传统的采用CISC结构的8位单片机相比,可以达到2∶1的代码压缩,速度提高4倍。P1C16F877芯片上集成有8K的Flash可重复编程存储器,368byte的数据存储器,256byte的EEPROM数据存储器,3个定时/计数器,2个集捕捉、比较、脉宽调制3项功能于一身的CCP模块,同步串行通信端口,10位多通道A/D转换器,以及时钟、上电复位、看门狗等。芯片引脚共40条。

  3 基于PIC16F877的红外测距系统

  3.1 硬件电路设计

  首先利用红外发光管TLN205发射红外光,红外光在遇到前面的障碍物反射,由红外接收管TPS708接收,此时TPS708会产生一个与光强相对应的电流。电流经由LM358两级放大后,在输出端可以得到一个0~3V的模拟电压,作为PIC16F877单片机RA0端口的模拟输入量。单片机在完成初始化和端口选择后,即开始进行A/D转换,重复等待与检查转换完成标志值是否已为零,最后将转换结果通过译码器74LS138在LED上显示出来。

  红外光发射及接收电路如图1所示,Vin为控制输入信号(采用高低电平输入),以控制发光管的开关。单片机硬件连接图电路如图2所示。

  3.2 软件设计

  主程序和A/D转换子程序流程图如图3和图4所示。

  3.2.1 设定输入/输出引脚

  PIC16F877单片机D口的8个端口作为数据输出使用,同时将A口的RA0引脚设定为模拟电压输入。控制D口输入/输出功能的TRISD寄存器(地址为88h)全设为0;A口输入输出功能的TRISA寄存器(地址为85h)〈0〉位为1。PIC指令如下所示:

  bankel TRISD;选择寄存器所在的数据存储体

  clrf TRISD;设定D口为数据输出口

  bsf TRISA,0 ;设定RA0位输入口

  3.2.2 A/D转换

  PIC16F877单片机A/D转换的初始设定存放在A/DCON1寄存器(地址为9fH)与A/DCON0寄存器(地址为1fH)中。A/D转换初始设定与选择模拟输入端的程序如下:

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论