迪文科技论坛

 找回密码
 立即注册
搜索
查看: 13|回复: 0

【分享】22级曾沂璀 红外智能烤火炉

[复制链接]

2

主题

0

回帖

33

积分

新手上路

Rank: 1

积分
33
发表于 前天 23:18 | 显示全部楼层 |阅读模式

             一、作品介绍
        (GUI界面参考迪文官方示例)
      基于迪文屏EKT043E屏幕的C51内核单片机的开发,配合HC-SR312人体感应模块,实现红外智能烤火炉。当检测到有人在室内时,自动打开烤火炉和自动关闭烤火炉,当然也可以手动打开与关闭。
              

二、工作原理
      1.系统初始化:
           在系统启动时,调用 sys_cpu_init() 函数初始化核心寄存器,设置中断、时钟等参数,并关闭看门狗定时器,确保系统处于已知状态。通过 sys_timer2_init() 初始化定时器2,设置定时间隔为1毫秒,以便进行精确的时间管理。最后,调用 sys_init() 完成基本配置。
      2.延时函数:
           系统提供了多种延时函数,其中 sys_delay_about_ms() 和 sys_delay_about_us() 使用循环实现大致延时,而 sys_delay_ms() 则利用定时器2实现精确延时,使用全局变量 delay_tick 进行计数。
      3.数据读写:
           sys_read_vp() 和 sys_write_vp() 函数用于从指定地址读取数据到缓冲区或将缓冲区数据写入指定地址。写入方式根据地址的奇偶性决定。
      4.定时器中断:
           sys_timer2_isr() 是定时器2的中断服务程序,每当定时器溢出时调用。它清除中断标志并减少 delay_tick 的值,以实现精确的时间计数。
      5.IO引脚初始化与主循环:
           在 io_init() 函数中,初始化IO引脚,将一些引脚配置为输出(如LED),将p20引脚配置为输入。在 main() 主循环中,程序每隔1毫秒增加 cnt_1ms 计数器,当计数器达到500时,切换LED的状态,实现LED每500毫秒闪烁。同时,监测按键状态的变化,并将状态写入指定的变量地址(0x1100)。
      6.人体感应模块:
           HC-SR312模块检测到人体存在时,会触发中断,自动打开烤火炉和自动关闭烤火炉。

三、设计思路

       1.硬件部分:输入/输出引脚配置:使用sbit定义关键信号引脚,确保能够通过简单的位操作控制这些外设。通过设置 PORTDRIV 和P2MDOUT &来配置引脚的电流驱动能力。针对输入和输出引脚进行明确设置,确保输入引脚(如KEY1)能够正确读取按键状态,引脚输出(如LED和SPK)能够有效操作外设。
           

        2.软件部分:(GUI界面参考迪文官方示例)
            设计室内开启烤火炉界面,点击中间按钮,可开启与关闭烤火炉。
            

           并且可手动调节室内温度,右边有温度设定按钮,上键为增加,下键为减少。
演示视频:[url=https://b23.tv/5sH1lcV]https://b23.tv/5sH1lcV[/url]


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-12-4 16:29 , Processed in 0.067670 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表