基于PIC16F877的红外测距系统

出处:网络整理 发布于:2025-06-12 17:12:20

基于 PIC16F877 的红外测距系统设计,主要利用红外传感器(如 GP2Y0A21YK 或 SHARP IR 系列)进行非接触式距离测量,并通过单片机处理数据,终显示或输出结果。以下是完整的系统设计方案:

1. 系统组成

模块功能说明
PIC16F877主控MCU,负责信号采集、处理和输出
红外测距传感器如GP2Y0A21YK(10-80cm)
ADC模块将模拟电压信号转换为数字值
LCD显示如16x2字符LCD,显示距离值
蜂鸣器/报警超出阈值时报警(可选)
电源管理5V稳压供电

2. 硬件连接

PIC16F877 与红外传感器

PIC16F877 引脚连接目标说明
RA0/AN0红外传感器输出模拟输入(ADC通道0)
VDD (+5V)传感器VCC供电(需注意电流要求)
GND传感器GND共地

PIC16F877 与 LCD

PIC16F877 引脚LCD 引脚说明
RB0-RB7D0-D7数据总线(8位)
RC0 (RS)RS寄存器选择
RC1 (RW)RW(可接地)读/写控制
RC2 (EN)EN使能信号

其他可选模块

  • 蜂鸣器 → 连接 RD0(通过三极管驱动)

  • LED指示灯 → 连接 RD1(距离正常/异常指示)

3. 软件设计(C语言,MPLAB X IDE + XC8编译器)

(1) ADC初始化

#include <xc.h> #define _XTAL_FREQ 4MHz  // 假设使用4MHz晶振
 void ADC_Init() {
    ADCON1 = 0b10000000; // 右对齐,AN0-AN7模拟输入
    ADCON0 = 0b01000001; // 选择AN0,ADC使能,Fosc/8 }
 int ADC_Read(int channel) {
    ADCON0 = (ADCON0 & 0b11000011) | (channel << 2); // 选择通道
    __delay_us(20);      // 采样时间
    GO_nDONE = 1;        // 启动转换
    while (GO_nDONE);    // 等待转换完成
    return (ADRESH << 8) + ADRESL; // 返回10位ADC值 }

(2) 红外测距计算

红外传感器(如GP2Y0A21YK)输出电压与距离成反比,需校准公式:

float Get_Distance() {
    int adc_value = ADC_Read(0);  // 读取AN0的ADC值
    float voltage = adc_value * 5.0 / 1023.0; // 转换为电压(0-5V)
    float distance_cm = 27.86 * pow(voltage, -1.15); // 校准公式(需实测调整)
    return distance_cm; }

注意:公式 27.86 * V^(-1.15) 是GP2Y0A21YK的近似关系,实际需用标定数据修正。

(3) LCD显示

#include "lcd.h"  // 假设已实现LCD驱动
 void main() {
    ADC_Init();
    LCD_Init();
    while (1) {
        float distance = Get_Distance();
        LCD_Clear();
        LCD_String("Distance:");
        LCD_SetCursor(2, 1);
        LCD_PrintFloat(distance, 1); // 显示1位小数
        LCD_String(" cm");
        __delay_ms(500);
    } }

(4) 报警功能(可选)

if (distance > 50.0) {  // 超过50cm报警
    RD0 = 1;  // 蜂鸣器响
    RD1 = 1;  // LED亮 } else {
    RD0 = 0;
    RD1 = 0; }

4. 关键注意事项

  1. 传感器供电稳定:红外传感器对电压敏感,建议使用LDO稳压(如AMS1117-5V)。

  2. ADC参考电压:确保VREF稳定,可外接精准基准电压(如2.5V)提高精度。

  3. 非线性校准:红外传感器输出非线性,需通过实测数据拟合公式(如分段线性化)。

  4. 抗干扰:

    • 避免环境光干扰(加遮光罩)。

    • 软件上可多次采样取平均(如采样10次去极值后平均)。

5. 扩展优化

  • 串口输出:通过UART将距离数据发送到PC(如Putty显示)。

  • 无线传输:加装蓝牙模块(HC-05)实现手机监控。

  • 多传感器融合:结合超声波模块(HC-SR04)提高测距范围。

关键词:PIC16F877

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

深圳市宝森达贸易有限公司 PIC16F877A-I/P
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!