基于 51 单片机的红外智能垃圾桶源程序

使用 STC89C52 / AT89C52 + 红外人体感应 + SG90 舵机,非常适合课程设计 / 毕业设计 / 智能家居 DIY。


一、系统功能说明

人体靠近 → 自动开盖

延时 3~5 秒 → 自动关盖

支持手动按键开盖

低功耗待机(可扩展)


二、硬件连接(标准接法)

模块 51 单片机
红外人体感应 HC-SR501 P3.2(INT0)
按键 P3.3
舵机 SG90 P1.0
蜂鸣器(可选) P1.1
LED 指示灯 P1.2

三、核心工作原理

  • HC‑SR501:检测到人体 → 输出高电平
  • 定时器0:产生 20ms 舵机 PWM
  • 角度控制
    • 0° → 0.5ms
    • 90° → 1.5ms
    • 180° → 2.5ms

四、源程序(Keil C )

main.c(可直接编译)

c 复制代码
#include <reg52.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

sbit SERVO = P1^0;     // 舵机信号
sbit IR    = P3^2;     // 红外人体
sbit KEY   = P3^3;     // 手动按键
sbit LED   = P1^2;     // 指示灯

uchar count = 0;
uchar angle = 0;       // 舵机角度控制
bit open_flag = 0;

/* 延时 ms */
void DelayMs(uint ms)
{
    uint i, j;
    for(i = ms; i > 0; i--)
        for(j = 110; j > 0; j--);
}

/* 定时器0初始化(20ms PWM) */
void Timer0_Init(void)
{
    TMOD &= 0xF0;
    TMOD |= 0x01;
    TH0 = 0xB8;   // 20ms
    TL0 = 0x00;
    ET0 = 1;
    EA  = 1;
    TR0 = 1;
}

/* 舵机角度设置(0~180) */
void Servo_SetAngle(uchar ang)
{
    angle = ang;
}

/* 开盖 */
void Trash_Open(void)
{
    Servo_SetAngle(180);
    LED = 1;
}

/* 关盖 */
void Trash_Close(void)
{
    Servo_SetAngle(0);
    LED = 0;
}

/* 定时器中断 */
void Timer0_ISR(void) interrupt 1
{
    TH0 = 0xB8;
    TL0 = 0x00;

    count++;
    if(count >= 40) count = 0;

    if(count < angle / 9 + 5)
        SERVO = 1;
    else
        SERVO = 0;
}

/* 主函数 */
void main(void)
{
    Timer0_Init();
    Trash_Close();

    while(1)
    {
        if(IR == 1 || KEY == 0)   // 红外或按键触发
        {
            Trash_Open();
            DelayMs(3000);        // 开盖延时
            Trash_Close();
        }
    }
}

五、HC‑SR501 红外模块设置

跳线 设置
触发方式 单次触发
延时 最小
灵敏度 中档

参考代码 基于51单片机的红外智能垃圾桶源程序和原理图 www.youwenfan.com/contentcst/182092.html

六、舵机角度对照表

角度 高电平时间 占空比
0.5 ms 2.5%
90° 1.5 ms 7.5%
180° 2.5 ms 12.5%

七、常见问题排查

问题 原因
舵机不转 电源功率不足
一直开盖 红外感应太灵敏
垃圾桶抖动 舵机供电不稳
误触发 环境热风干扰

建议:舵机单独供电,GND 与 51 共地

相关推荐
嵌入式阿蔡9 小时前
传感器_03:电机驱动——让 GPIO 当指挥官,别让 GPIO 当电源
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
国科安芯11 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
树的枝14 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
单片机杂货铺15 小时前
【单片机毕业设计选题】基于stm32单片机儿童公路车速度检测报警
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
振南的单片机世界16 小时前
看门狗硬核拆解:1.6秒不喂狗,硬件强制“掀桌子”
arm开发·stm32·单片机·嵌入式硬件
嵌入式阿蔡16 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
NYFEA18 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
国科安芯19 小时前
ASL622S:把“信号失真“挡在门外的航天级运放
网络·单片机·嵌入式硬件·架构·状态模式·低轨卫星星座
XiHongShi201619 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺19 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计