我的单片机智能温控风扇制作,优点是比较详细(尤其是代码的解释)上传了c文件、hex、还有uvproj和pdsprj的仿真。报告有doc和pdf。
1.完成电路原理图的设计:本设计以STC89C52 单片机作为控制核心,采用高精度温度传感器DS18B20 检测环境温度,把经过ADC 转换模块输出的数字温度信号发送给STC89C52 单片机进行处理,在LCD 显示屏上显示当前环境温度值和用按键预设的每个档位温度值,并采用PWM 脉宽调制方式改变直流风扇电机的转速。系统结构如图 1系统结构所示。
图 1系统结构
2.用Proteus软件画电路原理图,设计相关硬件,并通过Keil编辑C语言程序,并将编译后生成的HEX文件放在所画的硬件电路中仿真。
3.仿真成功后,焊接与调试电路板。
4.安装驱动,将程序烧录至单片机,观察并调试直至达到设计要求。
二、设计要求
1.读取DB18B20温度传感器数据
2.风扇根据温度变化自动调节转速档位:当前温度在小于下限为0档;在上下
限之间为1档,大于上限为2档。
3. 按一次K1进入温度上限设置,K2,K3设置温度的增加或者减少;按两次K1进入温度下限设置,K2,K3设置温度的增加或减少;按三次K1退出设置模式。
4. 1602显示屏显示当前温度、设置温度的上下限,风扇当前档位,进入设置模式后在相应位置用光标显示。
三、设计过程(包括设计仿真图)
STC89C52 单片机最小系统
这张图显示了:单片机最小系统理应有的晶振和复位电路,这芯片里有ROM和RAM,所以也不加入片外的数据存储器和程序存储器了。
本实验要用的三个按钮资源接在了P3.5,P3.6,P3.7口,同时连接时线与接在单片机外部中断口INT0之上,这里我用了触发中断,原因就是硬件可以自动清零,而且电平中断的硬件设置还是比较麻烦的。(此处灵感来自于单片机原理与应用及C51程序设计第三版清华大学出版社的例题7.9)
电机 P3.3口处,可以看到标签为motorDC;温度传感器P3.4,可以看见DSPORT标签。
LCD的数据口是P1,可以看见我用总线连接,自动标好了D7-D0,对应了LCD的8根数据线。P2.5,P2.6,P2.7对应了LCD的RS,RW,E这三个端口。
程序主函数大致意义如下:
外部中断0初始化
液晶初始化
循环以下:
小灯显示
液晶显示
风扇转动
读取温度
读取按钮
计算挡位
中断程序:
按钮设置
小灯显示
1.LED0
LED0用来显示按钮1也就是设置按钮按了几下:
void led(){
if(flag0) LED0=0;
if(flag1) LED0=1;
if(flag==2) {LED0=1;delay(250);LED0=0;delay(250);LED0=1;}}
flag
意义
0
默认是0,按钮没按,或者已经按了3下,小灯泡不亮
1
按了一下设置按钮,小灯泡亮,意味进入了上限温度调整状态
2
按了两下设置按钮,小灯泡闪烁,意味进入了下限温度调整状态
2.LED1
void int0() interrupt 0 {
LED1=0;
keySet();<