图5 数码管显示电路
4.2.3温度采集、控制模式设定以及复位电路
电路如图6所示,这一部分主要是由DS18B20,四个按键。
温度采集电路主要是由DS18B20构成,它可以把采集的温度数据转化成二进制数,经过单片机处理后输出送数码管显示。
图6温度采集、控制模式设定以及复位电路
开关设定主要是通过按键K1来设定的。模式转换键由K2来完成,可以实现温度控制风速和手动设定风速的功能。手动设定风扇档位由K3、K4来完成,按一下K3键可以实现档位增一,而按下K4键可以实现档位减一。
4.2.4 电机驱动电路
驱动模块主要采用驱动芯片ULN2803,PWM脉冲信息通过I\\O口P3^4输出,然后经过ULN2803时由1B—7B输入至7C输出以驱动电机转动。
电路如图7 电机驱动电路
4.2.5开关、模式指示灯电路
分别通过P1^0—P1^2作为开关、两个模式指示灯,按下开关键K1时,开关指示灯亮,表
明DS18B20一开始工作,此时后三位显示相应温度;若此时按下模式一键K2,转为到温度控制风速功能,当达到相应温度范围,电机转速作相应改变;若按下模式二键K3,转为手动控制风速,此时可以分别按K3或者K4键,以控制档位。
图8 开关、模式指示灯电路
本系统的总电原理图为:
图9 总电原理图
5 软件设计
程序实现的功能是按下开关键是,只有DS18B20工作,并在四位数码管中的三位显示实时温度,精确度为小数点后一位。
按下模式模式转换键K2时,开始运行温度自动控制风速功能,小于25度时电机不转,25度至27度时为一档,27至30度时为二档,30度至32度时为三档,32度以上时为四档。温度和档位对应的电机转速可以根据具体情况再作调整。
温度显示由display_temp()子程序来完成。
要实现根据当前温度实时的控制风扇的状态,需要在程序中不时的判断当前温度值是否超过设定的动作温度值范围,此部分功能由比较控制子程序DEAL(TEMP)来完成。由于单片机的工作频率高达12MHz,在执行程序时不断将当前温度和设定动作温度进行比较判断,当超过设定温度值范围时及时的转去执行相应子程序,控制电机转速。显示驱动程序以查七段码取得各数码管应显数字,逐位扫描显示。
而手动设置功能通过KEY()以及QUDONG()两个子程序来实现,先由KEY()程序来检测按下键位,转而检测到NUM记录的按键次数,次数又与相应档位对应,由档位控制QUDONG()程序,改变PWM占空比,控制电机转速。
6 安装调试
将本电路用硬件做出来,用编程器将KEIL软件对源程序编译生成的.HEX文件烧入AT89C52单片机,将单片机插入到目标板中,连好线。
将“控制模式”开关选择在“温控”,打开电源,风扇工作在3档,数码管正常显示当前的温度31.6摄氏度,第四位数码管闪烁显示档位“3”,表示当前温度在30和32值之间,没有欠温或超温。按手动设置键及“加”“减”键,档位能够相应作出变化,在1至4档之间自由转换,PWM占空比也相应发生变化,电机转速改变。测试结果表明,本系统实现了预期功能。
附录1 程序流程图 主程序流程图
初始化 检测DS18B20 Y 温度转换命令 读温度 BCD码温度 显示温度 等待模式转 K2 进入温控模式 温度处理函数 根据温度驱动电机 开关 K3 检测加减档位键根据档位调整电机风速 进入手动模式
图11 主程序流程图

