基于51单片机的智能温控电扇设计(5)

2019-06-11 00:22

_nop_(); //等待一个机器周期

dq=0;

//将数据线从高拉低时即启动写时序

//利用与运算取出要写的某位二进制数据,并将其送到数据

dq=date&0x01;

线上等待DS18B20采样

}

4.3.2 温度处理程序

温度处理程序将上一把操作中读取的温度值进行转换,将二进制数转化为十进制数,然后输出数字,直接交给显示程序显示。

其流程图16所示:

输出十进制整数 图16 温度处理子程序流程图

}

date>>=1; delayus(4); dq=1;

//4us //释放数据线

delayus(4); //稍作延时,给硬件一点反应时间

初始化 等待初始化完成 启动温度测量 等待转化完成 读取高八位和低八位 处理数据 其子程序如下:

//**************做好读温度的准备**************

uint read_temp() {

17

uint g,d,m; uint c; m=1;

m=clean_ds18b20(); //初始化完成m=0 while(m);

//等待初始化完成 write_ds18b20_date(0xcc); //跳过rom write_ds18b20_date(0x44);

//启动温度测量

delayus(100); m=clean_ds18b20(); while(m);

//等待转化完成 write_ds18b20_date(0xcc); //跳过rom write_ds18b20_date(0xbe); //读数据命令 d=read_ds18b20_date();

//读低8位数据

g=read_ds18b20_date();

//读高3位数据

g<<=4; g=g+(d>>4);

//整数部分

g=g*100;

d=(d&0x0f)*0.0625*100;

c=g+d; return c;

}

4.4 键盘扫描子程序

本设计配备两个输入按键,分别可以对设定温度进行加减,此子程序用来检测按键输入。流程图17所示: 扫描按键 判断是否按下 延时判断是否按下 设定温度加一(减一)

图17 键盘扫描流程图

18

子程序如下:

//****************键盘输入********************

void keyscan(void) { }

if(key1==0) { }

if(key2==0)

//延时判断key2是否按下

//判断key2是否按下

//延时判断key1是否按下

//判断key1是否按下

delay(10); if(key1==0) { }

set++;

//设定温度加1

if(key1==100) set=18;

while(!key1);

{ }

delay(10); if(key2==0) { }

set--; if(set==0) set=18;

//设定温度减1

while(!key2);

4.5 温度比较处理子程序

温控风扇设定5个档位,根据温度的变化来变化风扇的转速。输出的型式采用高地电平的交替变换,档位越高,输出高电平的次数越多,相应的输出低点平的次数变少,反之,档位越低,输出的高电平次数越少,相应的输出的高电平的次数变多。低于设定温度时,风扇不转,大于最大挡位时满负荷运转。

流程如图18所示:

19

读取温度 是 温度比较 低于设定温度 风扇不转 否 低于设定温度+1 是 设置为1档 否 低于设定温度+3 是 设置为2档 否 低于设定温度+5 是 设置为3档 否 低于设定温度+7 是设置为4档 否

高于设定温度+7 是 设置为5档 图18 温度比较处理流程图

子程序如下:

//*************温度处理函数****************

void deal(uint temp) //温度处理

{ if(temp<=set) { //温度低于设置值

h=0; l=5;

}

else if((temp>set)&&(temp<=(set+1))) //温度低于设定值+1

{ h=1; l=4;

}

else if((temp>(set+1))&&(temp<=(set+3)))

//温度高于设定值+1,小于设定值+3

20

}

{ }

else if((temp>(set+3))&&(temp<=(set+5))) { }

else if((temp>(set+5))&&(temp<=(set+7))) { }

else if(temp>(set+7)) { h=5; l=0; }

//温度高于设定值+7

h=4; l=1;

//温度值高于设定值+5,小于设定值+7

h=3; l=2;

//温度高于设定值+3,小于设定值+5

h=2; l=3;

4.6 电机控制程序(包含红外探测)

本设计最终驱动电机的子程序,包含了红外检测。首先进行红外检测判断,若没有人,电机不转,若有人,承接上函数设定的档位,模拟PWM波输出,一次输出5个电平,1档就输出一个高电平,四个低电平,2档输出两个高电平,三个低电平,依次类推。

流程图如图19所示:

电机输输出模拟PWM波 模拟PWM高低电平次数 红外探测是否有人 电机不转 开始 图19 红外探测电机输出流程图

21


基于51单片机的智能温控电扇设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:毕业设计~师元胜

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: