基于单片机的智能电风扇控制系统毕业设计

更新时间:2024-05-16 20:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

四川信息职业技术学院毕业设计任务书 学 生 姓 名 彭涛 设计题目 指导教师姓名 张万良 职 称 副教授 学号 1219042 班级 电信 12-1 专业 电子与信息工程技术 基于单片机的智能电风扇控制系统 工作单位及所从事专业 信息学院电子工程系 联系方式 13881201845 学生联系方式 18384574800 设计内容: 1、单片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速。 2、用户可以在一定范围内设置电风扇的最低工作温度和最高工作温度。当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。 3、温度显示在LED数码管上 4、设计硬件电路,并制作实物。 5、撰写毕业设计论文。 进度安排: 要有较为详细的时间安排(时间具体到周); 9.15-9.30(4-5周)确定任务,完成资料收集归纳,确定设计方案。 10.1-10.20(6-8周)完成电路原理图绘制,绘制PCB图,确定元器件的参数型号和数量。 10.21-11.3(9-10周)调试软件,完成系统仿真。 11.4-11.17(11-12周)完成硬件焊接和硬件调试。 11.18-12.1(13-14周)完成软硬件联调测试。 12.2-12.15(15-16周)完成论文写作,准备答辩材料答辩。 主要参考文献、资料(写清楚参考文献名称、作者、出版单位): [1] 曹巧媛.单片机原理及应用.北京:电子工业出版社,2002.2 [2] 王伦.电风扇原理与维修技术[M].北京:新时代出版社,1999 [3] 张毅刚.新编MCS-51单片机应用设计.哈尔滨工业大学出版社,2006,10 [4] 梁廷贵、王裕琛.可控硅触发电路语音电路分册[M].北京:科学技术文献出版社,2003 教研室负责人: 年 月 日 审 批 意 见 备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份

四川信息职业技术学院毕业设计说明书

目 录

摘 要 ................................................................. 1 第1章 概述 ........................................................... 2

1.1 STC89C52单片机简介 ............................................ 2 1.2 本设计任务和主要内容 ........................................... 2 第2章 方案选择 ....................................................... 4

2.1 温度传感器的选用 ............................................... 4 2.2 控制核心的选择 ................................................. 5 2.3 显示电路 ....................................................... 5 2.4 调速方式 ....................................................... 6 2.5 控制执行部件 ................................................... 6 第3章 硬件设计 ....................................................... 7

3.1 系统总体设计 ................................................... 7 3.2 控制装置原理 ................................................... 7 3.3 温度检测和显示电路 ............................................. 8

3.3.1 DS18B20的温度处理方法 ........................................................................................... 8

3.3.2 温度传感器和显示电路组成 ........................................................................................ 9

3.4 电机调速电路 .................................................. 10

3.4.1 电机调速原理 .............................................................................................................. 10 3.4.2 电机控制模块设计 ...................................................................................................... 11

第4章 软件设计 ...................................................... 13 4.1 主程序 ........................................................ 13 4.2 数字温度传感器模块和显示子模块 ................................ 14 4.3 电机调速与控制子模块 .......................................... 15 总 结 ................................................................ 17 附录1 主要程序代码 ................................................... 19 附录2 仿真图 ......................................................... 35 附录3 实物图 ......................................................... 36 附录4 元件清单 ....................................................... 37

I

四川信息职业技术学院毕业设计说明书

摘 要

本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统STC89C52单片机作为控制平台对风扇转速进行控制。可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。所设高低温值保存在温度传感器DS18B20内部E2ROM中,掉电后仍然能保存上次设定值,性能稳定,控制准确。

关键词 单片机;温度传感器;智能控制。

第1页

四川信息职业技术学院毕业设计说明书

第1章 概述

1.1 STC89C52单片机简介

STC89C52是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内4bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置用8位中央处理器(CPU)和Flash存储单元,功能强大。STC89C52单片机可灵活应用于各种控制领域。

STC89C52单片机提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52单片机可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时、计数器,串行通行口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

1.2 本设计任务和主要内容

本文以STC89C52单片机为核心,通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。

本设计主要内容如下:

(1)风速设为从低到高共2个档位,可由用户通过键盘设定。 (2)每当温度低于下限值时,则电风扇风速关闭。

第 2 页

四川信息职业技术学院毕业设计说明书

(3)每当温度在下限和上限之间时,则电风扇转速缓慢。 (4)每当温度高于上限值时,则电风扇风速全速运转。

第 3 页

四川信息职业技术学院毕业设计说明书

/*************读取温度的值 读出来的是小数***************/

uint read_temp() {

uint value; uchar low;

//在读取温度的时候如果中断的太频繁了,就应该把

中断给关了,否则会影响到18b20的时序

init_18b20(); EA = 0;

write_18b20(0xcc); //跳过64位ROM write_18b20(0x44); //启动一次温度转换命令 EA = 1;

delay_uint(50); init_18b20(); EA = 0;

write_18b20(0xcc); //跳过64位ROM write_18b20(0xbe); //发出读取暂存器命令

low = read_18b20(); //读温度低字节 value = read_18b20(); //读温度高字节 EA = 1; value <<= 8; value |= low;

//把温度的高位左移8位

//把读出的温度低位放到value的低八位中

//500us //初始化18b20

//初始化18b20

value *= 0.625; //转换到温度值 小数 return value; }

第 24 页

//返回读出的温度 带小数

四川信息职业技术学院毕业设计说明书

/*************定时器0初始化程序***************/ void time_init() {

EA = 1; //开总中断

TMOD = 0X11; //定时器0、定时器1工作方式1 ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 0; }

/********************独立按键程序*****************/ uchar key_can;

void key() {

static uchar key_new;

key_can = 20; //按键值还原 P2 |= 0x07;

if((P2 & 0x07) != 0x07) {

if(key_500ms == 1) { }

第 25 页

//开定时器0中断 //允许定时器0定时 //开定时器0中断 //允许定时器0定时

//按键值

//独立按键程序

//按键按下

//连加

key_500ms = 0; key_new = 1;

四川信息职业技术学院毕业设计说明书

delay_1ms(1); //按键消抖动

if(((P2 & 0x07) != 0x07) && (key_new == 1)) {

//确认是按键按下

key_new = 0; switch(P2 & 0x07) { case 0x06: key_can = 3; break; case 0x05: key_can = 2; break; case 0x03: key_can = 1; break; }

flag_lj_en = 1; //连加使能

}

}

else { if(key_new == 0) { key_new = 1; write_eeprom(); //保存数据 flag_lj_en = 0;

//关闭连加使能 flag_lj_3_en = 0; //关闭3秒后使能 key_value = 0;

//清零

key_time = 0; key_500ms = 0;

}

}

第 26 页

得到k2键值得到k3键值得到k4键值 // // //

四川信息职业技术学院毕业设计说明书

}

/****************按键处理数码管显示函数***************/

void key_with() {

if(key_can == 1) //设置键 { }

if(menu_1 == 1) { 10

if(t_high > 990)

t_high = 990;

第 27 页

f_pwm_l = 30; menu_1 ++; if(menu_1 >= 3) { }

menu_1 = 0; smg_i = 3;

//数码管显示3位

//设置高温报警

smg_i = 4; //数码管显示4位

if(key_can == 2) {

if(flag_lj_3_en == 0)

t_high ++ ;

//按键按下未松开自动加三次

else

t_high += 10; //按键按下未松开自动加三次之后每次自动加

四川信息职业技术学院毕业设计说明书

10

}

if(key_can == 3) {

if(flag_lj_3_en == 0)

t_high -- ;

//按键按下未松开自动减三次

else

t_high -= 10; //按键按下未松开自动减三次之后每次自动减

}

if(t_high <= t_low)

t_high = t_low + 1;

dis_smg[0] = smg_du[t_high % 10]; //取小数显示 dis_smg[1] = smg_du[t_high / 10 % 10] & 0xdf; //取个位显示 dis_smg[2] = smg_du[t_high / 100 % 10] ; //取十位显示 dis_smg[3] = 0x64;

//H

}

if(menu_1 == 2) { 加10

第 28 页

//设置低温报警

smg_i = 4; //数码管显示4位

if(key_can == 2) {

if(flag_lj_3_en == 0)

t_low ++ ;

//按键按下未松开自动加三次

else

t_low += 10;

//按键按下未松开自动加三次之后每次自动

四川信息职业技术学院毕业设计说明书

加10

}

if(t_low >= t_high)

t_low = t_high - 1;

if(key_can == 3) {

if(flag_lj_3_en == 0)

t_low -- ;

//按键按下未松开自动减三次

else

t_low -= 10;

//按键按下未松开自动加三次之后每次自动

}

if(t_low <= 10)

t_low = 10;

dis_smg[0] = smg_du[t_low % 10]; //取小数显示

dis_smg[1] = smg_du[t_low / 10 % 10] & 0xdf; //取个位显示 dis_smg[2] = smg_du[t_low / 100 % 10] ; dis_smg[3] = 0x3D;

//L

//取十位显示

} }

/****************风扇控制函数***************/ void fengshan_kz() {

// static uchar value; if(temperature >= t_high) {

第 29 页

//风扇全开

四川信息职业技术学院毕业设计说明书

}

TR1 = 1; pwm = 0;

else if((temperature < t_high) && (temperature >= t_low)) //风扇缓慢

{ }

else if(temperature < t_low) {

TR1 = 0; pwm = 1;

//关闭风扇

f_pwm_l = 60; TR1 = 1;

} }

/****************主函数***************/

void main() {

time_init(); //初始化定时器 temperature = read_temp();

//先读出温度的值

init_eeprom(); //开始初始化保存的数据 delay_1ms(650);

//先读出温度的值

temperature = read_temp();

dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示 dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度的个位显示

第 30 页

四川信息职业技术学院毕业设计说明书

dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示

f_pwm_l = 50; while(1) {

//按键程序

key();

if(key_can < 10) { }

if(flag_300ms == 1) //300ms 处理一次温度程序 {

flag_300ms = 0;

temperature = read_temp(); //先读出温度的值 if(menu_1 == 0) {

smg_i = 3; key_with();

//设置报警温度

dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示

dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度

的个位显示

dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示

}

第 31 页

}

}

fengshan_kz(); //风扇控制函数

四川信息职业技术学院毕业设计说明书

}

/*************定时器0中断服务程序***************/

void time0_int() interrupt 1 {

static uchar value; TH0 = 0xf8;

TL0 = 0x30; //2ms display(); value++; if(value >= 150) { }

if(flag_lj_en == 1) //按下按键使能 {

key_time ++;

if(key_time >= 250) //500ms {

key_time = 0;

key_500ms = 1; //500ms key_value ++; if(key_value > 3) {

key_value = 10;

flag_lj_3_en = 1; //3次后1.5秒连加大些

第 32 页

//定时2ms中断一次

//数码管显示函数

value = 0; flag_300ms = 1;

四川信息职业技术学院毕业设计说明书

} }

}

}

/************定时器1用做单片机模拟PWM 调节***********************/

void Timer1() interrupt 3 //调用定时器1 {

static uchar value_l;

TH1=0xfe; // 定时10ms中断一次 TL1=0x0c; //500us if(pwm==1) { } else {

value_l+=3;

if(value_l > 100 - f_pwm_l) {

第 33 页

value_l+=3;

if(value_l > f_pwm_l) //高电平 {

value_l=0;

if(f_pwm_l != 0) }

pwm=0;

//低电平

四川信息职业技术学院毕业设计说明书

} }

}

value_l=0; pwm=1;

第 34 页

四川信息职业技术学院毕业设计说明书

附录2 仿真图

第 35 页

四川信息职业技术学院毕业设计说明书

附录3 实物图

第 36 页

四川信息职业技术学院毕业设计说明书

附录4 元件清单

序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 名称 电阻 电容 晶振 数码管 电源接口 电源开关 单片机 三极管 电容 独立按键 三极管 电阻 规格 10K 10uF 12M DS04 Header2 sw-灰色 U1 8550 20 SW-PB 8550 2K 编号 R14 C1 Y1 DS1 P2 SW1 U1 Q5 C2,C3 S1,S2,S3,S4 Q1,Q2,Q3,Q4 R4,R5,R6,R7,R13,R15 R1,R2,R3,R8,R9,R10,R11,R12 U2 数量 1 1 1 1 1 1 1 1 2 4 4 6 8 1 电阻 1K 温度传感器 18B20 第 37 页

四川信息职业技术学院

毕业设计评语

学生姓名 设计题目 彭涛 学号 1219042 班级 电信12-1 专业 指导教师 电子信息工程技术 张万良 基于MAX1898的手机充电器的设计 指导老师考核意见 等级: 指导教师: 答辩 评语 总评 成绩 备注 等级: 答辩老师: 等级: 考核小组组长: 以上两项成绩综合后,指导老师考核成绩占总分的60%,答辩成绩占总分的40%,按五级记分(优、良、中、及格、不及格)。

本文来源:https://www.bwwdw.com/article/b9l7.html

Top