本系统的软件设计主要使用以下工具:
- Keil5:用于编写和编译程序代码。
- STC-ISP:用于将编译好的程序下载到单片机中。
- Proteus:用于将编译好的程序进行仿真调试。
- 安装 Keil5:确保安装的是 Keil5 C51 版本,因为这是专门为 51 单片机设计的开发环境。
- 安装 STC-ISP:该软件用于将编译后的程序下载到单片机中。
- 其他工具(可选):如有道词典和福昕阅读器等辅助工具。
系统的软件设计可以分为以下几个步骤:
- 系统初始化:上电后执行 main 函数,进行必要的初始化操作,包括 I/O 端口、定时器、中断和显示模块的初始化。
- 主循环设计:主循环采用
switch
语句,根据不同的运行状态(如自动模式、手动模式、自然风模式)执行相应的功能模块。 - 中断服务程序:使用定时器 0、定时器 1 和外部中断 0 来处理不同的任务,如计时、红外信号捕捉和温度测量。
主程序模块包含三种模式:
- 自动模式:根据温度传感器采集的温度值自动调节风扇转速。
- 手动模式:通过按键或红外遥控手动调节风扇转速。
- 自然风模式:模拟自然风的变化,使风扇转速随机变化。
中断服务程序包含三个中断:
- 定时器 0 中断:每 50 ms 触发一次,用于直流电机的占空比来调节转速。
- 定时器 1 中断:用于测量红外遥控信号的低电平持续时间,记录有效的数据。
- 外部中断 0:用于捕捉红外遥控信号的下降沿,启动定时器 1。
系统的中断资源使用了定时器 0 中断、定时器 1 中断、外部中断 0。定时器 0 中断每 50 ms 触发一次,根据当前温度,当计时位累计达到一定值时将更新一次电机占空比。外部中断 0 用于捕捉红外遥控信号的下降沿,并打开定时器 1 计算红外遥控信号的低电平持续时间,如果检测到有效的引导码,则开始记录接下来的低电平时长数据存储在 irdata[]
中。
包含了以下模块:
- 温度采集模块:使用 DS18B20 温度传感器采集当前温度,并与设定值进行比较。
- 显示模块:使用 LCD1602 显示当前温度、风扇档位和工作模式。
- 按键和红外遥控模块:用于手动控制风扇和切换工作模式。
- 电机控制模块:使用 PWM 信号调节风扇转速。