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

相关推荐
椰羊~王小美2 小时前
STM32 和 51单片机
stm32·嵌入式硬件·51单片机
ACP广源盛139246256732 小时前
长距传输全能芯 @ACP#GSV5800 Type‑C/DP1.4/HDMI2.0 高速延长芯片
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
So_shine2 小时前
stm32f103汇编-1:LED点灯
汇编·stm32·单片机·led
踏着七彩祥云的小丑2 小时前
嵌入式——认识电子元器件——电阻系列
单片机·嵌入式硬件
一个平凡而乐于分享的小比特2 小时前
单片机烧录方式终极指南:ICP、ISP、IAP 深度对比与实战解析
单片机·mongodb·接口隔离原则
WeeJot嵌入式2 小时前
【中断】初识中断以及外部中断的使用
c语言·stm32·单片机·嵌入式硬件·嵌入式
电源海盗船2 小时前
【无标题】
stm32·单片机·嵌入式硬件·开源·硬件工程
笨笨饿11 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法
FreakStudio13 小时前
无硬件学LVGL:基于Web模拟器+MiroPython速通GUI开发—布局与空间管理篇
python·单片机·嵌入式·面向对象·并行计算·电子diy