资源描述
滨州学院本科毕业设计(论文) I 毕 业 设 计 ( 论 文 ) 题 目 电风扇控制模拟与实现 设计 系 (院) 物理与电子科学系 专 业 电子信息科学与技术 班 级 2008 级 2 班 学生姓名 学 号 2008080230 指导教师 职 称 滨州学院本科毕业设计(论文) II 风扇模拟控制实现 摘 要 本设计是以一个电风扇为控制对象,以 AT89C51 单片机为控制系 统核心,通过单片机系统设计实现对电风扇温度的显示和控制功能。 利用 DS18B20 对室内温度的探测并用 LCD1602 适时显示当前温度值, 同时实现电风扇的模拟控制实现,设置三个按键分别来控制选择自然 风、常风、和睡眠风以及定时器来实现定时关机,并有相应的指示灯 指示选择的档位。LCD1602 显示定时关机时间。利用 PWM 脉冲宽度 调制实现对电机的调速,在此选用内置集成 H 桥电路的芯片 L298N, 用来搭建电机的驱动电路。此外本设计还采用了一种智能调速模式, 程序中设置温度区间,根据室温属于不同的温度区间对应不同的转速, 实现自动调速功能,给人们的日常生活带来了便利。此设计设置了三 个模式:常规模式、定时模式、智能自动调速模式,可根据不同的需 要选择适合的模式。 关键词:AT89C51;LCD1602;DS18B2 0;PWM 脉冲调制 滨州学院本科毕业设计(论文) III Fan analog control system Abstract The design is based on an electric fan for the control object to AT89C51 microcontroller for the control of the core of the system, SCM system designed and implemented on the fan temperature display and control functions. DS18B20 indoor temperature detection and display the current temperature value LCD1602 timely, while fans of analog control, set of three buttons to control the selection of natural wind, constant wind, and sleep wind and timer for timed shutdown, and corresponding LED indicates the selected gear. LCD1602 display the sleep timer. PWM pulse width modulation motor speed, in this selection of built-in integrated H-bridge circuit chip L298N, used to build the motor drive circuit. This design also uses an intelligent speed control mode, set the temperature interval in the program, belonging to a different temperature range corresponds to a different speed according to temperature, automatic speed control function, has brought convenience to peoples daily lives. This design has set three modes: normal mode, timer mode, the intelligent automatic speed control mode, select the appropriate mode according to different needs. Keywords: AT89C51; LCD1602; DS18B20; PWM pulse modulation 滨州学院本科毕业设计(论文) i 目 录 引 言 .1 第一章 电风扇控制系统的概述 .2 1.1 发展趋势 .2 1.2 总体设计概述 .2 第二章 硬件电路模块的介绍 .3 2.1 AT89C51 单片机简介 .3 2.2 复位电路 .5 2.3 DS18B20 温度传感器功能介绍 .5 2.4 1602 液晶显示器简介 .7 2.5 电机驱动电路介绍 .7 2.6 PWM 调速原理: .9 2.7 风扇电机驱动与调速电路 .9 2.8 设计整体电路介绍 .10 2.9 本章小结 .11 第三章 软件的介绍 .12 3.1 程序设置 .12 3.2 用 Keil C51 编写程序 .15 3.3 用 PROTEUS 仿真 .15 3.4 选择正常模式时仿真效果 .16 3.4.1 开机时的风速 .16 3.4.2 常风 .17 3.4.3 自然风 .18 3.4.4 睡眠风 .19 3.5 定时关机模式仿真 .19 3.6 智能模式选择 .21 3.6.1 虚拟档位低 .21 3.6.2 虚拟档位中 .21 3.6.3 虚拟档位高 .22 3.7 本章小结 .23 第四章 系统的调试 .24 4.1 电动机调速电路部分调试 .24 4.2. 传感器 DS18B20 温度采集部分调试 .24 4.3. LCD1602 显示电路部分调试 .24 4.4. 本章小结 .24 结论 .26 参考文献 .27 滨州学院本科毕业设计(论文) ii 谢 辞 .28 附录 .28 滨州学院本科毕业设计(论文) 1 引 言 传统的电风扇在炎热的夏天给人带来了一丝清凉,电风扇的产生代替了手中摇 扇,让夏天变得不再那么难熬。传统的电风扇可以实现手动调速,根据个人对温度 天气不同的承受力,选择不同的档位,得到舒适的凉风,同时也可以缓解一下烦躁 的心情,方便了人们的日常生活。但是传统的电风扇在当今社会虽然能够基本的满 足人们的需要,但随着空调的出现和日益精进的自动化水平,越来越无法满足人们 对节约能源和方便自动化的需求,于是一种新的电风扇应运而生,结合传统的手动 调速,再加上以单片机为控制核心的智能温控系统出现了。 随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应 运而生,如基于单片机的温控风扇系统。它使风扇根据环境温度的变化实现自动启 停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为 现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率 的同时还能节省风扇运转所需的能量。 在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的 散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智 能 CPU 风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省 能源等,温控风扇越来越受到重视并被广泛的应用。在现阶段,温控风扇的设计已 经有了一定的成效,可以使风扇根据环境温度的变化进行自动无级调速,当温度升 高到一定时能自动启动风扇,当温度降到一定时能自动停止风扇的转动,实现智能 控制 1。 滨州学院本科毕业设计(论文) 2 第一章 电风扇控制系统的概述 1.1 发展趋势 机械风扇起源于 1830 年,一个叫詹姆斯拜伦的美国人从钟表的结构中受到 启发,发明了一种可以固定在天花板上,用发条驱动的机械风扇。这种风扇转动扇 叶带来的徐徐凉风使人感到凉爽,但得爬上梯子去上发条,很麻烦。 1872 年,一个叫约瑟夫的法国人又研制出一种靠发条涡轮启动,用齿轮链条 装置传动的机械风扇,这个风扇比拜伦发明的机械风扇精致多了,使用也方便一些。 1880 年,美国人舒乐首次将叶片直接装在电动机上,再接上电源,叶片飞速 转动,阵阵凉风扑面而来,就是世界上第一台电风扇。 目前,电风扇行业改变最大的要数功能的技术创新及应用。近年来,随着空调 业的价格水平不断下降,其风头早已超过了风扇,但空调的强大制冷效果以及高耗 电量、且封闭空间的弊端,使得传统的借助空气流动降低热量但通风效果和功耗低 的风扇仍然存在很大的市场。部分风扇企业考虑到两者之间的差异性,就在现有的 功能上借鉴并创造设计出了一些更具人性化和个性化的功能,形成了空调、风扇两 者互补的局面,使两者相得益彰,共同发展,透过当今千姿百态的电风扇市场,我 们可以预言:今后的电风扇一定会继续吹着创新设计风和人性功能风。 1.2 总体设计概述 本文设计了由 ATMEL 公司的 8051 系列单片机 AT89C51 作为控制器,采用 DALLAS 公司的温度传感器 DS18B20 作为温度采集元件,并通过内部集成 H 桥芯片 L288N 驱动风扇电机的转动。同时使系统检测到得环境温度以及系统预设的温度动 态的显示在 LCD 液晶显示屏上。根据系统检测到得环境温度与系统预设温度的比较, 实现风扇电机的自动启停以及转速的自动调节。此外可以实现对电风扇一般的档位 控制,实现电风扇的启动停止控制和档位选择,以及转速的调节。此设计有两种模 式提供选择:一是正常模式,可以模拟自然风、睡眠风、常风三种风种;二是智能 模式,根据室内温度自动调节风扇转速,从而可以实现智能化控制。两种模式的融 合也是本设计的创新点。 滨州学院本科毕业设计(论文) 3 第二章 硬件电路模块的介绍 2.1 AT89C51 单片机简介 AT89C51 是 51 系列单片机的一个型号,它是由 ATMEL 公司生产的一个低电压、 高性能的 8 位单片机,片内器件采用 ATMEL 公司的非易失性、高密度存储技术生产, 与标准的 MCS-51 指令系统兼容,同时片内置有通用 8 位中央处理器和 8k 字节的 可反复擦写的只读程序存储器 ROM 以及 256 字节的数据存储器 RAM,在许多许多较 复杂的控制系统中 AT89C51 单片机得到了广泛的应用: VCC:+5V 电源线;GND:接地线。 P0 口:P0.7P0.0,这组引脚共 8 条,其中 P0.7 为最高位,P0.0 为最低位。这 8 条引脚共有两种不同的功能,分别使用于两种不同的情况。第一种情况是单片机 不带片外存储器,P0 口可以作为通用 I/O 口使用, P0.7P0.0 用于传送 CPU 的输入 /输出数据,此时它需外接一上拉电阻才能正常工作。第二种情况是单片机带片外 存储器,其各引脚在 CPU 访问片外存储器时先是用于传送片外存储器的低 8 位地 址,然后传送 CPU 对片外存储器的读写数据 2。 P1 口:P1 口是一个内部含上拉电阻的 8 位双向 I/O 口。它也可作为通用的 I/O 口使用,与 P0 口一样用于传送用户的输入输出数据,所不同的是它片内含上拉电 阻而 P0 口没有,故 P0 口在做该用途时需外接上拉电阻而 P1 口则无需。在 FLASH 编程和校验时,P1 口用于输入片内 EPROM 的低 8 位地址。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,它可以作为通用 I/O 口 使用,传送用户的输入/输出数据,同时可与 P0 口的第二功能配合,用于输出片外 存储器的高 8 位地址,共同选中片外存储单元。在一些型号的单片机中,P2 口还 可以配合 P1 口传送片内 EPROM 的 12 位地址中的高 4 位地址。 P3 口:P3 口引脚是 8 个带内部上拉电阻的双向 I/O 口,当 P3 口写入 1 后,它 们被内部上拉为高电平。它也可作为通用的 I/O 口使用,传送用户的输入输出数据, P3 口也作为一些特殊功能端口使用,如图 2.1 所示: P3.0:RXD (串行数据接收口) 。 P3.1:TXD(串行数据发送口) 。 P3.2: (外部中断 0 输入) 。 0INT 滨州学院本科毕业设计(论文) 4 P3.3: (外部中断 1 输入) 。1INT P3.4:T0 (记数器 0 计数输入) 。 P3.5:T1 (记时器 1 外部输入) 。 P3.6: (外部 RAM 写选通信号) 。WR P3.7: D(外部 RAM 读选通信号) 。 图 2.1 AT89C51 单片机 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平 状态。 ALE/PROG:地址锁存允许/编程线,当访问片外存储器时,在 P0.7P0.0 引 脚线上输出片外存储器低 8 位地址的同时还在 ALE/PROG线上输出一个高电位脉 冲,其下降沿用于把这个片外存储器低 8 位地址锁存到外部专用地址锁存器,以便 空出 P0.7P0.0 引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储 器时,单片机自动在 ALE/PR线上输出频率为 1/6 晶振频率的脉冲序列。PSEN :外部程序存储器 ROM 的选通信号。在由外部程序存储器取指期间,每个机 器周期两次 有效。但在访问外部数据存储器时,这两次有效的 PSEN信号将 不出现。 A /VPP:允许访问片外存储器/编程电源线,当 EA保持低电平时,则在此期 间允许使用片外程序存储器,不管是否有内部程序存储器。当 端保持高电平时, 则允许使用片内程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源 (VPP) 。 XTAL1 和 XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调 电容,即用来连接单片机片内 OSC 的定时反馈回路。 滨州学院本科毕业设计(论文) 5 单片机晶振电路及其复位电路的搭建如图 2.2 所示: 在单片机应用系统中,除单片机本身需要复位以外,外部扩展 I/O 接口电路也 需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上 的 XTAL1 和 XTAL2 用来外接石英晶体和微调电容,即用来连接单片机片内 OSC 的定 时反馈回路。本设计中开关复位与晶振电路如下图所示,当按下按键开关 S1 时, 系统复位一次。其中电容 C1、C2 为 20pF,C3 为 10uF,电阻 R2、R3 为 10k,晶振 为 12MHz。 2.2 复位电路 当 MCS-5l 系列单片机的复位引脚 RST(全称 RESET)出现 2 个机器周期以上的高 电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处于循环复位 状态。 根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。 上电复位要求接通电源后,自动实现复位操作, 上电或开关复位要求电源接通后, 单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位 3。 图 2.2 单片机复位电路和晶振启振电路 2.3 DS18B20 温度传感器功能介绍 DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的 CAPK*1振Y0GNDRVWM 滨州学院本科毕业设计(论文) 6 温度报警触发器 TH 和 TL、配置寄存器。DS18B20 的外形及管脚排列如下图 2.3:R14.7K23DQS8B0VCGN 图 2.3 DS18B20 连接电路 DS18B20 引脚定义: (1)DQ 为数字信号输入 /输出端; (2)GND 为电源地; (3)VDD 为外接供电电源输入端(在寄生电源接线方式时接地) ; DS18B20 的读写时序和测温原理 4与 DS1820 相同,只是得到的温度值的位数 因分辨率不同而不同,且温度转换时的延时时间由 2s 减为 750ms。 DS18B20 测温 原理如图 3 所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定 频率的脉冲信号送给计数器 1。高温度系数晶振随温度变化其振荡率明显改变,所 产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存器被预置在55所对 应的一个基数值。计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当计 数器 1 的预置值减到 0 时,温度寄存器的值将加 1,计数器 1 的预置将重新被装入, 计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数 器 2 计数到 0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温 度。DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可 电擦除的 EEPRAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器 5。 本设计利用 DS18B20 温度传感器实时采集室内温度,并在 LCD1602 显示屏显示 当前温度,给人以直观的感觉,并可根据当前温度来确定所需选择的风扇档位;而 且 DS18B20 的温度采集对智能模式的实现提供了前提,当智能模式按键被按下时, 滨州学院本科毕业设计(论文) 7 风扇会根据提前设定的温度区间来进行自动调速。 2.4 1602 液晶显示器简介 图 2.4 1602 采用标准的 16 脚接口 LCD1602 引脚功能如图 2.4 所示: 第 1 脚:VSS 为电源地 。 第 2 脚:VCC 接 5V 电源正极。 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源 时对比度最高(对比度过高时会产生“鬼影”使用时可以通过一个 10K 的电位器调 整对比度)。 第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指 令寄存器。 第 5 脚:RW 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操 作。 第 6 脚:E(或 EN)端为使能(enable)端。 第 714 脚:D0D7 为 8 位双向数据端。 第 1516 脚:空脚或背灯电源。15 脚背光正极,16 脚背光负极。 LCD1602 有微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和 低功耗应用系统中。 滨州学院本科毕业设计(论文) 8 2.5 电机驱动电路介绍 L298N 的恒压恒流桥式 2A 驱动芯片 L298N 说明及应用如图 2.5 所示: 图 2.5 L298N 标准引脚接口 L298 是 SGS 公司的产品,比较常见的是 15 脚 Multiwatt 封装的 L298N,内部 同样包含 4 通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电 机。L298N 芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高 可达 50V,可以直接通过电源来调节输出电压;可以直接用单片机的 IO 口提供信 号;而且电路简单,使用比较方便。L298N 可接受标准 TTL 逻辑电平信号 VSS,V SS 可接 457 V 电压。4 脚 VS 接电源电压,VS 电压范围 VIH 为2546 V。输 出电流可达 25 A,可驱动电感性负载。1 脚和 15 脚下管的发射极分别单独引出 以便接入电流采样电阻,形成电流传感信号。L298 可驱动 2 个电动机, OUT1,OUT2 和 OUT3,OUT4 之间可分别接电动机,本实验装置我们选用驱动一台电 动机。5,7,10,12 脚接输入控制电平,控制电机的正反转。EnA,EnB 接控制使 能端,控制电机的停转。具体控制方式如表 2.1 所示: 电 机 旋转方式 控制端 IN1 控制端 IN2 控制端 IN3 控制端 IN4 输入 PWM 信号改变脉 宽可调速 滨州学院本科毕业设计(论文) 9 调速端 A 调速端 B 正转 高 低 / / 高 / 反转 低 高 / / 高 /M1 停止 低 低 / / 高 / 正转 / / 高 低 / 高 反转 / / 低 高 / 高M2 停止 低 低 / / / 高 表 2.1 2.6 PWM 调速原理: 脉冲宽度调制(PWM )是英文 “Pulse Width Modulation”的缩写,简称脉宽调 制 6。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术, 广泛应用于测量,通信,功率控制与变换等许多领域。一种模拟控制方式,根据相 应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶 体管 或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒 定。 1、设置提供调制方波的片上定时器/计数器的周期 ; 2、 在 PWM 控制寄存器中设置接通时间; 3、设置 PWM 输出的方向,这个输出是一个通用 I/O 管脚 ; 4、启动定时器 ; 5、使能 PWM 控制器; PWM 的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转 换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑 1 改变为逻辑 0 或将逻辑 0 改变为逻辑 1 时,也才能对数字信号产生影响。 对噪声抵抗能力的增强是 PWM 相对于模拟控制的另外一个优点,而且这也是在某些 时候将 PWM 用于通信的主要原因。从模拟信号转向 PWM 可以极大地延长通信距离。 在接收端,通过适当的 RC 或 LC 网络可以滤除调制高频方波并将信号还原为模拟形 式。 滨州学院本科毕业设计(论文) 10 2.7 风扇电机驱动与调速电路 本设计中由单片机的 I/O 口输出 PWM 脉冲,通过内置 H 桥电路的 L298N 驱动 12V 直流无刷风扇电机以及实现风扇电机速度的调节 7。 键盘控制电机相应的转速,按键为 K1、 K2 、K3,分别对应占空比为 60%、 80%、30%。通过软件向单片机输入相应控制指令,由单片机通过 P1.2 口输出与转 速相应的 PWM 脉冲,经过 L298N 驱动风扇直流电机控制电路,实现电机转速控 制。 电路如图 2.6 所示,L298N 的 IN1 INI2 分别接在单片机引脚的 P1.0 和 P1.1,通 过单片机软件编程控制电机旋转的方向,本设计中 IN1 为高电平,IN2 为低电平, 电机顺时针转动。L298N 中 ENA 接入由单片机送出的 PWM 脉冲调制信号,软件 编程控制 P1.2 口输出脉冲的占空比而控制风扇电机的转速。 GROUND9VC10ST2345IEAB678Lnv+.uFapZMPW 图 2.6 电机驱动电路 系统选用的风扇电机为 12V 直流无刷电机,单片机上电后定时器触发会产生 占空比为 50%的方波信号。同时 DS18B20 显示室内的温度,当 K1 键被按下后,占 空比会变成 60%定义为常风,这时风扇转速明显加快。当 K2 被按下后,占空比变为 80%,定义为自然风,风速有所加快。当 K3 被按下时,占空比变为 30%,风速下降, 此风速适合睡眠。本文的设计是利用 AT89C51 单片机的定时计数器每隔 100us 产生 一次定时器中断,计数器达到 100 后自动清零,此时发出脉冲的周期是 10ms。 2.8 设计整体电路介绍 滨州学院本科毕业设计(论文) 11 本电路由六大模块电路组成:1602 液晶显示电路、DS18B20 温度检测电路、 L298N 电机驱动电路、单片机晶振和复位电路、按键调速电路和定时选择电路以及 指示灯显示电路。 整体电路原理图如图 2.7 所示: 图 2.7 整体电路设计 在此重点介绍一下按键调速电路和定时选择电路以及指示灯显示电路。K1 、K2 、K3 是档位选择按键。K1 对应常风,K2 对应自然风,K3 对应睡眠风。 K4、K5、K6 分别对应定时一小时关机、定时半小时关机、跳出定时关机模式,当 然定时时间可随时改动,并以秒为单位倒计时的形式在 LCD1602 显示屏上显示。 K7 是模式选择按键,电风扇开机默认选择常规模式,当 K7 被按下时选择智能模式, 按下 K8 时跳出智能模式进入常规模式,同时不同颜色的指示灯也会相应的点亮, 从而指示选择的档位和模式。 2.9 本章小结 本章节主要介绍了各个模块电路的设计及其设计原理。硬件电路主要包括: LCD1602 显示电路、DS18B20 温度检测电路、复位晶振电路、按键调速电路、电机 驱动电路和指示灯。核心模块就是 L298N 电机驱动电路和 DS18B20 温度检测电路。 滨州学院本科毕业设计(论文) 12 第三章 软件的介绍 3.1 程序设置 程序设计部分主要包括主程序、DS18B20 初始化函数、DS18B20 温度转换函 数、温度读取函数、键盘扫描函数、LCD 显示函数、温度处理函数以及风扇电机控 制函数、定时关机函数。DS18B20 初始化函数完成对 DS18B20 的初始化; DS18B20 温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温 度传感器数据的读取及数据换算,键盘扫描函数则根据需要完成电风扇风速档位的 选择;温度处理函数对采集到的温度进行分析处理,为电机转速的变化提供条件; 风扇电机控制函数则根据个人的需要完成对 PWM 占空比的选择,从而控制电风扇的 转速及启停。为了更加贴近实际,加入了定时关机函数,以便睡觉时用于定时关机, 节约用电。 三种模式分别如图 3.1、3.2、3.3 所示: 滨州学院本科毕业设计(论文) 13 开始 初始化 18B20 1602 液晶 定 时器 计数器 K7 被按 下 室温实时检测 选择智能模式 Y N 40T Y N 虚拟高档 30T40 虚拟中档 N Y 虚拟低档 K4 按下 定时关机开启 Y N 常规模式 常规显示 图 3.1 智能模式 滨州学院本科毕业设计(论文) 14 图 3.2 常规模式 图 3.3 定时模式 常规模式 K1 按下 常风 Y N 自然风 K2 按下 Y N K4 按下 常风 液晶显示 定时模式 K5 按下 定时 1h Y N Y N 定时 0.5h 倒计时显示 K6 按下 Y Y 常规模式 常规显示 滨州学院本科毕业设计(论文) 15 3.2 用 Keil C51 编写程序 Keil C51 是美国 Keil Software 公司开发的 51 系列兼容单片机 C 语言的软件开 发系统,与单片机汇编语言相比,C 语言在不仅语句简单灵活,而且编写的函数模 块可移植性强,因而易学易用,效率高。随 着 单 片 机 开 发 技 术 的 不 断 发 展 , 从 普 遍 使 用 汇 编 语 言 到 逐 渐 使 用 高 级 语 言 开 发 , 单 片 机 的 开 发 软 件 也 在 不 断 发 展 , Keil 软 件 是 目 前 使 用 较 多 的 MCS-51 系 列 单 片 机 开 发 的 软 件 。 Keil C51 软 件 不 仅 提 供 了 丰 富 的 库 函 数 , 而 且 它 强 大 的 集 成 开 发 调 试 工 具 为 程 序 编 辑 调 试 带 来 便 利 , 在 开 发 大 型 软 件 时 更 能 体 现 高 级 语 言 的 优 势 。 在 使 用 时 要 先 建 立 一 个 工 程 , 然 后 添 加 文 件 并 编 写 程 序 , 编 写 好 后 再 编 辑 调 试 8。 图 3.2 Keil 编程截图 3.3 用 PROTEUS 仿真 Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件(该软 件中国总代理为广州风标电子技术有限公司) 。它不仅具有其它 EDA 工具软件的仿 滨州学院本科毕业设计(论文) 16 真功能,还能仿真单片机及外围器件 9。它是目前最好的仿真单片机及外围器件的 工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、 致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的 EDA 工具 (仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软 件、PCB 设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持 8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和 MSP430 等, 2010 年又增加了 Cortex 和 DSP 系列处理器,并持续增加其他系列处理器模型。在 编译方面,它也支持 IAR、Keil 和 MPLAB 等多种编译器。 首先启动 Proteus 软件并建立一工程,然后根据原理图调出相应的原件,再根 据要求改变各原件的属性并把各个原件按原理图连接起来 10。在原理图绘制连接 好后再把编译好的程序加载到其中。最后根据系统要实现的功能分步进行仿真 11。 3.4 选择正常模式时仿真效果 3.4.1 开机时的风速 把温度传感器 DS18B20 温度设置为 36 摄氏度,K1、K2 、K3 都不按下,即默 认开机时占空比为 50%。点击开始按钮,系统开始仿真,待一段时间稳定后,观察 到此时风扇直流电机的转速,如图 3.3、3.4 所示: 滨州学院本科毕业设计(论文) 17 图 3.3 用 proteus 仿真结果图 图 3.4 其中电机转速显示为 156r/s 当风扇达到稳定后此时电机显示的转速为 156r/s,DS18B20 设置的温度为 36 摄氏度,LCD1602 显示的温度也为 36C,模拟显示了室内的温度。经过反复测定 系统稳定后风扇转速在 143159r/s 之间。这是开机时的转速。 3.4.2 常风 当 K1 被按下时如图 3.5: 滨州学院本科毕业设计(论文) 18 图 3.5 k1 被按下绿灯亮电机加速 图 3.6 转速为 177r/s 绿 灯 亮 , 同 时 明 显 感 觉 电 动 机 转 速 加 快 , PWM 设 置 的 占 空 比 为 60%。 此 时 电 机 显 示 的 转 速 为 177r/s。 经 反 复 测 定 系 统 稳 定 后 电 机 转 速 在 175183r/s 之 间 。 此 时 对 应 我 们 所 设 置 的 常 风 。 3.4.3 自然风 按 下 K2 键 时 , 电 机 显 示 的 转 速 为 223/s 此 时 对 应 风 扇 为 自 然 风 , 此 时 程 序 设 置 输 出 的 占 空 比 为 80%。 如图 3.7: 滨州学院本科毕业设计(论文) 19 图 3.7 电机显示转速 223r/s 同 时 蓝 色 指 示 灯 点 亮 , 经 测 定 风 扇 转 速 在 220243r/s 区 间 内 , 此 档 位 风 速 最 强 劲 , 对 应 自 然 风 的 档 位 。 3.4.4 睡眠风 当 K3 键 被 按 下 时 , 红 色 指 示 灯 亮 , 电 机 减 速 , 与 睡 眠 风 相 对 应 。 如 图 3.8 所 示 : 图 3.8 电机显示转速 123r/s 当系统稳定时,经测定睡眠风档位时电风扇转速在 110126r/s 之间。这种风 速比较适合夏天时晚上睡眠使用。 滨州学院本科毕业设计(论文) 20 3.5 定时关机模式仿真 当 k4 被按下时,启动定时 60min 关机功能,同时 LCD1602 显示 power off time:字符串,然后实行以秒为单位的倒计时显示。当显示为 0000 时切断 PWM 脉 冲,电机经过缓冲逐渐停止转动。如下图 3.9 所示: 图 3.9 液晶显示定时关机时间 当 k5 被按下时,定时 30min 自动关机,电机停止转动。当 k6 被按下时,是从 定时关机模式跳转到正常模式。其中在开启定时关机时风扇的转速不会收到任何影 响。PWM 脉冲是由 T0 定时器设定产生的,而定时关机是由 T1 定时器设定的。二者 互不影响。 为了演示方便,把程序改为定时 10s 关机,如下图 3.10 所示: 滨州学院本科毕业设计(论文) 21 图 3.10 电机逐渐停止转动 缓冲几秒后,电机完全停止转动,实现了定时关机的功能。以上设计完成了电 风扇模拟控制实现的全部功能。 3.6 智能模式选择 本设计在完成传统电风扇的基础上增加了智能控制模式 12,此模式也是本设 计的创新点所在。通过实时对室温的采集,反馈到单片机中,经过软件编程设置三 个温度区间,对应三个虚拟档位,通过 PWM 脉冲调节其占空比,从而实现电风扇的 调速。硬件、调速原理和传统风扇大同小异,主要是在软件编程上下功夫。 把温度划分为三个区间 2030、3140、40 摄氏度以上,对应三个不同的虚 拟档位低、中、快三档。根据室内温度处于不同的温度区间,实现自动调节转速的 功能 14。再加一个跳转按键,可以随时跳出智能模式,转到常规模式。 3.6.1 虚拟档位低 当温度在 2030 之间时,定义为虚拟档位低。电机显示的转速为 162r/s,DS18B20 显示温度为 26 摄氏度。如下图 3.11 所示: 滨州学院本科毕业设计(论文) 22 图 3.11 电机显示转速 162r/s 经测定系统稳定后,转速在 156163r/s 之 间 。 黄 色 指 示 灯 显 示 智 能 自 动 调 节 模 式 。 3.6.2 虚拟档位中 当温度在 30 到 40 之间时,电机转速显示为 175r/s。系统稳定后电机转速显 示为 175192r/s。 如 下 图 3.12 所 示 : 图 3.12 电机显示转速 175r/s 滨州学院本科毕业设计(论文) 23 3.6.3 虚拟档位高 当温度跳到 40 摄氏度以上时,风扇通过自动调节时转速保持在 236245r/s 之间。因为 40 摄氏度使人们感觉非常燥热,所以电风扇全速转动。如下图 3.13 所 示: 图 3.13 电机显示转速 236r/s 当温度跳到 40 摄氏度以上时,风扇通过自动调节时转速保持在 236245r/s 之间。因为 40 摄氏度使人们感觉非常燥热,所以电风扇全速转动。 当跳转键 K8 被按下时,跳出智能模式,回到常规模式,这时可以继续选择档 位,进行手动调速,进行定时关机。 3.7 本章小结 本章节主要是程序设计的介绍及其控制方法的实现和仿真结果的演示。其中最 重要的是程序编写部分,电风扇控制的各种功能是通过对单片机编程实现的,其中 程序中包含温度检测函数、液晶显示函数 PWM 调速函数、自动调速函数、定时器 中断函数、键盘扫描函数。其中的 PWM 调速是基于 AT89C51 单片机 T0 定时器产生 的方波脉冲,在通过中断服务函数的设定产生占空比可调的脉冲信号作为电机驱动 滨州学院本科毕业设计(论文) 24 信号。而定时关机功能是利用单片机 T1 定时器产生方波脉冲,每隔 50ms 产生一次 中断,准确无误的实现定时功能。并实时的显示在液晶显示屏上。对应不同的功能 分别进行了仿真演示,效果一目了然。 第四章 系统的调试 4.1 电动机调速电路部分调试 系统本部分的设计中重在软件设计,因为外围的驱动电路只是将送来的 PWM 信号放大从而驱动电机转动。系统软件设置在 P1.2 口输出使电机转动的 PWM 占 空比,根据不同的室温合理的选择电风扇的档位,若此时用高于环境温度的热源靠 近测温芯片 DS18B20 时,温度传感器会将检测的信号反馈到单片机中经过温度转 换显示在 LCD1602 液晶显示屏上;系统采用的直流电机为 12V 的额定电压,而该 驱动电路在采用单片机电源时的输出电压最高不过 5V,因此在调试过程中只采用 了原有的 5V 直流电机来调试,且得到了可观的控制效果。 滨州学院本科毕业设计(论文) 25 4.2. 传感器 DS18B20 温度采集部分调试 将 DS18B20 芯片接在系统板对应的 P3.3 口,通过插针在对应系统板的右下侧 三口即为对应的 VCC、P3.3 和 GND,可将芯片直接插在该插针上,因此即为方便。 系统调试中为验证 DS18B20 是否能在系统板上工作,将手心靠拢或者捏住芯片, 即可发现 LCD 显示的温度也迅速升高,验证了 DS18B20 能在系统板上工作。由于 DS18B20 为 3 个引脚,因此在调试过程中因注意其各个引脚的对应位置,以免将 其接反而是芯片不能工作甚至烧毁芯片 4。 4.3. LCD1602 显示电路部分调试 刚开始液晶显示时,显示屏一直闪烁。刚开始是认为延时时间太短,重新设定 延时函数时,发现还是在闪烁,进一步分析发现主函数一直在调用液晶初始化函数。 所以一直在闪烁,改正后显示良好。在定时关机电路中,液晶显示时间不对,经过 排查是因为在程序上 time 是用 unsigned char 定义的,无标记的字符型最多支持 计数为 255。定时 60min(3600s)超量程,故无法显示,后来改为整型 int 问题 得到解决。 4.4. 本章小结 本系统能够实现单片机系统检测环境温度的变化,并实时的显示出来。通过单 片机定时器 T0 发出占空比可调的 PWM 方波脉冲 15,从而控制风扇直流电机转速的 变化的控制信号,从而产生不同的转动速度,根据键盘调节不同的设置档位,再由 定时器产生的方波脉冲,通过 PWM 脉冲宽度调制来控制电机。系统不但能动态的显 示当前温度,而且还可以通过定时器来设定定时关机的时间,更好的节约电能源。 此外智能自动调节模式的应用更方便的进行温度调节。 滨州学院本科毕业设计(论文) 26 结论 系统总体上由六部分来组成,既按键与复位电路、LCD 显示电路、温度检测电 路、电机驱动电路、定时关机按键电路和模式选择按键。首先考虑的是温度检测电 路,检测室内温度,后通过单片机控制 LCD1602 显示当前室内温度 16。第二是电 机驱动电路,该部分需要使用外围电路将单片机输出的 PWM 信号转化为平均电压 输出,根据不同的 PWM 波形得到不同的平均电压,从而控制电机的转速,电路的设 计中采用了集成 H 桥驱动芯片 L298N,实现较好的控制效果;第三是 LCD1602 显示 模块,该部分的功能实现对环境温度显示和倒计时关机的显示,其中按键实现不同 设置档位的调整,实现了对环境温度及时连续显示,并可以通过人工模式选择风的 滨州学院本科毕业设计(论文) 27 类型。第四是定时关机电路本设计中只设了两个定时关机时间 60min 和 30min。以 后根据需要可以实现更久更准确的定时关机。智能模式更是在建立在温度检测电路 18的基础之上,灵活的根据室温的变化进行风速调节。 系统功能不足分析 由于单片机直接接 L298N,而 L298N 可同时控制两台直流电机和步进电机,感 觉有些未完全使用其功能。没有设置电风扇摇头功能,本设计中电风扇只能在一个 方向转动。 系统功能优点及创新点分析 本系统充分利用了 AT89C51 单片机的定时器中断功能,通过合理的电路设计 实时的检测室内温度,并将其显示出来。利用 PWM 脉冲宽度调制进行电风扇的三 级调速 17,而且增加了更加人性化的定时关机功能和智能调速功能。 参考文献 1 李学龙.使用单片机控制的智能遥控电风扇控制器J.电子电路制作,2003,9:1315. 2 郭天祥.新概念 51 单片机 C 语言教程M.北京:电子工业出版社.2009.3234 3 李钢,赵彦峰.1-Wire 总线数字温度传感器 DSI8B20 原理及应用J.现代电子 2005,28(21): 7779. 4 马云峰.单片机与数字温度传感器 DS18B20 的接口设计J.计算机测量与控制,2007,10(4): 278280. 5 蓝厚荣.单片机的 PWM 控制技术J.工业控制计算机.2010,23(3):9798 滨州学院本科毕业设计(论文) 28 6 王会明,侯加林.智能电风扇控制器的研制J.电子与自动化,1998,5(4):2526. 7 谭浩强.C 程序设计M(第三版).北京:清华大学出版社.2005.3765. 8 孙号. Proteus 软件在设计电子电路中的应用J.仪表技术,2009,8:7475 9 王文海,周欢喜.用 Proteus 实现 51 单片机的动态仿真调试J.IT 技术,2006,20:1011 10 丁建军,陈定方,周国柱. 基于 AT89C51 的智能电风扇控制系统J.湖北工学院学报, 2003,18(2):6063. 11 王会明,侯加林. 智能电风扇控制器的研制J. 电子与自动化,1998,5(4):2526. 12 刘进山. 基于 MCS-51 电风扇智能调速器的设计J. 广州:电子质量,2004,10(10):71. 13 YU Qihao,CHENG Guodong,NIU Fujun. The application of auto-temperature- controlled ventilation embankment in Qinghai-Tibet Railway J. Science in China SerD Earth Sciences,2004,1(47):168176. 14 YLai, Y,Wang. Threedimensional nonlinear analysis for temperature characteristic of ventilated embankment in permafrost regions J. Cold Regions Science and Technology,2004,38(2):165184. 15 Cheng Guodong. Linearity engineering in permafrost areas J. Journal of Glaciology and Geocryology(in Chinese),2001,23(3):213217. 16 B SchneierApplied Crytography:Algorithms,and Source Code in CJNew York:Jone Wiley sbit EN=P22; sbit RW=P21; /RW=1 写 / sbit RS=P20; sbit PWM= P12; sbit IN1= P10; sbit IN2= P11; sbit K1=P14; sbit K2=P15; sbit K3=P17; sbit LED1=P23; sbit LED2=P24; sbit LED3=P25; sbit LED4=P30; sbit k4=P26; sbit k5=P27; sbit k6=P13; 滨州学院本科毕业设计(论文) 2 sbit k7=P36; /auto model sbit k8=P37; uint time=3600,qian,bai,shi,ge; uchar temp,i,j; uchar count,count1; uchar ZKB=50; uchar read_byte(); void write_byte(uchar dat); uchar read_temp(); uchar tab0= temperature; uchar tab1=0123456789; uchar tab2=Hello Its fine; uchar tab3=Power off !; uchar tab4=time :; uchar tab5=Auto model :; void delay(uint x) while(x-); void delay_50ms(uint z) uint x; for(;z0;z-) for(x=6245;x0;x-); void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-); void init_time() TMOD=0X11; TH0=(65536-100)/256; TL0=(65536-100)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; TR0=1; EA=1; ET0=1; void init_18b20() uchar n; DQ=1; delay(8); DQ=0; delay(80); DQ=1; delay(8); n=DQ; delay(4) ; 滨州学院本科毕业设计(论文) 30 uchar read_byte( ) /读一个字节 uchar i; uchar dat; for (i=8;i0;i-) DQ = 0; dat=1; DQ = 1; if(DQ) dat|=0 x80; delay(4); return (dat); void write_byte(uchar dat) uint i; for(i=0;i=1; delay(4); uchar read_temp( ) uchar a,b; init_18b20(); write_byte(0 xcc); write_byte(0 x44); delay(300); init_18b20(); write_byte(0 xcc); write_byte(0 xbe); a=read_byte(); b=read_byte(); b4; return b; void lcd_wcmd(uchar cmd) RS = 0; RW = 0; EN = 0; delay_50us(10); P0 = cmd; delay_50us(10); EN = 1; delay_50us(20); EN = 0; void lcd_wdat(uchar dat) RS = 1; RW = 0; EN = 0; P0 = dat; delay_50us(10); EN = 1; delay_50us(10); EN = 0; void lcd_init() delay_50us(300); lcd_wcmd(0 x38); delay_50us(100); lcd_wcmd(0 x0c); delay_50us(10); lcd_wcmd(0 x06); delay_50us(10); lcd_wcmd(0 x01); delay_50us(10); void display() 滨州学院本科毕业设计(论文) 31 int i,j; lcd_wcmd(0 x80); for(i=0;i12;i+) lcd_wdat(tab0i); delay_50us(10); lcd_wcmd(0 x80+0 x0d); lcd_wdat(tab1temp/10); delay_50us(10); lcd_wcmd(0 x80+0 x0e); lcd_wdat(tab1temp%10); lcd_wcmd(0 x80+0 x0f); lcd_wdat(C); lcd_wcmd(0 x80+0 x40); for(j=0;j16;j+) lcd_wdat(tab2j); delay_50us(10); void display2() int i,j; lcd_wcmd(0 x80); for(i=0;i12;i+) lcd_wdat(tab5i); delay_50us(10); lcd_wcmd(0 x80+0 x0d); lcd_wdat(tab1temp/10); delay_50us(10); lcd_wcmd(0 x80+0 x0e); lcd_wdat(tab1temp%10); lcd_wcmd(0 x80+0 x0f); lcd_wdat(C); lcd_wcmd(0 x80+0 x40); for(j=0;j16;j+) lcd_wdat(tab2j); delay_50us(10); void power_off() if(count1=20) count1=0; time-; if(time=0) ET0=0; ET1=0; void display1() lcd_wcmd(0 x80); for(i=0;i10;i+) lcd_wdat(tab3i); delay_50us(10); lcd_wcmd(0 x80+0 x40); for(i=0;i5;i+) lcd_wdat(tab4i); del
展开阅读全文