基于 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 共地

相关推荐
JNX_SEMI15 小时前
EG2226 全桥驱动芯片技术解析:600V/1A 耐压、SSOP16 封装,助力逆变器与无刷电机驱动设计
单片机·嵌入式硬件·物联网
大卡片16 小时前
PWM控制原理
嵌入式硬件
周周记笔记18 小时前
【元器件专题】用阻抗等效分析法来分析开关电路
单片机·嵌入式硬件
leoFY12318 小时前
STM32H750配置LAN PHY芯片LAN8742
网络·stm32·嵌入式硬件
iCxhust18 小时前
如何利用iret修改cs ip
汇编·单片机·嵌入式硬件·微机原理·8088单板机
m0_3771081419 小时前
stm32平衡车
stm32·单片机·嵌入式硬件
小+不通文墨20 小时前
把树莓派外接的DHT11接收的温湿度发送到emqx上
经验分享·笔记·嵌入式硬件·学习·树莓派
Deitymoon21 小时前
FreeRTOS——列表与列表项
stm32·单片机·嵌入式硬件
总结所学21 小时前
电路定理 叠加定理 基尔霍夫定律
单片机·嵌入式硬件
雪度娃娃1 天前
存储器层次结构——随机访问存储器
单片机·嵌入式硬件·计算机组成原理