基于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转换初始设定与选择模拟输入端的程序如下:
相关文章
- 2021-10-27基于68HC908MR16单片机的光伏正弦波逆变电源
- 2022-02-19模块化在开放式数控系统设计中
- 2023-11-19薄膜装置增上溴化锂制冷机组分析
- 2023-10-29一种新型的可编程的4~20mA二线制变送器XTR108及其应用
- 2023-10-29基于SQP算法的形状误差统一评定
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。