基于PIC16F877的红外测距系统

时间:2025-06-12

基于 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使能信号

其他可选模块

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. 扩展优化

上一篇:双控开关和双开双控开关的接线方法
下一篇:幅度调制的解调四种方式详解

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料