您的位置:首页 > 游戏 > 手游 > 电影宣传类网页界面设计_单页面网站设计_新闻头条 今天_网络seo优化

电影宣传类网页界面设计_单页面网站设计_新闻头条 今天_网络seo优化

2025/4/25 13:07:37 来源:https://blog.csdn.net/weixin_52247452/article/details/147310667  浏览:    关键词:电影宣传类网页界面设计_单页面网站设计_新闻头条 今天_网络seo优化
电影宣传类网页界面设计_单页面网站设计_新闻头条 今天_网络seo优化

一、项目简介

        使用STM32F103C8T6、舵机、继电器、加热片、蜂鸣器、两个按键、LCD及DHT11传感器等硬件。进一步,结合FreeRTOS和状态机等软件实现了一个微波炉系统;实现的功能包含:人机交互、时间及功率设置、异常情况处理及固件升级等。

二、功能需求

     (一)、初始状态
        1、当STM32初始化后,LCD显示LCD屏幕显示欢迎界面(例如“Microwave Demo V1.1”),持续2秒后进入待机模式;
        2、LED状态:腔体内部LED灯常亮(模拟门未关闭时的照明);
        3、舵机状态:SG90舵机处于“开门”位置(角度0°,门锁未闭合)。
    (二)、用户操作流程
        1、用户手动关闭门,第一次按下按键KEY1关门,舵机旋转90°代表关闭,此时LED灯灭;
        2、LCD显示默认时间和加热功率挡位:倒计时为0s;功率挡位为Medium;
        3、用户短按KEY2开始设置倒计时,此时LCD打印“time setting”,然后通过再次短按
        KEY2循环切换倒计时打印在LCD屏幕上,短按一次加20s,最大为60s;设置好时间后长按              KEY2切换功率设置,此时LCD打印“Power setting”,然后通过短按KEY2循环切换加热挡位           打印在LCD屏上(low/medium/high可选择),之后继续长按KEY2,又切换到“time setting”。
        4、选择好时间及挡位后启动加热:
            (1)长按KEY1启动加热,此时PWM开始控制加热片;
            (2)转盘(用360°sg90舵机模拟)以恒定速度旋转;
            (3)蜂鸣器短鸣两声“滴滴”代表开始运行;
            (4)倒计时启动打印在LCD上;
            (5)用DHT11实时显示温度在LCD上;
            (6)LCD显示状态“Heating”表示正在加热。
        5、加热完成
            (1)倒计时归零,PTC加热片断电;
            (2)转盘停止旋转;
            (3)蜂鸣器短鸣三声“滴滴滴”代表结束;
            (4)打印时间及温度在LCD上;
            (5)打印“completed”状态在LCD上。
        6、当第5步加热完成之后,门自动打开,此时LED灯亮;LCD显示默认时间设置及挡位设置。
    (三)、异常情况处理流程
        1、加热过程中断情况:
            (1)当加热过程中,用户按下KEY1开门,此时加热片断电,转盘停止,LED灯亮起;
            (2)倒计时暂停在LCD屏上,并且显示“Heating stopped!”;
        2、恢复加热:
            (1)用户按下KEY1关闭门,LED灯熄灭,需再次长按KEY1才能启动加热操作并且继续倒计时。
        3、温度过高:
            (1)DHT11监测温度超过设定阈值,此时加热片断电,转盘停止,LED灯亮起,门自动打开;
            (2)蜂鸣器短鸣四声“滴滴滴滴”;
            (3)LCD打印“Heating stopped!”。
        4、门未关闭时启动:
            (1)蜂鸣器短鸣一声,加热片和转盘不工作;
            (2)LCD屏打印“Close door first”。
    (四)、固件更新功能
        (1)通过串口加DMA接收APP升级程序;
        (2)编写Bootloader任务,将APP程序从RAM写到Flash上;
        (3)设置SP及PC寄存器,重定向中断向量表;
        (4)跳转到APP程序执行。

三、软件架构

四、硬件接线图

五、硬件设计

1、180°舵机驱动

        舵机的控制通常要求约20ms的参考脉冲,其高电平区间通常为0.5-2.5毫秒,其总间距为2ms。而1.5ms转90度,因此也就是需要百分之五的占空比转90度,其舵机转动角度与脉冲宽度关系如图所示:

2、360°舵机驱动

        

        其他硬件比较简单,不再过多叙述。

六、软件设计

        设计亮点如下:

        (1)使用面向对象思想编写BSP,方便移植以及维护,使用户仅关心接口而无需在意底层实现细节。

        (2)使用状态机来实现两个按键的多功能切换需求。

        (3)移植FreeRTOS源码并进行内核裁剪以适应STM32F103C8T6单片机。

        (4)使用二值信号量完成多任务之间同步与通信。

        (5)使用串口加DMA接收APP程序,减轻CPU负担。

        (6)编写Bootloader任务,跳转到APP程序后实现固件升级。

        (7)编写按键检测算法来识别长按/短按。

七、源代码

        以下仅展示内核裁剪的程序,完整源程序请查看笔者其他帖子进行获取

八、调试记录

   1、程序下载进去时发生HardFault,调试一看是进入定时器中断了,说明TIM_Cmd(TIM2,DISABLE)函数不能关闭中断,仅能将定时器的计数器关闭,只能关闭中断自动触发功能,但未完全关闭中断,需要调用TIM_ITConfig(TIM2,TIM_IT_Update,DISABLE)函数才能完全关闭掉。重新启用时也需要再次调用该函数打开中断。
    2、当倒计时归零正常结束烹饪时,此时门会自动弹开,但是如果你现在再次短按KEY1,不会发生关门响应,这是因为没有对门状态复位。
    3、由于我使用了TIM2的中断以及两路PWM,但是我设置TIM2中断频率与TIM2的PWM频率不一致,这导致PWM无法工作,造成冲突;因此,将TIM2中断换成TIM4中断,问题解决!
 

九、实物演示

IAP

基于FreeRTOS的微波炉

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com