2024-09-01
售卖作品
00

目录

微波炉控制系统设计实验报告
一、实验目的
二、实验器件与材料
三、硬件连接
四、系统设计原理
1. 按键检测与处理
2. 温度检测与显示
3. 定时器中断
4. 加热控制
五、程序设计
1. 主程序设计
2. 按键处理
3. 温度检测与显示
4. 定时器中断
六、调试与结果
七、总结
资源代码

课程设计题三十六: 微波炉控制系统设计

设计内容:

1、可设置三种最高温度值,如低温(20°),中温(30°),高温(50°);(20分)

2、可设置最长10分钟定时;(20分)

3、用DS18B20感知温度,当温度达到设置温度值,并持续设定时间长度时,蜂鸣器报警提示,LED灯闪烁,同时时间归零

在这里插入图片描述

在这里插入图片描述

微波炉控制系统设计实验报告

一、实验目的

设计并实现一个基于单片机的微波炉控制系统,该系统应具备以下功能:

  1. 可设置三种温度档位:低温(20°C)、中温(30°C)、高温(50°C)。

  2. 可设置最长10分钟的定时功能。

  3. 使用DS18B20温度传感器检测温度,当温度达到设置值并持续设定时间时,蜂鸣器报警提示,LED灯闪烁,定时器归零。

二、实验器件与材料

  1. STC89C52单片机

  2. DS18B20温度传感器

  3. LCD1602显示屏

  4. 按键模块

  5. 继电器

  6. 蜂鸣器

  7. LED灯

  8. 电源及相关连接线

三、硬件连接

  1. DS18B20温度传感器:数据引脚连接到单片机的P3.7引脚。

  2. LCD1602显示屏:数据引脚D4-D7分别连接到P2.4-P2.7,控制引脚RS、RW、E分别连接到P2.2、P2.1、P2.0。

  3. 按键模块:四个按键分别连接到单片机的P1.0、P1.1、P1.2、P1.3引脚。

  4. 继电器:控制引脚连接到单片机的P1.5引脚。

  5. 蜂鸣器:控制引脚连接到单片机的P1.6引脚。

  6. LED灯:控制引脚连接到单片机的P1.7引脚。

四、系统设计原理

1. 按键检测与处理

系统通过扫描按键模块来实现温度和时间的设置。当按键按下时,调用KeySscan函数进行按键检测并返回按键值,根据按键值实现相应功能:

  • 按键1:切换温度档位。

  • 按键2:增加定时时间。

  • 按键3:减少定时时间。

  • 按键4:启动加热并开始定时。

2. 温度检测与显示

使用DS18B20传感器获取当前温度,通过Get18B20Temp函数读取温度值并分离出整数和小数部分,显示在LCD1602上。系统每秒更新一次温度显示。

3. 定时器中断

定时器1用于生成1秒中断,通过T1_time中断服务程序实现1秒定时,更新定时标志位flag1s,控制倒计时和LED闪烁。

4. 加热控制

当定时器到达设定时间或温度达到设定值时,停止加热,打开蜂鸣器报警,并让LED闪烁提示。

五、程序设计

1. 主程序设计

主程序通过初始化各外设,进入无限循环,根据标志位和按键值执行相应操作,显示当前温度和剩余时间。

c
void main() { // 初始化 LCD_init(); Start18B20(); // 定时器配置 TMOD = 0x10; TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256; EA = 1; ET1 = 1; TR1 = 1; // 初始显示设置温度和时间 update_display(); while (1) { // 检查温度和时间 check_temp_and_time(); // 按键处理 handle_keypress(); // 更新显示 update_display(); } }

2. 按键处理

c
unsigned char KeySscan(void) { if (key_01 == 0) { delay_ms_key(10); if (key_01 == 0) { while (key_01 == 0); return 1; }} if (key_02 == 0) { delay_ms_key(10); if (key_02 == 0) { while (key_02 == 0); return 2; }} if (key_03 == 0) { delay_ms_key(10); if (key_03 == 0) { while (key_03 == 0); return 3; }} if (key_04 == 0) { delay_ms_key(10); if (key_04 == 0) { while (key_04 == 0); return 4; }} return 0; }

3. 温度检测与显示

c
void update_temp_display() { int temp; if (Get18B20Temp(&temp)) { int intT = temp >> 4; int decT = temp & 0xF; sprintf(dis_str, "NOW: %02d.%01dC", intT, decT); LCD_write_str(0, 1, dis_str); } Start18B20(); // 重新启动下一次转换 }

4. 定时器中断

c
void T1_time() interrupt 3 { TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256; num2++; if (num2 == 20) { num2 = 0; flag1s = 1; if (ifg_led == 1) { LED = !LED; // LED闪烁 } if (START == 1 && rtc_sec > 0) { rtc_sec--; // 倒计时 } } }

六、调试与结果

通过对系统进行多次调试,验证各项功能均实现预期效果:

  1. 按键可正确设置温度档位和时间。

  2. 温度传感器实时检测温度,并正确显示在LCD1602上。

  3. 到达设定时间或温度后,蜂鸣器报警提示,LED灯闪烁。

七、总结

本次实验设计了一个基于单片机的微波炉控制系统,掌握了单片机与各种外设的接口技术以及温度检测与控制的实现方法。该系统功能齐全,具有良好的用户体验,可作为家庭微波炉的控制核心。

通过本次实验,进一步深化了对单片机系统设计的理解,为后续的嵌入式系统开发打下了坚实基础。

资源代码

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!