1、陕西理工学院本科毕业论文(设计)题目:基于单片机的温控风扇的设计学 院: 专 业:电子信息科学与技术班 级: 学 号: 学生姓名: 指导教师: 年 月 陕西理工学院目 录 I摘 要 IIIAbstractIV第一章 整体方案设计 11.1 前 言 11.2 系统整体设计 11.3 方案论证 21.3.1 温度传感器的选择 21.3.2 控制核心的选择 31.3.3 温度显示器件的选择 31.3.4 调速方式的选择 3第二章 各单元模块的硬件设计 52.1 系统器件简介 52.1.1 DS18B20 单线数字温度传感器简介 52.1.2 达林顿反向驱动器 ULN2803 简介 52.1.3 AT
2、89C52 单片机简介 62.1.4 LED 数码管简介 72.2 各部分电路设计 82.2.1 开关复位与晶振电路 92.2.2 独立键盘连接电路 92.2.3 数码管显示电路 102.2.4 温度采集电路 112.2.5 风扇电机驱动与调速电路 12第三章 软件设计 143.1 程序设置 143.2 用 Keil C51 编写程序 143.3 用 Proteus 进行仿真 153.3.1 Proteus 简介 153.3.2 本设计基于 Proteus 的仿真 16第四章 系统调试 214.1 软件调试 214.1.1 按键显示部分的调试 214.1.2 传感器 DS18B20 温度采集部
3、分调试 214.1.3 电动机调速电路部分调试 214.2 硬件调试 224.2.1 按键显示部分的调试 224.2.2 传感器 DS18B20 温度采集部分调试 224.2.3 电动机调速电路部分调试 224.3 系统功能 234.3.1 系统实现的功能 234.3.2 系统功能分析 23结 论 24参考文献 25第 3 页 3致 谢 26附录 1:电路总图 27附录 2:程序代码 28第 I 页 I基于单片机的温控风扇的设计姓名: 学号:学校: 指导教师:摘 要温控风扇在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产中大型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智
4、能 CPU 风扇等。本文设计了基于单片机的温控风扇系统,采用单片机作为控制器,利用温度传感器DS18B20 作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803 驱动风扇电机。根据检测到的温度与系统设定的温度的比较实现风扇电机的自动启动和停止,并能根温度的变化自动改变风扇电机的转速,同时用 LED 八段数码管显示检测到的温度与设定的温度。关键词:单片机、DS18B20、温控、风扇第 1 页 1第一章 整体方案设计1.1 前 言在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CP
5、U 风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的应用。在现阶段,温控风扇的设计已经有了一定的成效,可以使风扇根据环境温度的变化进行自动无级调速,当温度升高到一定时能自动启动风扇,当温度降到一定时能自动停止风扇的转动,实现智能控制。随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控风扇系统。它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所
6、需的能量。本文设计了由 ATMEL 公司的 8052 系列单片机 AT89C52 作为控制器,采用DALLAS 公司的温度传感器 DS18B20 作为温度采集元件,并通过一个达林顿反向驱动器 ULN2803 驱动风扇电机的转动。同时使系统检测到得环境温度以及系统预设的温度动态的显示在 LED 数码管上。根据系统检测到得环境温度与系统预设温度的比较,实现风扇电机的自动启停以及转速的自动调节。1.2 系统整体设计本设计的整体思路是:利用温度传感器 DS18B20 检测环境温度并直接输出数字温度信号给单片机 AT89C52 进行处理,在 LED 数码管上显示当前环境温度值以及预设温度值。其中预设温度
7、值只能为整数形式,检测到的当前环境温度可精确到小数点后一位。同时采用 PWM 脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值。系统结构框图如下:第 2 页 2图 1.1 系统构成框图1.3 方案论证本设计要实现风扇直流电机的温度控制,使风扇电机能根据环境温度的变化自动启停及改变转速,需要比较高的温度变化分辨率以及稳定可靠的换挡停机控制部件 1。1.3.1 温度传感器的选择在本设计中,温度传感器的选择有以下两种方案:方案一:采用热敏电阻作为检测温度的核心元件,并通过运算放大器放大,由于热敏电阻会随温度变化而变化,进而产生输出电压变化的微
8、弱电压变化信号,再经模数转换芯片 ADC0809 将微弱电压变化信号转化为数字信号输入单片机处理。方案二:采用数字式的集成温度传感器 DS18B20 作为温度检测的核心元件,由其检测并直接输出数字温度信号给单片机进行处理。对于方案一,采用热敏电阻作为温度检测元件,有价格便宜,元件易购的优点,但热敏电阻对温度的细微变化不太敏感,在信号采集、放大以及转换的过程中还会产生失真和误差,并且由于热敏电阻的 R-T 关系的非线性,其自身电阻对温度的变化存1 李学龙. 使用单片机控制的智能遥控电风扇控制器J.电子电路制作,2003,9:1315.温度显示 DS18B20AT89C52复位 晶振独立键盘PWM
9、 驱动电路 直流电机第 3 页 3在较大误差,虽然可以通过一定电路来修正,但这不仅将使电路变得更加复杂,而且在人体所处环境温度变化过程中难以检测到小的温度变化。故该方案不适合本系统。对于方案二,由于数字式集成温度传感器 DS18B20 的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强,因此该方案适用于本系统。1.3.2 控制核心的选择在本设计中采用 AT
10、89C52 单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其 I/O 口输出控制信号。AT89C52 单片机工作电压低,性能高,片内含 8k 字节的只读程序存储器 ROM 和 256 字节的随机数据存储器 RAM,它兼容标准的 MCS-51 指令系统,单片价格也不贵,适合本设计系统。1.3.3 温度显示器件的选择方案一:应用动态扫描的方式,采用 LED 共阴极数码管显示温度。方案二:采用 LCD 液晶显示屏显示温度。对于方案一,该方案成本很低,显示温度明确醒目,即使在黑暗空间也能清楚看见,功耗极低,同时温度显示程序的编写也相对简单,因而这种显示方式得到了广泛应用。但不足的地方是
11、它采用动态扫描的显示方式,各个 LED 数码管是逐个点亮的,因此会产生闪烁,但由于人眼的视觉暂留时间为 20MS,故当数码管扫描周期小于这个时间时人眼不会感觉到闪烁,因此只要描频率设置得当即可采用该方案。对于方案二,液晶显示屏具有显示字符优美,其不仅能显示数字还能显示字符甚至图形,这是 LED 数码管无法比拟的。但是液晶显示模块的元件价格昂贵,显示驱动程序的编写也较复杂,从简单实用的原则考虑,本系统采用方案一。1.3.4 调速方式的选择方案一:采用数模转换芯片 DAC0832 来控制,由单片机根据当前环境温度值输出相应数字量到 DAC0832 中,再由 DAC0832 产生相应模拟信号控制晶闸
12、管的导通角,从而通过无级调速电路实现风扇电机转速的自动调节。方案二:采用单片机软件编程实现 PWM(脉冲宽度调制)调速的方法。 PWM 是英文 Pulse Width Modulation 的缩写,它是按一定的规律改变脉冲序列的脉冲宽度,以第 4 页 4调节输出量和波形的一种调节方式,在 PWM 驱动控制的调节系统中,最常用的是矩形波 PWM 信号,在控制时需要调节 PWM 波得占空比。占空比是指高电平持续时间在一个周期时间内的百分比。在控制电机的转速时,占空比越大,转速就越快,若全为高电平,占空比为 100%时,转速达到最大 2。用单片机 I/O 口输出 PWM 信号时,有如下三种方法:(1
13、) 利用软件延时。当高电平延时时间到时,对 I/O 口电平取反,使其变成低电平,然后再延时一定时间;当低电平延时时间到时,再对该 I/O 口电平取反,如此循环即可得到 PWM 信号。在本设计中应用了此方法。(2) 利用定时器。控制方法与(1) 相同,只是在该方法中利用单片机的定时器来定时进行高低电平的转变,而不是用软件延时。应用此方法时编程相对复杂。(3) 利用单片机自带的 PWM 控制器。在 STC12 系列单片机中自身带有 PWM 控制器,但本系统所用到得 AT89 系列单片机无此功能。对于方案一,该方案能够实现对直流风扇电机的无级调速,速度变化灵敏,但是D/A 转换芯片的价格较高,与其温
14、控状态下无级调速功能相比性价比不高。对于方案二,相对于其他用硬件或者软硬件相结合的方法实现对电机进行调速而言,采用 PWM 用纯软件的方法来实现调速过程,具有更大的灵活性,并可大大降低成本,能够充分发挥单片机的功能,对于简单速度控制系统的实现提供了一种有效的途径。综合考虑选用方案二。2 蓝厚荣.单片机的 PWM 控制技术J .工业控制计算机,2010,23(3):9798第 5 页 5第二章 各单元模块的硬件设计系统主要器件包括 DS18B20 温度传感器、AT89C52 单片机、五位 LED 共阴数码管、风扇直流电机、达林顿反向驱动器 ULN2803。辅助元件包括电阻电容、晶振、电源、按键、
15、拨码开关等。2.1 系统器件简介2.1.1 DS18B20 单线数字温度传感器简介DS18B20 数 字 温 度 传 感 器 , 是 采 用 美 国 DALLAS 半导体公 司 生 产 的 DS18B20可 组 网 数 字 温 度 传 感 器 芯 片 封 装 而 成 , 它 具 有 微 型 化 、 低 功 耗 、 高 性 能 、 抗 干 扰 能力 强 、 易 配 微 处 理 器 等 优 点 , 可 直 接 将 温 度 转 化 成 串 行 数 字 信 号 供 处 理 器 处 理 。适 用 于 各 种 狭 小 空 间 设 备 数 字 测 温 和 控 制 领 域 。DS18B20 的主要特征:测量的
16、结果直接以数字信号的形式输出,以“一线总线”方式串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力;温度测量范围在-55 +125之间,在 -10+85时精度为0.5;可检测温度分辨率为912 位,对应的可分辨温度分别为 0.5,0.25,0.125和 0.0625,可实现高精度测温;它单线接口的独特性,使它与微处理器连接时仅需一条端口线即可实现与微处理器的双向通信;支持多点组网功能,即多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温的功能;工作电压范围宽,其范围在 3.05.5V3。DS18B20 内部结构主要有四部分:64 位 ROM、温度传感器、非挥发
17、的温度报警触发器 TH 和 TL、配置寄存器。其管脚有三个,其中 DQ 为数字信号端,GND 为电源地,VDD 为电源输入端。2.1.2 达林顿反向驱动器 ULN2803 简介本系统要用单片机控制风扇直流电机,需要加驱动电路,为直流电机提供足够大的驱动电流。在本系统驱动电路中,选用达林顿反向驱动器 ULN2803 来驱动风扇直流电机。ULN2803 在使用时接口简单,操作方便,可为电机提供较大的驱动电流,它实3 郭天祥.新概念 51 单片机 C 语言教程M. 北京:电子工业出版社 .2009.342344第 6 页 6际上是一个集成芯片,单块芯片可同时驱动 8 个电机。每个电机由单片机的一个
18、I/O口控制,单片机 I/O 口输出的为 5V 的 TTL 信号。ULN2803 由 8 个 NPN 达林顿晶体管组装而成,共 18 个引脚,引脚 18 分别是 8路驱动器的输入端,输入信号可直接是 TTL 或 CMOS 信号;引脚 1118 分别是 8 路驱动器的输出端;引脚 9 为接地线,引脚 10 为电源输入。当输入 TTL 信号为 5V 或CMOS 信号为 615V 时,输出的最大电压为 50V,最大电流为 500mA,工作温度范围为 070。本系统选用的电机为 12V 直流无刷电机,可用 ULN2803 来驱动。2.1.3 AT89C52 单片机简介AT89C52 是 51 系 列
19、单 片 机 的 一 个 型 号 , 它 是 由 ATMEL 公 司 生 产 的 一 个 低 电压 、 高 性 能 的 8 位 单 片 机 , 片 内 器 件 采 用 ATMEL 公 司 的 非 易 失 性 、 高 密 度 存 储技 术 生 产 , 与 标 准 的 MCS-51 指 令 系 统 兼 容 , 同 时 片 内 置 有 通 用 8 位 中 央 处 理 器和 8k 字 节 的 可 反 复 擦 写 的 只 读 程 序 存 储 器 ROM 以 及 256 字 节 的 数 据 存 储 器RAM, 在 许 多 许 多 较 复 杂 的 控 制 系 统 中 AT89C52 单 片 机 得 到 了 广
20、 泛 的 应 用 。AT89C52 有 40 个 引 脚 , 各 引 脚 介 绍 如 下 :VCC:+5V 电源线;GND:接地线。P0 口:P0.7P0.0,这组引脚共 8 条,其中 P0.7 为最高位,P0.0 为最低位。这 8 条引脚共有两种不同的功能,分别使用于两种不同的情况。第一种情况是单片机不带片外存储器,P0 口可以作为通用 I/O 口使用,P0.7P0.0 用于传送 CPU 的输入/ 输出数据,此时它需外接一上拉电阻才能正常工作。第二种情况是单片机带片外存储器,其各引脚在 CPU 访问片外存储器时先是用于传送片外存储器的低 8 位地址,然后传送 CPU对片外存储器的读写数据 4
21、。P1 口:P1 口是一个内部含上拉电阻的 8 位双向 I/O 口。它也可作为通用的 I/O 口使用,与 P0 口一样用于传送用户的输入输出数据,所不同的是它片内含上拉电阻而P0 口没有,故 P0 口在做该用途时需外接上拉电阻而 P1 口则无需。在 FLASH 编程和校验时,P1 口用于输入片内 EPROM 的低 8 位地址。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,它可以作为通用 I/O 口使用,传送用户的输入/输出数据,同时可与 P0 口的第二功能配合,用于输出片外存储器的高 8 位地址,共同选中片外存储单元,但此时不能传送存储器的读写数据。在一些型4 胡汉才.单片
22、机原理及其接口技术M(第 2 版).北京:清华大学出版社.2004.第 63 页.第 7 页 7号的单片机中,P2 口还可以配合 P1 口传送片内 EPROM 的 12 位地址中的高 4 位地址。P3 口:P3 口引脚是 8 个带内部上拉电阻的双向 I/O 口,当 P3 口写入 1 后,它们被内部上拉为高电平。它也可作为通用的 I/O 口使用,传送用户的输入输出数据,P3口也作为一些特殊功能端口使用,如下所示:P3.0:RXD (串行数据接收口)P3.1:TXD(串行数据发送口)P3.2: (外部中断 0 输入)0INTP3.3: (外部中断 1 输入)1P3.4:T0 (记数器 0 计数输入
23、)P3.5:T1 (记时器 1 外部输入)P3.6: (外部 RAM 写选通信号)WRP3.7: (外部 RAM 读选通信号) 图 2.1.1 AT89C51 单片机 DRST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平状态。ALE/ :地址锁存允许/编程线,当访问片外存储器时,在 P0.7P0.0 引脚线PROG上输出片外存储器低 8 位地址的同时还在 ALE/ 线上输出一个高电位脉冲,其下PROG降沿用于把这个片外存储器低 8 位地址锁存到外部专用地址锁存器,以便空出 P0.7P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,单片机自动在 A
24、LE/ 线上输出频率为 1/6 晶振频率的脉冲序列。PROG:外部程序存储器 ROM 的选通信号。在由外部程序存储器取指期间,每个SEN机器周期两次 有效。但在访问外部数据存储器时,这两次有效的 信号将不PSEN出现。/VPP:允许访问片外存储器 /编程电源线,当 保持低电平时,则在此期间允EAEA许使用片外程序存储器,不管是否有内部程序存储器。当 端保持高电平时,则允许使用片内程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。第 8 页 8dpgfedcbadpgfedcbaRx8 Rx8XTAL1 和 XTAL2:片内振荡电路输入线,这两个端子用来外接石
25、英晶体和微调电容,即用来连接单片机片内 OSC 的定时反馈回路。2.1.4 LED 数码管简介本系统选用五个 LED 数码管来进行温度显示。 LED 又称为数码管,它主要是由 8段发光二极管组成的不同组合,其中 ag 为数字和字符显示段,dp 为小数点的显示,通过 ag 这 7 个发光二极管点亮的不同组合,可以显示 09 和 AF 共 16 个数字和字母。LED 数码管可以分为共阴极和共阳极两种结构,如下图 2.1.2(a)和图 2.1.2(b) 所示。共阴极结构把 8 个发光二极管阴极连在一起,共阳极结构把 8 个发光二极管阳极连在一起。通过单片机引脚输出高低电平,可使数码管显示相应的数字或
26、字母,这种使数码管显示字形的数据称字形码,又称段选码 5。图 2.1.2 七段 LED 数码管表 2.1.1 7 段 LED 的段选码表显示字符 共阴极段码 共阳极段码 显示字符 共阴极段码 共阳极段码0 3fH C0H 8 7fH 80H1 06H F9H 9 6fH 90H2 5bH A4H A 77H 88H3 4fH B0H B 7fH 83H4 66H 99H C 39H C6H5 6dH 92H D 3fH A1H6 7dH 82H E 79H 86H7 07H F8H F 71H 8EH5 胡全.51 单片机的数码管动态显示技术J .信息技术,2009,13:2526g f ba
27、e d c dpgndgnd数码管引脚分配图 a.共阴极 b.共阳极第 9 页 9一个共阴极数码管接至单片机的电路,要想显示数字“7”须 a、b、c 这 3 个显示段发光 (即这 3 个字段为高电平)只要在 P0 口输入 00000111(07H )即可。这里07H 即为数字 7 的段选码。字形与段选码的关系见表 2.1.1 所示。2.2 各部分电路设计2.2.1 开关复位与晶振电路在单片机应用系统中,除单片机本身需要复位以外,外部扩展 I/O 接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上的XTAL1 和 XTAL2 用来外接石英晶体和微调电容,即用来连接
28、单片机片内 OSC 的定时反馈回路。本设计中开关复位与晶振电路如下图所示,当按下按键开关 S1 时,系统复位一次。其中电容 C1、C2 为 20pF,C3 为 10uF,电阻 R2、R3 为 10k,晶振为11.0592MHz。图 2.2.1 系统复位与晶振电路2.2.2 独立键盘连接电路键盘包括 2 个独立按键 S2 和 S3,一端与单片机的 P1.3 和 P1.4 口相连,另一端接地,当按下任一键时,P1 口读取低电平有效。系统上电后,进入键盘扫描子程序,以第 10 页 10查询的方式确定各按键,完成温度初值的设定。其中按键 S1 为加按键,每按下一次,系统对最初设定值加一,按键 S2 为
29、减按键,每按下一次,系统对初设定值进行减一计算。其接线图如下:图 2.2.2 独立键盘连接电路2.2.3 数码管显示电路本设计制作中选用 5 位共阴极数码管作为显示模块,它和单片机硬件的接口如图2.2.3 所示。其中前 3 位数码管 DS1、DS2、DS3 用于显示温度传感器实时检测采集到的温度,可精确到 0.1 摄氏度,显示范围为 099.9 摄氏度;后 2 位数码管 DS4、DS5用于显示系统设置的初值温度,只能显示整数的温度值,显示范围为 099 摄氏度。5位数码管的段选 a、b、c 、 d、e、f、g、dp 线分别与单片机的 P0.0P0.7 口连接,其中P0 口需接一 10K 的上拉
30、电阻,以使单片机的 P0 口能够输出高低电平。5 位数码管的位选 W1W5 分别与单片机的 P2.0P2.4 口相连接,只要 P2.0P2.4 中任一位中输出低电平,则选中与该位相连的数码管。第 11 页 11图 2.2.3 数码管显示电路2.2.4 温度采集电路DS18B20 数字温度传感器通过其内部计数时钟周期来的作用,实现了特有的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55相对应的一个基权值。如果计数器计数到 0 时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55,被预置在-55的温度寄存器中的值就增加 1,然后这
31、个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以 16 位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿 6。DS18B20 在使用时,一般都采用单片机来实现数据采集。只须将 DS18B20 信号线6 李钢,赵彦峰.1-Wire 总线数字温度传感器 DSI8B20 原理及应用J.现代电子技术,2005,28(21):7779.第 12 页 12与单片机 1 位 I/O 线相连,且单片机的 1 位 I/O 线可挂接多个 DS18B20,就可
32、实现单点或多点温度检测 7。在本设计中将 DS18B20 接在 P1.7 口实现温度的采集。其与单片机的连接如图 2.2.4。图 2.2.4 温度采集电路2.2.5 风扇电机驱动与调速电路本设计中由单片机的 I/O 口输出 PWM 脉冲,通过一个达林顿反向驱动器ULN2803 驱动 12V 直流无刷风扇电机以及实现风扇电机速度的调节。键盘控制设置温度,通过软件向单片机输入相应控制指令,由单片机通过 P1.7 口输出与转速相应的 PWM 脉冲,经过 ULN2803 驱动风扇直流电机控制电路,实现电机转速与启停的自动控制 8。当环境温度升高时,直流电机的转速会相应按照设定的等级有所提高;当环境温度下降时,电机的转速会相应的下降;当环境温度低于设置温度时,电机停止转