毕业设计 真实案例分享 基于51单片机的红外遥控自动风扇设计

系列文章目录

第一题 基于单片机的超声波测距器设计
第二题 基于51单片机的自动浇花器设计
第三题 基于51单片机的红外遥控自动风扇设计
第四题 基于STM32的条形码识别器



0 前言

🔥近几年随着人工智能等新技术的不断火热,带动了嵌入式等的传统行业的进一步发展。最近带过的几届同学反馈:以往的毕设题目缺乏创新性和亮点,不能满足学校的答辩要求。为了方便毕业生们顺利、省心、高效的通过毕设,这里分享一些真实优质的毕业设计。

今天给大家分享一个比较经典且有一定创新力的题目

🚩基于51单片机的红外遥控自动风扇设计

🥇首先对这道题目给出一个量化的评价(每项满分5⭐):

  • 难度:⭐⭐⭐⭐
  • 工作量:⭐⭐⭐
  • 创新性:⭐⭐⭐⭐

1 题目

在这里插入图片描述
我们分析一下题目要求,提取如下功能点:
1、支持红外遥控,控制风扇的启停、加减速;
2、可以设定运行时间,选择风型;
3、上述功能可以在全自动和手动间切换;
4、可根据环境温度,自动调解风扇转速(自动模式下)。

2 方案设计

2.1 方案框图

分析题目功能点,结合以往的开发经验,初步构思整体方案,形成整体方案框图
请添加图片描述

2.2 器件选型

根据市售器件,进一步确定所用器件的具体型号:
单片机最小系统:主控为51系列单片机及外围电路(复位电路、晶振电路、供电电路),型号ST89C52;
红外收发模块:采用NEC协议的红外光通信模块,负责接受遥控器发来的信号,并交由主控解析,型号HX1838;
温度传感器模块:采用串行单总线协议的温度传感器,负责采集环境温度,主控读取数据并解析,并根据温度调节风力大小,型号DS18B20;
实时时钟模块:采用厂商自定协议的时钟芯片,维持一套独立运行的时钟源,主控读取时钟数据,用于定时功能,型号DS1302;
LED指示灯:用于显示工作模式及风力,用于人机交互;
控制按键:系统调试或无遥控情况下的控制;
电机驱动模块:采用LM298N电机驱动模块,接受主控信号,并控制风扇电机的转动。
风扇部分供电采用220V交流转9V(或12V)直流电源适配器,使用LM2596S降压稳压模块进一步将电源降至5V,为控制系统供电。

2.3 小结-设计要点、难点解析

1、红外遥控的NEC协议的驱动、解析;
2、温度传感器单总线协议的解析,环境温度与风力的关系(在不同温度下,使用多大风力是适宜的);
3、时钟芯片的驱动与数据读取,定时功能的逻辑设计;
3、操作逻辑设定,具备良好的人机交互体验;
4、系统软件的控制流程设计,具备高效、高鲁棒性的架构。

3 硬件设计

使用 Altium Designer 软件进行硬件原理图和PCB绘制
原理图
PCB图

4 软件设计

使用 Keil-C51建立工程

工程文件树
工程文件树

主程序源码局部展示:

void main(void)
{
    /*  初始化       */
    uchar cycle_cnt = 0;
    Sys_Mode    = LED_MODE_OFF;
    Fan_Level   = LED_LEVEL_0;
    Time_Frame_Cnt = LED_TIME_0;
    
    LED_mode_flush(Sys_Mode);
    LED_level_flush(Fan_Level);
    LED_time_flush(Time_Frame_Cnt);
    init_ds1302();
    Time_Convert();
    Set_RTC();
    //UART_init();
    EX0init(); //初始化外部中断
    TIM0init();//初始化定时器

    get_ds18b20_level();        /* 将初始不稳定的温度值get出来 */

    /*  主循环       */
    while(1)
    {
        if(irok)                        //如果接收好了进行红外处理
        {   
            Ircordpro();
            irok=0;
        }
        if(irpro_ok)                   //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
        {
            Ir_work();
        }

        #if 0
        /* 仅调试使用 */
        Time_Convert();
        sendByte(hour);
        sendByte(minute);
        sendByte(second);
        Cur_Temptr = get_ds18b20_level();
        sendByte(Cur_Temptr%10 + 0x30);
        main_delayms(500);
        #endif

        Key_Scan();

        /* 自动模式 */
        if (LED_MODE_AUTO == Sys_Mode)
        {
            Key_Scan();
            if (30 <= cycle_cnt)
            {   
                cycle_cnt = 0;
            }

            if (0 == cycle_cnt)
            {
                Fan_Level = get_ds18b20_level();
            }
            speed_level_conctrl(Fan_Level);
            LED_level_flush(Fan_Level);
            /* 若开启了定时功能 */
            if (LED_TIME_0 != Time_Frame_Cnt && 0 == cycle_cnt)
            {
                
                remain_time_judge();
            }
                
        }
        /* 手动模式 */


        cycle_cnt++;
    }
}

5 实现效果

实物展示

6 PCB工程及源代码

想获取工程文件及源码、相关问题、其他毕设题目解答,欢迎私信。
或关注微信公众号“电子设计万事屋”

总结

提示:这里对文章进行总结:

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于51单片机红外遥控直流电机的设计框图,主要包括红外接收模块、51单片机、直流电机以及相关电路组成。其具体作用为通过红外遥控信号接收模块,将信号传送到51单片机,通过程序控制直流电机的转动方向和速度。以下是该设计框图的详细论证: 1. 红外接收模块:作为本设计的输入信号源,红外遥控信号通过红外接收模块被接收,并转换成电信号。该模块由红外接收器、滤波电路和解码电路组成,能够有效地抵御外部电磁干扰,提高信号的可靠性。 2. 51单片机:作为本设计的核心控制器,51单片机接收到红外遥控信号后,通过程序控制直流电机的转动方向和速度。该单片机具有存储器、计数器、定时器、串行通信接口等多种功能,可以实现对直流电机的高精度控制。 3. 直流电机:作为本设计的输出设备,直流电机接收到51单片机输出的控制信号后,能够实现方向控制和速度控制。直流电机具有体积小、功率大、转速可调等特点,是现代控制系统中常用的电动机类型。 4. 相关电路:为了保证系统的稳定性和可靠性,本设计还包括了电源电路、信号放大电路、电机驱动电路等。这些电路能够有效地保护系统免受电源波动、信号干扰等不良因素的影响,提高了系统的工作效率和可靠性。 综上所述,基于51单片机红外遥控直流电机的设计框图,具有实现高精度、高效率、稳定可靠的控制功能,是现代控制系统中常用的设计方案之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值