智能风扇控制器设计

智能风扇控制器设计

设计总说明

随着科技的进步,大家对各种家用电器的舒适度要求越来越高。温控风扇

在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产中大

型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智能CPU风扇等。

本文设计了基于单片机的温控风扇系统,主要针对家用的交流风扇。以单片机

作为控制器,利用温度传感器DS18B20作为温度采集元件,同时利用器件并根

据采集到的温度,通过一个达林顿ULN2003驱动风扇电机。根据检测到的温度

与系统设定的温度的比较控制电机,并能根温度的变化自动改变风扇电机的转

速,实现分级调速,同时用1602液晶显示器显示检测到的温度。

关键词:单片机;DS18B20;分级调速;智能风扇

The design of intelligent fan controller

Design general information

With advances in technology, everyone comfort various household appliances

have become increasingly demanding.Thermostatically controlled fan production in

modern society and people's daily life have a wide range of applications, such as

large-scale industrial production of mechanical cooling system fan, now widely used

on laptops smart CPU fan.This article is designed based on single-chip

temperature-controlled fan system, mainly for household AC fan.With the single chip

processor as the controller, a temperature sensor DS18B20 temperature acquisition

device, while taking advantage of the device according to the collected temperature,

the ULN2003 driven by a Darlington fan motor display.According to the detected

temperature and the set temperature comparison system controls the motor, and can

automatically change the root temperature changes the fan motor speed to achieve

hierarchical control, LCD display with 1602 while the detected temperature.

Key words: SCM ; DS18B20 ; Grading governor; Smart fan

目录

1绪论 .............................................................. 1

1.1 题目背景 ....................................................... 1

1.2 国内外发展 ..................................................... 2

1.3 本次设计的主要内容 ............................................. 3 2整体方案设计 ..................................... 错误!未定义书签。

2.1方案论证 ...................................... 错误!未定义书签。

2.1.1 温度传感器的选择 ........................... 错误!未定义书签。

2.1.2 温度显示器件的选择 .......................................... 4

2.1.3调速方式的选择............................................. 4

2.2系统整体框图 .................................................... 5

3系统硬件设计 ...................................................... 5

3.1 功能器件介绍 ................................................... 6

3.1.1 AT89C52简介 ................................................ 6

3.1.2 温度传感器的介绍 ............................................ 8

3.1.3 1602液晶显示器简介 ......................................... 9

3.1.4 达林顿ULN2003简介 ......................................... 11

3.2 各部分硬件电路设计 ............................................ 12

3.2.1 复位电路 ................................................... 12

3.2.2 显示电路 ................................................... 12

3.2.3 温度采集电路 ............................................... 14

3.2.4 风扇电机驱动与调速电路 ..................................... 15

4软件设计 ......................................................... 16

4.1 Keil C51环境简介 ............................................. 16

4.2 各功能模块设计 ................................................ 16

4.3 Proteus仿真调试 .............................................. 19

4.3.1 Proteus仿真环境简介 ....................................... 19

4.3.2 系统Proteus的仿真 ......................................... 20

5系统硬件搭建与调试 ............................................... 23

5.1 软件调试 ...................................................... 24

5.2 硬件调试 ...................................................... 24

5.2.1 传感器DS18B20温度采集部分调试 ............................. 25

5.2.2 电动机调速电路部分调试 ..................................... 25

6总结 ............................................................. 26

致谢 ............................................................... 30

参考文献 ........................................................... 30 附录一 源程序

附录二 元器件清单

附录三 实物图

1绪 论

在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的应用。在现阶段,温控风扇的设计已经有了一定的成效可以使风扇实现分级调速,实现智能控制。 随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控风扇系统。它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所需的能量。随着温度控制技术与计算机、通信等技术的有机结合,使得现今的温度控制技术在过去的几十年里有了极大的发展,并且对温度控制的提出了高精度、高智能化的发展要求。因此介绍了解当前温度控制系统的发展状况对设计研究智能风扇控制器很有帮助。就目前而言,有很多自动温控风扇能通过温度高低来控制其启动或者停止的技术实现。虽然这解决了夏夜温度下降后人们因熟睡而受凉的问题,但当温度升高时,它不能根据温度的变化改变转速,因此往往使人感到不变。所以现在提出了一种智能温控调速风扇,使用者可以在风扇开启后,智能风扇自动根据室内温度的改变而调节转速,根据温度高低设计了5个人们舒适的档位。

本文设计了由ATMEL公司的8052系列单片机AT89C52作为控制器,采用DALLAS公司的温度传感器DS18B20作为温度采集元件,并通过一个达林顿陈列驱动器-ULN2803驱动风扇电机的转动。同时使系统检测到得环境温度显示在1602液晶显示器上。根据系统检测到得环境温度与系统预设温度的比较,实现风扇电机的分级调速,方便人们的日常生活。

1.1 题目背景

在日常生活中,电风扇被广泛的应用,为人们的生活提供方便,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,智能温控风扇越来越受到人们的重视并被广泛的应用。在现阶段,温控智能风扇的设计已经有了一定的成效,可以使风扇根据环境温度的变化进行自动无级调速,当温度升高到一定时能自动启动风扇,当温度降

到一定时能自动停止风扇的转动,实现智能控制。 但是目前的电风扇即使都有调节不同档位的功能,但必须手动调节不同的档位。为了使风扇实现智能化、人性化,通过温度传感器检测工作环境温度,建立一个微小控制系统,使电风扇随着室内温度的变化自动切换档位,实现“温度高,风力大,温度低,风力弱”的性能,不但节能,而且安全省事,具有广泛的应用前景和市场价值。

随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控智能风扇系统。它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所需的能量[1]。

1.2 国内外发展

电风扇在中国仍然具有很大的市场,所以我国对电风扇的优化研究是很积极的。智能电风扇已经开始投入市场,目前这方面的技术已经成熟。下一阶段的研究将是使其更加人性化,更好的满足不同群体的人的需求。美的等家电企业相继推出了大厦扇和学生扇,这是针对不同的人群而专门研制的,具有智能化控制系统的电风扇。

国外在电风扇方面的研究相对我国不那么积极,但是在智能化电器方面的研究却比我国更加成功。“智能化电器”包含三个层次:智能化的电器元件,如智能化断路器、智能化接触器和智能化磁力启动器等,智能化开关柜和智能化供配电系统。智能化开关柜包含多台断路器,而且供电系统的控制与用电设备的控制关系很密切。这两个层次上的智能化工作重点是:加强网络功能,最大限度地提高配电系统和用电设备的自动化水平。

新型的智能化电器元件的发展趋势:采用微处理器及可编程器件,大量功能“以软代硬”实现,并具有“现场”设计的能力。充分增加智能化电器元件的“柔性”与 适应性。例如一种采用FPGA器件构成的专用功能集成电路已投入应用。

1.3 本次设计的主要内容

设计一个智能风扇控制器系统。该系统能够自动检测当前室内温度,并根据温度的变化来调节风扇的转速。完成元器件的选型,搭建硬件电路,做出实物。

2整体方案设计

2.1方案论证

本设计是基于单片机智能风扇控制器的设计,使风扇电机能根据环境温度的变化改变转速,需要比较高的温度变化分辨率以及稳定可靠的换挡停机控制部件[2]。所以一定确定出适合的方案。所以本次设计主控芯片选择AT89C52单片机,温度传感器选择DS18B20,显示用1602液晶显示当前室温,调速控制模块选用ULN-2003驱动芯片。

2.1.1温度传感器的选择

在本设计中,温度传感器的选择有以下两种方案:

方案一:采用热敏电阻作为检测温度的核心元件,并通过运算放大器放大,由于热敏电阻会随温度变化而变化,进而产生输出电压变化的微弱电压变化信号,再经模数转换芯片ADC0809将微弱电压变化信号转化为数字信号输入单片机处理。

方案二:采用数字式的集成温度传感器DS18B20作为温度检测的核心元件,由其检测并直接输出数字温度信号给单片机进行处理。

对于方案一,采用热敏电阻作为温度检测元件,有价格便宜,元件易购的优点,但热敏电阻对温度的细微变化不太敏感,在信号采集、放大以及转换的过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其自身电阻对温度的变化存在较大误差,虽然可以通过一定电路来修正,但这不仅将使电路变得更加复杂,而且在人体所处环境温度变化过程中难以检测到小的温度变化。故该方案不适合本系统。

对于方案二,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强,因此该方案适用于本系统。

2.1.2 温度显示器件的选择

方案一:应用动态扫描的方式,采用LED共阴极数码管显示温度。

方案二:采用LCD液晶显示屏显示温度。

对于方案一,该方案成本很低,显示温度明确醒目,即使在黑暗空间也能清楚看见,功耗极低,同时温度显示程序的编写也相对简单,因而这种显示方式得到了广泛应用。但不足的地方是它采用动态扫描的显示方式,各个LED数码管是逐个点亮的,因此会产生闪烁,但由于人眼的视觉暂留时间为20MS,故当数码管扫描周期小于这个时间时人眼不会感觉到闪烁,因此只要描频率设置得当即可采用该方案。

对于方案二,液晶显示屏具有显示字符优美,其不仅能显示数字还能显示字符甚至图形,这是LED数码管无法比拟的。本系统采用方案二。

2.1.3调速方式的选择

方案一:采用数模转换芯片DAC0832来控制,由单片机根据当前环境温度值输出相应数字量到DAC0832中,再由DAC0832产生相应模拟信号控制晶闸管的导通角,从而通过无级调速电路实现风扇电机转速的自动调节。

方案二:采用单片机软件编程实现PWM(脉冲宽度调制)调速的方法。使用调速芯片ULN-2003。PWM是英文Pulse Width Modulation的缩写,它是按一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是矩形波PWM信号,在控制时需要调节PWM波得占空比。占空比是指高电平持续时间在一个周期时间内的百分比。在控制电机的转速时,占空比越大,转速就越快,若全为高电平,占空比为100%时,转速达到最大 [2]。用单片机I/O口输出PWM信号时,有如下三种方法:

(1) 利用软件延时。当高电平延时时间到时,对I/O口电平取反,使其变成低电平,然后再延时一定时间;当低电平延时时间到时,再对该I/O口电平取反,如此循环即可得到PWM信号。在本设计中应用了此方法。

(2) 利用定时器。控制方法与(1)相同,只是在该方法中利用单片机的定时器来定时进行高低电平的转变,而不是用软件延时。应用此方法时编程相对复杂。

(3) 利用单片机自带的PWM控制器。在STC12系列单片机中自身带有PWM控制器,但本系统所用到得AT89系列单片机无此功能。

对于方案一,该方案能够实现对直流风扇电机的无级调速,速度变化灵敏,但是D/A转换芯片的价格较高,与其温控状态下无级调速功能相比性价比不高。

对于方案二,相对于其他用硬件或者软硬件相结合的方法实现对电机进行调速而言,采用PWM 的方法来实现调速过程,具有更大的灵活性,并可大大降低成本,只需要一个驱动芯片,就能够充分发挥单片机的功能,对于简单速

度控制系统的实现提供了一种有效的途径。综合考虑选用方案二。

2.1.4控制核心的选择 在本设计中采用AT89C52单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其I/O口输出控制信号。AT89C52单片机工作电压低,性能高,片内含8k字节的只读程序存储器ROM和256字节的随机数据存储器RAM,它兼容标准的MCS-51指令系统,单片价格也不贵,适合本设计系统。

2.2系统整体框图

本设计的整体思路是:利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在液晶显示器上显示当前环境温度值。其中预设温度值为整数形式,检测到的当前环境温度取一位小数。同时采用驱动电路改变直流风扇电机的转速。系统框图如下。

图2-1 系统框图

3 系统硬件设计

3.1 功能器件介绍

3.1.1 AT89C52简介

本次设计选择89C52单片机。

AT89C52是51系列单片机的一个型号,它是由ATMEL公司生产的一个低电压、高性能的8位单片机,片内器件采用ATMEL公司的非易失性、高密度存储技术生产,与标准的MCS-51指令系统兼容,同时片内置有通用8位中央处理器和8k 字节的可反复擦写的只读程序存储器ROM以及256 字节的数据存储器RAM,在许多许多较复杂的控制系统中AT89C52单片机得到了广泛的应用。AT89C52有40个引脚,各引脚介绍如下:

VCC:+5V电源线;GND:接地线。

P0口:P0.7~P0.0,这组引脚共8条,其中P0.7为最高位,P0.0为最低位。这8条引脚共有两种不同的功能,分别使用于两种不同的情况。第一种情况是单片机不带片外存储器,P0口可以作为通用I/O口使用,P0.7~P0.0用于传送CPU的输入/输出数据,此时它需外接一上拉电阻才能正常工作。第二种情况是单片机带片外存储器,其各引脚在CPU访问片外存储器时先是用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据[4]。

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口也作为一些特殊功能端口使用,如下所示:

图3-1 单片机的引脚

P3.0:RXD(串行数据接收口)

P3.1:TXD(串行数据发送口)

P3.2:INT0(外部中断0输入)

P3.3:INT1(外部中断1输入)

P3.4:T0(记数器0计数输入)

P3.5:T1(记时器1外部输入)

P3.6:WR(外部RAM写选通信号)

P3.7:RD(外部RAM读选通信号)

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平状态。 ALE/PROG:地址锁存允许/编程线,当访问片外存储器时,在P0.7~P0.0引脚线上输出片外存储器低8位地址的同时还在ALE/PROG线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存

器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,单片机自动在ALE/PROG线上输出频率为1/6晶振频率的脉冲序列。

PSEN:外部程序存储器ROM的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

EA/VPP:允许访问片外存储器/编程电源线,当EA保持低电平时,则在此期间允许使用片外程序存储器,不管是否有内部程序存储器。当EA端保持高电平时,则允许使用片内程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1和XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。

3.1.2 温度传感器的简介

DS18B20数字温度传感器,是采用美国DALLAS半导体公司生产的DS18B20可组网数字温度传感器芯片封装而成,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。

适用于各种狭小空间设备数字测温和控制领域。

DS18B20的主要特征:测量的结果直接以数字信号的形式输出,以“一线总线”方式串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;温度测量范围在-55℃~+125℃之间,在-10℃~+85℃时精度为±0.5℃;可检测温度分辨率为9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.0625℃,可实现高精度测温;它单线接口的独特性,使它与微处理器连接时仅需一条端口线即可实现与微处理器的双向通信;支持多点组网功能,即多个DS18B20可以并联在唯一的三线上,实现组网多点测温的功能;工作电压范围宽,其范围在3.0~5.5V[3]。

DS18B20内部结构主要有四部分:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。其管脚有三个,其中DQ为数字信号端,GND为电源地,VDD为电源输入端。

温度传感器的一般工作过程

(1)、初始化;

(2)、跳过ROM(命令:CCH);

(3)、温度变换(命令:44H);

(4)、读暂存存储器(命令:BEH);

注:每次读取温度都要经过上面四个过程。

3.1.3 1062液晶显示简介

工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)

注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

管脚功能

1602采用标准的16脚接口,其中:

第1脚:GND为电源地

第2脚:VCC接5V电源正极

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电

源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,

高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,

电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

特性

3.3V或5V工作电压,对比度可调

内含复位电路

提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

内建有192个5X7点阵的字型的字符发生器CGROM

8个可由用户自定义的5X7的字符发生器CGRAM

特征应用

微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。

操作控制

注:关于E=H脉冲——开始时初始化E为0,然后置E为1。

字符集

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

在单片机编程中还可以用字符型车常量或变量赋值,如'A’。因为CGROM储存的字符代码与我们PC中的字符代码是基本一致的,因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1=‘A’这样的方法。PC在编译时就把'A'先转换为41H代码了。

字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。

0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。

1602的16进制ASCII码表地址:读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。

3.1.4达林顿ULN2003简介

ULN-2003的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN-2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。

ULN-2003 采用DIP—16 或SOP—16 塑料封装。

ULN-2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL 和COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。

ULN-2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。

比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。 ULN-2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。

输入5VTTL电平,输出可达500mA/5V。

ULN-2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如下: ULN-2003的每一对达林顿都串联一个2.7K的基极电阻,在5V

的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN-2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。[5]

图3-2 ULN2003芯片引脚图

3.2 各部分硬件电路设计

3.2.1 复位电路

在单片机应用系统中,除单片机本身需要复位以外,外部扩展I/O接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上的XTAL1和XTAL2用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。本设计中开关复位与晶振电路如下图所示,当按下按键开关S1时,系统复位一次。电阻R2、R3为10k,晶振为12MHz。

图3-3 系统复位与时钟电路

18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端。第9引脚为复位输入端,接上电容,电阻及开关后够成电复位电路,20引脚为接地端,40引脚为电源端。31引脚接电源端。

3.2.2 显示电路

本设计采用1602液晶显示器,1602通过D0~D7的8位数据端传输数据和指令。

显示模式设置:(初始化)

0011 1000[0x38]设置16×2显示,5×7点阵,8位数据接口;

显示开关及光标设置:(初始化)

0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)

0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),

N=0(读或写一个字符后地址指针减1 &光标减1),

S=1 且 N=1 (当写一个字符后,整屏显示左移)

s=0 当写一个字符后,整屏显示不移动

数据指针设置:

数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)

其他设置:

01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。

通常推荐的初始化过程:

延时15ms

写指令38H

延时5ms

写指令38H

延时5ms

写指令38H

延时5ms

(以上都不检测忙信号)

(以下都要检测忙信号)

写指令38H

写指令08H 关闭显示

写指令01H 显示清屏

写指令06H光标移动设置

本系统采用字符型液晶显示模块1602,设置单片机驱动LCD1602采用并行方式,RS,RW,EN分别接主控单片机的13,14,15脚,DB0~DB7接到主控单片机的P0数据接口。LCD1602的硬件连接原理图如图3-3所示

图3-4 显示电路连接图

3.2.3 温度采集电路

DS18B20数字温度传感器通过其内部计数时钟周期来的作用,实现了特有

的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55℃相对应的一个基权值。如果计数器计数到0时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55℃,被预置在-55℃的温度寄存器中的值就增加1℃,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以16位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿[6]。

DS18B20在使用时,一般都采用单片机来实现数据采集。只须将DS18B20信号线与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测[7]。在本设计中将DS18B20接在P3.6口实现单点温度的采集。其与单片机的连接如图3-4。

图3-5 温度采集电路

3.2.4风扇电机驱动与调速电路

本设计中由单片机的I/O口输出PWM脉冲,通过一个达林顿ULN2003驱动电机以及实现风扇电机速度的调节,实现温度低,转速低,温度高,转速高的设计思想。

图3-6 电机调速电路

4软件设计

软件设计就是为了实现系统的功能,本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和显示、及电机控制等子程序模块组成。把各个模块的功能一一实现,达到智能风扇的设计思想。

4.1 Keil C51环境简介

Keil C51是美国Keil Software公司开发的51系列兼容单片机C语言的软件开发系统,与单片机汇编语言相比,C语言在不仅语句简单灵活,而且编写的函数模块可移植性强[9],因而易学易用,效率高。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前使用较多的MCS-51系列单片机开发的软件。

Keil C51软件不仅提供了丰富的库函数,而且它强大的集成开发调试工具为程序编辑调试带来便利,在开发大型软件时更能体现高级语言的优势。在使用时要先建立一个工程,然后添加文件并编写程序,编写好后再编辑调试。

4.2 各功能模块设计

程序设计部分主要包括主程序、DS18B20初始化函数、DS18B20温度转换函数、温度读取函数、液晶显示函数、温度处理函数以及风扇电机控制函数。DS18B20初始化函数完成对DS18B20的初始化;DS18B20温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温度传感器数据的读取及数

据换算,温度处理函数对采集到的温度进行分析出理,为电机转速的变化提供条件。

图4-1系统总流程图

4.2.1温度检测部分

DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格

遵守单总线器件的工作时序。

图4-2温度检测流程图

4.2.2温度显示部分

显示部分用了一个1602液晶显示屏,显示当前环境的温度。本次设计精确到一位小数。

图4-3 温度显示流程图

4.3 Proteus仿真调试

4.3.1 Proteus简介

Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。

Proteus软件有十多年的历史,在全球广泛使用,它不仅和其它EDA工具

一样有原理布图、PCB自动或人工布线及电路仿真的功能,而且更重要的功能是,他的电路仿真是互动的,可以根据仿真实时观察到得现象验证设计的正确性及准确性并及时改变程序代码、原理图连接以及元件属性等。它还能配合系统配置的虚拟仪器来显示和输出,如示波器、逻辑分析仪等,效果很好。

Proteus有4个功能模块:智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的PCB设计平台。其内部元件库含有丰富的元件,支持总线结构以及智能化的连线功能;支持主流CPU(如ARM、8051/52、AVR)及其通用外设模型的实时仿真等,为单片机的开发应用等带来极大的便利。

软件使用的主界面如图4-4。

图4-4 Proteus使用界面

4.3.2 系统的仿真

首先启动Proteus软件并建立一工程,然后根据原理图调出相应的原件,再根据要求改变各原件的属性并把各个原件按原理图连接起来。在原理图绘制连接好后再把编译好的程序加载到其中。最后根据系统要实现的功能分步进行仿

真[12]。

把温度传感器DS18B20温度设置为13摄氏度,环境温度低于15摄氏度,一档运行,点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为-41.8,如图4-5所示。

图4-5仿真效果一

当把温度传感器DS18B20温度设置为30摄氏度,环境温度小于35摄氏度三挡运行。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时直流风扇电机的转速为-132,如图4-6所示

图4-6 仿真效果三

在上一步仿真的基础上(温度传感器DS18B20温度设置为38摄氏度,系统预设的温度为39摄氏度),五档运行,此时可知系统预设温度大于温度传感器检测到的温度,观察到直流风扇电机的转速逐渐加快最后转速变为199,符合系统要实现的功能,如图4-7所示

图4-7 仿真效果五

通过以上仿真可以看出,直流风扇电机在系统设定温度一定的情况下,其转速随着环境温度(温度传感器检测到的温度)的增加而增大。实现风扇直流电机的分级调速,本系统实现的是电机在随环境温度变化的五个等级的速度变化,环境温度在一定小范围内变化风扇电机转速是不变的,只有超过了设定的某一界限时转速才会变化。

5系统搭建与调试

硬件搭建是本次设计重要的环节,也是检测之前工作的一种方式,稽老师和张老师为大家借好了实验室,准备好各种仪器,帮各位同学答疑解惑。

5.1 软件调试

5.1.1 显示部分的调试

调节系统参数时,液晶光标太快以致调节的时候观察困难,原因是刷新液晶太快。解决的方法是在相应数据更该时,才开始刷新液晶内容。

5.1.2 传感器DS18B20温度采集部分调试

由于数字式集成温度传感器DS18B20的高度集成化,为软件的设计和调试带来了极大的简便,小体积、低功耗、高精度为控制电机的精度和稳定提供了可能。软件设计采用P3.1口为数字温度输入口,但是需要对输入的数字信号进行处理后才能显示,从而多了温度转换程序。通过软件设计,实现了对环境温度的连续检测,显示出精确到一位小数的温度值。

5.1.3 电动机调速电路部分调试

在本设计中,采用了达林顿陈列-ULN2003驱动直流电机,其可驱动八个直流电机,本系统仅驱动一个。软件设置了P2.0口输出不同的PWM波形,通过达林顿陈列-ULN2003驱动直流电机转动,通过软件中程序设定,根据不同温度输出不同的PWM波,从而得到不同的占空比控制风扇直流电机。在本系统中风扇电机的转速可实现五级调速。通过温度传感器检测的温度与系统预设温度值的比较,实现转速变换。

5.2 硬件调试

5.2.1 显示部分的调试

在焊接板子的时候一定要按要求来焊,还要查器件资料,不能出现虚焊。

5.2.2 传感器DS18B20温度采集部分调试

将DS18B20芯片接在系统板对应的P3.6口,通过插针在对应系统板的右下侧三口即为对应的VCC、P3.6和GND,可将芯片直接插在该插针上,因此即为方便。系统调试中为验证DS18B20是否能在系统板上工作,将手心靠拢或者捏住芯片。由于DS18B20为3个引脚,因此在调试过程中因注意其各个引脚的对应位置,以免将其接反而是芯片不能工作甚至烧毁芯片。一定要注意正负极。

5.2.3 电动机调速电路部分调试

系统本部分的设计中重在软件设计,因为外围的驱动电路只是将送来的PWM信号放大从而驱动电机转动。硬件调试的时候一定要主意芯片的保护,不能损坏芯片。

调试成果如下图所示。

图5-1 实物图

可以显示当前温度,并且根据当前的环境温度改变电机的转速,通过移动电源供电。

6总结

本次设计主要是针对基于单片机的智能风扇控制器的设计,在设计中首先了解了风扇的结构和基本原理,熟悉了风扇的工作过程。本系统要求智能风扇可以根据室内当前环境的温度的改变从而改变电机的转速。

同时,在设计的过程中也发现了自己的不足。首先,在最初设计时,有好多问题没考虑全面,导致走了不少弯路。如在系统功能分析时,画系统流程图时,对流程图的画法不熟悉,对各个功能模块的功能不明确,这是完全不应该的。其次,在完成系统设计以后,没能顺利的完成原理图的绘制,使得在接下来的程序编写中遇到了很多困难。这个主要是初学,还得查找资料学习,耽误了时间。仿真软件的学习方面,自己还需要不断的加强,提高自己的学习能力。

通过本次毕设,使我学到了许多关于单片机、温度传感器方面的知识,这让我更深入的体会到单片机会在以后的技术发展中的实际应用。本次毕设也让我更清楚的认识到了自身学习能力的欠缺,在以后的学习中还得继续加强。 通过此次毕业设计,我不仅把知识融会贯通,而且丰富了大脑。同时在查找资料的过程中也了解了许多课外知识、开拓了视野、认识了将来单片机的发展方向,使自己在专业知识方面和动手能力方面有了质的飞跃。

毕业设计是我作为一名学生即将完成学业的最后一次作业,它既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好开端。毕业设计是我对所学知识理论的检验与总结,能够培养和提高设计者独立分析和解决问题的能力,是我在校期间向学校所交的最后一份综和性作业。从老师的角度来说,指导做毕业设计是老师对学生所做的最后一次执手训练。

毕业的时间一天一天的临近,毕业设计也接近了尾声。在不断的努力下我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的大概总结,但是真的面对毕业设计时发现自己的想法基本是错误的。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识太理论化了,面对单独的课题的是感觉很茫然。自己要学习的东西还太多.通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

不管是以前学会的还是没学会的的确觉得困难比较多,真是万事开头难,不

知道如何入手,最后终于做完了有种如释重负的感觉。此外,还得出一个结论,那便是知识必须通过应用才能实现其价值。有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识也经历了不少艰辛,但结果收获是巨大的。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且毕业设计大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也一般,但是在设计过程中所学到的东西是整个四年大学学习中各类知识的一个整合,必将使我终身受益。

致谢

此次毕业设计的顺利完成离不开张老师从头到尾的细心指导。在每次设计遇到问题时,张老师不辞辛苦的讲解才使得我的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了老师很多的宝贵时间和精力,在此向张老师师表示衷心的感谢!张老师的严谨、敬业、高尚宽厚的学术情怀指引着我在求知的道路上不断前进,让我在学习过程中又上了一个崭新的台阶。

同时,在本次设计及说明书的写作过程中,老师们和同学也为我提供了力所能及的帮助,在此也一并向他们表示感谢!祝愿大家的将来越来越好,都能有一个好前程。

参考文献

[1]窦浩,智能风扇控制系统设计[J],中国知识网,世界电子元器件,2014(1):56~58 [2] 李学龙. 使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:13—15. [3]王春生,宋凤娟,MCS-51单片机输出电路选择及应运[J],煤矿机械,2011,30(4):233-234 [4]梁国祥.基于单片机的风扇智能控制器硬件设计 [J],美国国家半导体公司大奖赛专栏,电子产品世界.2002(5):A.69~70[4] 胡汉才.单片机原理及其接口技术[M](第2版).北京:清华大学出版社.2004.第63页.

[5]陈耀华.双向可控硅的工作原理及其应用(上),[J]电子技术应用.1984(8):9~11 [6]李钢,赵彦峰.1-Wire总线数字温度传感器DSI8B20原理及应用[J].现代电子技术,2005,28(21):77—79.

[7] 马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):278—28

[8]刘舒淇,施国梁.基于热释电红外传感器的报警系统[J].国外电子元器件,2008(2):24-26 [9]孟祥忠,宋保业,许 琳.热释电红外传感器及其典型应用[J].仪器仪表用户,2005(3):9-11

[10]梁凯淋.单片机技术的发展及应用[J].中小企业管理与科技:下旬刊,2009(4):247 [11] 楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:第50页 [12] 王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J] .IT技术,2006,20:10—11

[13]王海宁,基于单片机的温度控制系统的研究[M],合肥工业大学,2008 [14]郭炳坤.简单的恒温箱温控电路[J].仪器与未来,2008(9):22

[15]陈富忠,翁桂琴,智能温控调速风扇的设计[J],上海电机学院学报,2009年第12期, 第12卷第4期,298~299

[16]CHEN Xue-li. Design and Research on New Intelligent Temperature Control System for Stove[J].Journal of China University of Mining & Technology,2001,11(2):217~220

[17]Shi Zhibin,Wang Baomin,Application and Development of Intelligent Temperature Control System[C].Proceedings of the 5th International Symposium on Test and Measurement,2003(1):4370~4373

附录一

#include //头文件 #define uchar unsigned char #define uint unsigned int

sbit DS=P3^6; //定义18B20信号端

sbit lcden=P3^5; sbit lcdrs=P3^3; 据,低电平为写命令

sbit lcdrw=P3^4; 据,低电平为写数据

sbit dianji=P2^0;

uchar code table[]={0,1,2,3,4,5,6,7,8,9}; uchar code table1[]="Temperature:"; uint tem;

//温度转换用

uint temp; // 存储温度值 uint num;

/************************************************** *名称:void delay(uint count) *功能:延时函数,用来延迟时间 *入口参数:count *出口参数:无

*说明:通过不断地执行空语句,来延迟时间(延时可以用延时语句,也可以用定时器产生中断来延迟时间,此例属于延时语句)

//宏定义

//声明1602的使能端,低电平有效

//声明1602的数据/命令控制端,高电平为写数

//声明1602的读/写控制端,高电平为读数

//电机的控制口

*范例:void delay(uint xms);

**************************************************/ void delay(uint count) { uint i,j; }

/************************************************** *名称:void dsreset(void)

*功能:18B20的复位函数,18B20使用时一定要初始化 *入口参数:无 *出口参数:无

*说明:请参照18B20的时序图,看程序 *范例:void dsreset(void);

**************************************************/ void dsreset(void) { DS=0; DS=1; }

/************************************************** *名称: bit tmpreadbit(void)

*功能: 从18B20读一位二进制数据, *入口参数:无 *出口参数:dat

*说明:请参照18B20的读数据的时序图,看程序 *范例:bit tmpreadbit(void));

for(i=count;i>0;i--)

for(j=100;j>0;j--);

//先让ds为低电平 //拉高

delay(1); delay(1);

//延迟一段时间 //延时

**************************************************/ bit tmpreadbit(void) { uint i; bit dat;

//定义返回值,注意类型

DS=0;i++; //短暂的延时,此时不用延时函数 DS=1;i++;i++; 采样,获取数据值

dat=DS; return (dat); }

/************************************************** *名称: uchar tmpread(void)

*功能: 从18B20读一个字节的数据函数 *入口参数:无 *出口参数:dat

*说明:请参照18B20的读数据的时序图,看程序 *范例:uchar tmpread(void);

**************************************************/ uchar tmpread(void) {

uchar i,j,dat; dat=0;

for(i=1;i

j=tmpreadbit();

dat=(j>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里

}

return(dat); }

//短暂的延时,期间单片机会对总线上的数据进行//将获得的数值返回给dat //延时

i=8;while(i>0)i--;

/************************************************** *名称: void tmpwritebyte(uchar dat) *功能: 向18B20写一个字节的数据 *入口参数:dat *出口参数:无

*说明:请参照18B20的读数据的时序图,看程序 *范例:void tmpwritebyte(uchar dat);

**************************************************/ void tmpwritebyte(uchar dat) { uint i; uchar j; bit testb; for(j=1;j

testb=dat&0x01; dat=dat>>1;

if(testb) //write 1 { DS=0; i++;i++; DS=1;

i=8;while(i>0)i--; } else {

DS=0; //write 0 i=8;while(i>0)i--; DS=1; i++;i++; }

} }

/************************************************** *名称: void tmpchange(void)

*功能: 18B20开始获取温度并转换,温度值存储在18B20的寄存器中 *入口参数:无 *出口参数:无

*说明:注意18B20的有关命令。 *范例:void tmpchange(void)

**************************************************/ void tmpchange(void) {

dsreset(); delay(1);

//先初始化

//延时一会

//跳过ROM,直接向18B20发温度变换命令,

//开始温度转换

tmpwritebyte(0xcc); tmpwritebyte(0x44); }

/************************************************** *名称: uint tmp()

*功能: 从18B20的寄存器中读取温度 *入口参数:无 *出口参数:temp

*说明:注意18B20的有关命令。 *范例:uint tmp();

**************************************************/ uint tmp() {

float tt; uchar a,b; dsreset(); delay(1);

//定义一个浮点型数据

//初始化

//延时一会

tmpwritebyte(0xcc); //跳过ROM,使用于只有一个18B20 tmpwritebyte(0xbe); //读暂存器 a=tmpread(); b=tmpread(); temp=b;

temp

temp=temp|a; tt=temp*0.0625; 12位,分辨率为0.0625,

temp=tt*10+0.5; temp=tt*10+0.5;后

return temp; }

/************************************************** *名称:void write_com(uchar com) *功能:向1602写命令 *入口参数:com *出口参数:无

*说明:注意几个延时不可缺少 *范例:void write_com(uchar com);

**************************************************/ void write_com(uchar com) {

//读低八位, //读高八位

//temp*0.0625就是实际温度值,出厂时默认配置为//转化为整数,加0.5表示四舍五入。经过//假如实际温度为25.583度,现在temp的数值为

256,如果不加0.5,则为255,由于只取前三位将会有较大的误差

lcdrs=0; //低电平,写命令

//此处不用加延时,由时序图可知,lcers与

P1=com;

写命令之间无先后关系

delay(5); //由时序图知,此处是让命令稳定 lcden=1;

delay(5); //让高脉冲持续一段时间 lcden=0;

}

/************************************************** *名称:void write_dat(uchar dat) *功能:向1602写数据 *入口参数:dat *出口参数:无

*说明:注意几个延时不可缺少,同时注意与写命令函数的区别在哪里 *范例:void write_dat(uchar dat));

**************************************************/ void write_dat(uchar dat) { 写数据

}

void init() {

lcdrs=1; P1=dat; delay(5); lcden=1; delay(5); lcden=0;

//对比写命令函数在此处的区别,此处为高电平,

lcdrw=0; lcden=0;

//设置读写控制端为写 //先让使能端为低电平

//此处为初始化设置,设置16*2显示,5*7点//设置开显示,不显示光标 //写一个字符后地址指针加1 //清零

//设置地址指针使之指向第一行开始处,以免刚

write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);

write_com(0x82);

阵,8位数据接口

上上电时,光标不在正确位置

}

void display() { 2

A2=tem%100/10; A3=tem%100%10; }

/************************************************** *名称:void qudong()

*功能:通过速度标志位来设定占空比

for(num=0;num

write_dat(table1[num] ); delay(2);

//延时,让数据稳定,如果此处延时比较大,那

么数据将挨个显示出来

//如果延时比较小,那么数据将一次性显示出

uchar A1,A2,A3;

A1=tem/100;

// 分离温度方便存储

//以上面的数为例,temp为256,则A1为

//A2为5, //A3为6

write_com(0x80+0x46); //设置地址指针使之指向第二行开始处 write_dat(0x30+table[A1]); delay(1);

write_dat(0x30+table[A2]); delay(1); write_dat('.'); delay(1);

write_dat(0x30+table[A3]); delay(1);

*入口参数:无 *出口参数:无 *说明:无

*范例:void qudong();

**************************************************/ void qudong() {

uchar i; if(tem

else if(tem

else if(tem

else if(tem

//温度小于37度的时候

//温度小于15度的时候

for(i=0;i

{dianji=0;display();} //用显示函数来实现延时 for(i=0;i

//温度小于25度的时候

for(i=0;i

//温度小于35度的时候

for(i=0;i

}

{ }

else if(tem

for(i=0;i

//温度小于39度的时候

for(i=0;i

/*-------------------------主函数---------------------------*/ void main() {

init(); while(1) {

tmpchange(); //18B20开始获取温度并转换,温度

tem=tmp(); //tmp() ;

//初始化

值存储在18B20的寄存器中

} }

qudong();

附录二 元器件清单

表1 元器件清单

附录三 实物图

智能风扇控制器设计

设计总说明

随着科技的进步,大家对各种家用电器的舒适度要求越来越高。温控风扇

在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产中大

型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智能CPU风扇等。

本文设计了基于单片机的温控风扇系统,主要针对家用的交流风扇。以单片机

作为控制器,利用温度传感器DS18B20作为温度采集元件,同时利用器件并根

据采集到的温度,通过一个达林顿ULN2003驱动风扇电机。根据检测到的温度

与系统设定的温度的比较控制电机,并能根温度的变化自动改变风扇电机的转

速,实现分级调速,同时用1602液晶显示器显示检测到的温度。

关键词:单片机;DS18B20;分级调速;智能风扇

The design of intelligent fan controller

Design general information

With advances in technology, everyone comfort various household appliances

have become increasingly demanding.Thermostatically controlled fan production in

modern society and people's daily life have a wide range of applications, such as

large-scale industrial production of mechanical cooling system fan, now widely used

on laptops smart CPU fan.This article is designed based on single-chip

temperature-controlled fan system, mainly for household AC fan.With the single chip

processor as the controller, a temperature sensor DS18B20 temperature acquisition

device, while taking advantage of the device according to the collected temperature,

the ULN2003 driven by a Darlington fan motor display.According to the detected

temperature and the set temperature comparison system controls the motor, and can

automatically change the root temperature changes the fan motor speed to achieve

hierarchical control, LCD display with 1602 while the detected temperature.

Key words: SCM ; DS18B20 ; Grading governor; Smart fan

目录

1绪论 .............................................................. 1

1.1 题目背景 ....................................................... 1

1.2 国内外发展 ..................................................... 2

1.3 本次设计的主要内容 ............................................. 3 2整体方案设计 ..................................... 错误!未定义书签。

2.1方案论证 ...................................... 错误!未定义书签。

2.1.1 温度传感器的选择 ........................... 错误!未定义书签。

2.1.2 温度显示器件的选择 .......................................... 4

2.1.3调速方式的选择............................................. 4

2.2系统整体框图 .................................................... 5

3系统硬件设计 ...................................................... 5

3.1 功能器件介绍 ................................................... 6

3.1.1 AT89C52简介 ................................................ 6

3.1.2 温度传感器的介绍 ............................................ 8

3.1.3 1602液晶显示器简介 ......................................... 9

3.1.4 达林顿ULN2003简介 ......................................... 11

3.2 各部分硬件电路设计 ............................................ 12

3.2.1 复位电路 ................................................... 12

3.2.2 显示电路 ................................................... 12

3.2.3 温度采集电路 ............................................... 14

3.2.4 风扇电机驱动与调速电路 ..................................... 15

4软件设计 ......................................................... 16

4.1 Keil C51环境简介 ............................................. 16

4.2 各功能模块设计 ................................................ 16

4.3 Proteus仿真调试 .............................................. 19

4.3.1 Proteus仿真环境简介 ....................................... 19

4.3.2 系统Proteus的仿真 ......................................... 20

5系统硬件搭建与调试 ............................................... 23

5.1 软件调试 ...................................................... 24

5.2 硬件调试 ...................................................... 24

5.2.1 传感器DS18B20温度采集部分调试 ............................. 25

5.2.2 电动机调速电路部分调试 ..................................... 25

6总结 ............................................................. 26

致谢 ............................................................... 30

参考文献 ........................................................... 30 附录一 源程序

附录二 元器件清单

附录三 实物图

1绪 论

在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的应用。在现阶段,温控风扇的设计已经有了一定的成效可以使风扇实现分级调速,实现智能控制。 随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控风扇系统。它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所需的能量。随着温度控制技术与计算机、通信等技术的有机结合,使得现今的温度控制技术在过去的几十年里有了极大的发展,并且对温度控制的提出了高精度、高智能化的发展要求。因此介绍了解当前温度控制系统的发展状况对设计研究智能风扇控制器很有帮助。就目前而言,有很多自动温控风扇能通过温度高低来控制其启动或者停止的技术实现。虽然这解决了夏夜温度下降后人们因熟睡而受凉的问题,但当温度升高时,它不能根据温度的变化改变转速,因此往往使人感到不变。所以现在提出了一种智能温控调速风扇,使用者可以在风扇开启后,智能风扇自动根据室内温度的改变而调节转速,根据温度高低设计了5个人们舒适的档位。

本文设计了由ATMEL公司的8052系列单片机AT89C52作为控制器,采用DALLAS公司的温度传感器DS18B20作为温度采集元件,并通过一个达林顿陈列驱动器-ULN2803驱动风扇电机的转动。同时使系统检测到得环境温度显示在1602液晶显示器上。根据系统检测到得环境温度与系统预设温度的比较,实现风扇电机的分级调速,方便人们的日常生活。

1.1 题目背景

在日常生活中,电风扇被广泛的应用,为人们的生活提供方便,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,智能温控风扇越来越受到人们的重视并被广泛的应用。在现阶段,温控智能风扇的设计已经有了一定的成效,可以使风扇根据环境温度的变化进行自动无级调速,当温度升高到一定时能自动启动风扇,当温度降

到一定时能自动停止风扇的转动,实现智能控制。 但是目前的电风扇即使都有调节不同档位的功能,但必须手动调节不同的档位。为了使风扇实现智能化、人性化,通过温度传感器检测工作环境温度,建立一个微小控制系统,使电风扇随着室内温度的变化自动切换档位,实现“温度高,风力大,温度低,风力弱”的性能,不但节能,而且安全省事,具有广泛的应用前景和市场价值。

随着单片机在各个领域的广泛应用,许多用单片机作控制的温度控制系统也应运而生,如基于单片机的温控智能风扇系统。它使风扇根据环境温度的变化实现自动启停,使风扇转速随着环境温度的变化而变化,实现了风扇的智能控制。它的设计为现代社会人们的生活以及生产带来了诸多便利,在提高人们的生活质量、生产效率的同时还能节省风扇运转所需的能量[1]。

1.2 国内外发展

电风扇在中国仍然具有很大的市场,所以我国对电风扇的优化研究是很积极的。智能电风扇已经开始投入市场,目前这方面的技术已经成熟。下一阶段的研究将是使其更加人性化,更好的满足不同群体的人的需求。美的等家电企业相继推出了大厦扇和学生扇,这是针对不同的人群而专门研制的,具有智能化控制系统的电风扇。

国外在电风扇方面的研究相对我国不那么积极,但是在智能化电器方面的研究却比我国更加成功。“智能化电器”包含三个层次:智能化的电器元件,如智能化断路器、智能化接触器和智能化磁力启动器等,智能化开关柜和智能化供配电系统。智能化开关柜包含多台断路器,而且供电系统的控制与用电设备的控制关系很密切。这两个层次上的智能化工作重点是:加强网络功能,最大限度地提高配电系统和用电设备的自动化水平。

新型的智能化电器元件的发展趋势:采用微处理器及可编程器件,大量功能“以软代硬”实现,并具有“现场”设计的能力。充分增加智能化电器元件的“柔性”与 适应性。例如一种采用FPGA器件构成的专用功能集成电路已投入应用。

1.3 本次设计的主要内容

设计一个智能风扇控制器系统。该系统能够自动检测当前室内温度,并根据温度的变化来调节风扇的转速。完成元器件的选型,搭建硬件电路,做出实物。

2整体方案设计

2.1方案论证

本设计是基于单片机智能风扇控制器的设计,使风扇电机能根据环境温度的变化改变转速,需要比较高的温度变化分辨率以及稳定可靠的换挡停机控制部件[2]。所以一定确定出适合的方案。所以本次设计主控芯片选择AT89C52单片机,温度传感器选择DS18B20,显示用1602液晶显示当前室温,调速控制模块选用ULN-2003驱动芯片。

2.1.1温度传感器的选择

在本设计中,温度传感器的选择有以下两种方案:

方案一:采用热敏电阻作为检测温度的核心元件,并通过运算放大器放大,由于热敏电阻会随温度变化而变化,进而产生输出电压变化的微弱电压变化信号,再经模数转换芯片ADC0809将微弱电压变化信号转化为数字信号输入单片机处理。

方案二:采用数字式的集成温度传感器DS18B20作为温度检测的核心元件,由其检测并直接输出数字温度信号给单片机进行处理。

对于方案一,采用热敏电阻作为温度检测元件,有价格便宜,元件易购的优点,但热敏电阻对温度的细微变化不太敏感,在信号采集、放大以及转换的过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其自身电阻对温度的变化存在较大误差,虽然可以通过一定电路来修正,但这不仅将使电路变得更加复杂,而且在人体所处环境温度变化过程中难以检测到小的温度变化。故该方案不适合本系统。

对于方案二,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强,因此该方案适用于本系统。

2.1.2 温度显示器件的选择

方案一:应用动态扫描的方式,采用LED共阴极数码管显示温度。

方案二:采用LCD液晶显示屏显示温度。

对于方案一,该方案成本很低,显示温度明确醒目,即使在黑暗空间也能清楚看见,功耗极低,同时温度显示程序的编写也相对简单,因而这种显示方式得到了广泛应用。但不足的地方是它采用动态扫描的显示方式,各个LED数码管是逐个点亮的,因此会产生闪烁,但由于人眼的视觉暂留时间为20MS,故当数码管扫描周期小于这个时间时人眼不会感觉到闪烁,因此只要描频率设置得当即可采用该方案。

对于方案二,液晶显示屏具有显示字符优美,其不仅能显示数字还能显示字符甚至图形,这是LED数码管无法比拟的。本系统采用方案二。

2.1.3调速方式的选择

方案一:采用数模转换芯片DAC0832来控制,由单片机根据当前环境温度值输出相应数字量到DAC0832中,再由DAC0832产生相应模拟信号控制晶闸管的导通角,从而通过无级调速电路实现风扇电机转速的自动调节。

方案二:采用单片机软件编程实现PWM(脉冲宽度调制)调速的方法。使用调速芯片ULN-2003。PWM是英文Pulse Width Modulation的缩写,它是按一定的规律改变脉冲序列的脉冲宽度,以调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是矩形波PWM信号,在控制时需要调节PWM波得占空比。占空比是指高电平持续时间在一个周期时间内的百分比。在控制电机的转速时,占空比越大,转速就越快,若全为高电平,占空比为100%时,转速达到最大 [2]。用单片机I/O口输出PWM信号时,有如下三种方法:

(1) 利用软件延时。当高电平延时时间到时,对I/O口电平取反,使其变成低电平,然后再延时一定时间;当低电平延时时间到时,再对该I/O口电平取反,如此循环即可得到PWM信号。在本设计中应用了此方法。

(2) 利用定时器。控制方法与(1)相同,只是在该方法中利用单片机的定时器来定时进行高低电平的转变,而不是用软件延时。应用此方法时编程相对复杂。

(3) 利用单片机自带的PWM控制器。在STC12系列单片机中自身带有PWM控制器,但本系统所用到得AT89系列单片机无此功能。

对于方案一,该方案能够实现对直流风扇电机的无级调速,速度变化灵敏,但是D/A转换芯片的价格较高,与其温控状态下无级调速功能相比性价比不高。

对于方案二,相对于其他用硬件或者软硬件相结合的方法实现对电机进行调速而言,采用PWM 的方法来实现调速过程,具有更大的灵活性,并可大大降低成本,只需要一个驱动芯片,就能够充分发挥单片机的功能,对于简单速

度控制系统的实现提供了一种有效的途径。综合考虑选用方案二。

2.1.4控制核心的选择 在本设计中采用AT89C52单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其I/O口输出控制信号。AT89C52单片机工作电压低,性能高,片内含8k字节的只读程序存储器ROM和256字节的随机数据存储器RAM,它兼容标准的MCS-51指令系统,单片价格也不贵,适合本设计系统。

2.2系统整体框图

本设计的整体思路是:利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在液晶显示器上显示当前环境温度值。其中预设温度值为整数形式,检测到的当前环境温度取一位小数。同时采用驱动电路改变直流风扇电机的转速。系统框图如下。

图2-1 系统框图

3 系统硬件设计

3.1 功能器件介绍

3.1.1 AT89C52简介

本次设计选择89C52单片机。

AT89C52是51系列单片机的一个型号,它是由ATMEL公司生产的一个低电压、高性能的8位单片机,片内器件采用ATMEL公司的非易失性、高密度存储技术生产,与标准的MCS-51指令系统兼容,同时片内置有通用8位中央处理器和8k 字节的可反复擦写的只读程序存储器ROM以及256 字节的数据存储器RAM,在许多许多较复杂的控制系统中AT89C52单片机得到了广泛的应用。AT89C52有40个引脚,各引脚介绍如下:

VCC:+5V电源线;GND:接地线。

P0口:P0.7~P0.0,这组引脚共8条,其中P0.7为最高位,P0.0为最低位。这8条引脚共有两种不同的功能,分别使用于两种不同的情况。第一种情况是单片机不带片外存储器,P0口可以作为通用I/O口使用,P0.7~P0.0用于传送CPU的输入/输出数据,此时它需外接一上拉电阻才能正常工作。第二种情况是单片机带片外存储器,其各引脚在CPU访问片外存储器时先是用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据[4]。

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口也作为一些特殊功能端口使用,如下所示:

图3-1 单片机的引脚

P3.0:RXD(串行数据接收口)

P3.1:TXD(串行数据发送口)

P3.2:INT0(外部中断0输入)

P3.3:INT1(外部中断1输入)

P3.4:T0(记数器0计数输入)

P3.5:T1(记时器1外部输入)

P3.6:WR(外部RAM写选通信号)

P3.7:RD(外部RAM读选通信号)

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平状态。 ALE/PROG:地址锁存允许/编程线,当访问片外存储器时,在P0.7~P0.0引脚线上输出片外存储器低8位地址的同时还在ALE/PROG线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存

器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,单片机自动在ALE/PROG线上输出频率为1/6晶振频率的脉冲序列。

PSEN:外部程序存储器ROM的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。

EA/VPP:允许访问片外存储器/编程电源线,当EA保持低电平时,则在此期间允许使用片外程序存储器,不管是否有内部程序存储器。当EA端保持高电平时,则允许使用片内程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1和XTAL2:片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。

3.1.2 温度传感器的简介

DS18B20数字温度传感器,是采用美国DALLAS半导体公司生产的DS18B20可组网数字温度传感器芯片封装而成,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。

适用于各种狭小空间设备数字测温和控制领域。

DS18B20的主要特征:测量的结果直接以数字信号的形式输出,以“一线总线”方式串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;温度测量范围在-55℃~+125℃之间,在-10℃~+85℃时精度为±0.5℃;可检测温度分辨率为9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.0625℃,可实现高精度测温;它单线接口的独特性,使它与微处理器连接时仅需一条端口线即可实现与微处理器的双向通信;支持多点组网功能,即多个DS18B20可以并联在唯一的三线上,实现组网多点测温的功能;工作电压范围宽,其范围在3.0~5.5V[3]。

DS18B20内部结构主要有四部分:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。其管脚有三个,其中DQ为数字信号端,GND为电源地,VDD为电源输入端。

温度传感器的一般工作过程

(1)、初始化;

(2)、跳过ROM(命令:CCH);

(3)、温度变换(命令:44H);

(4)、读暂存存储器(命令:BEH);

注:每次读取温度都要经过上面四个过程。

3.1.3 1062液晶显示简介

工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)

注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

管脚功能

1602采用标准的16脚接口,其中:

第1脚:GND为电源地

第2脚:VCC接5V电源正极

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电

源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,

高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,

电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。

特性

3.3V或5V工作电压,对比度可调

内含复位电路

提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

内建有192个5X7点阵的字型的字符发生器CGROM

8个可由用户自定义的5X7的字符发生器CGRAM

特征应用

微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。

操作控制

注:关于E=H脉冲——开始时初始化E为0,然后置E为1。

字符集

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

在单片机编程中还可以用字符型车常量或变量赋值,如'A’。因为CGROM储存的字符代码与我们PC中的字符代码是基本一致的,因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1=‘A’这样的方法。PC在编译时就把'A'先转换为41H代码了。

字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。

0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。

1602的16进制ASCII码表地址:读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。

3.1.4达林顿ULN2003简介

ULN-2003的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN-2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。

ULN-2003 采用DIP—16 或SOP—16 塑料封装。

ULN-2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL 和COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。

ULN-2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。

比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。 ULN-2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。

输入5VTTL电平,输出可达500mA/5V。

ULN-2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。 该电路的特点如下: ULN-2003的每一对达林顿都串联一个2.7K的基极电阻,在5V

的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

ULN-2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。[5]

图3-2 ULN2003芯片引脚图

3.2 各部分硬件电路设计

3.2.1 复位电路

在单片机应用系统中,除单片机本身需要复位以外,外部扩展I/O接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。单片机上的XTAL1和XTAL2用来外接石英晶体和微调电容,即用来连接单片机片内OSC的定时反馈回路。本设计中开关复位与晶振电路如下图所示,当按下按键开关S1时,系统复位一次。电阻R2、R3为10k,晶振为12MHz。

图3-3 系统复位与时钟电路

18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端。第9引脚为复位输入端,接上电容,电阻及开关后够成电复位电路,20引脚为接地端,40引脚为电源端。31引脚接电源端。

3.2.2 显示电路

本设计采用1602液晶显示器,1602通过D0~D7的8位数据端传输数据和指令。

显示模式设置:(初始化)

0011 1000[0x38]设置16×2显示,5×7点阵,8位数据接口;

显示开关及光标设置:(初始化)

0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)

0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),

N=0(读或写一个字符后地址指针减1 &光标减1),

S=1 且 N=1 (当写一个字符后,整屏显示左移)

s=0 当写一个字符后,整屏显示不移动

数据指针设置:

数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)

其他设置:

01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。

通常推荐的初始化过程:

延时15ms

写指令38H

延时5ms

写指令38H

延时5ms

写指令38H

延时5ms

(以上都不检测忙信号)

(以下都要检测忙信号)

写指令38H

写指令08H 关闭显示

写指令01H 显示清屏

写指令06H光标移动设置

本系统采用字符型液晶显示模块1602,设置单片机驱动LCD1602采用并行方式,RS,RW,EN分别接主控单片机的13,14,15脚,DB0~DB7接到主控单片机的P0数据接口。LCD1602的硬件连接原理图如图3-3所示

图3-4 显示电路连接图

3.2.3 温度采集电路

DS18B20数字温度传感器通过其内部计数时钟周期来的作用,实现了特有

的温度测量功能。低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先置有与-55℃相对应的一个基权值。如果计数器计数到0时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55℃,被预置在-55℃的温度寄存器中的值就增加1℃,然后这个过程不断重复,直到高温度系数振荡周期结束为止。此时温度寄存器中的值即为被测温度值,这个值以16位二进制形式存放在存储器中,通过主机发送存储器读命令可读出此温度值,读取时低位在前,高位在后,依次进行。由于温度振荡器的抛物线特性的影响,其内用斜率累加器进行补偿[6]。

DS18B20在使用时,一般都采用单片机来实现数据采集。只须将DS18B20信号线与单片机1位I/O线相连,且单片机的1位I/O线可挂接多个DS18B20,就可实现单点或多点温度检测[7]。在本设计中将DS18B20接在P3.6口实现单点温度的采集。其与单片机的连接如图3-4。

图3-5 温度采集电路

3.2.4风扇电机驱动与调速电路

本设计中由单片机的I/O口输出PWM脉冲,通过一个达林顿ULN2003驱动电机以及实现风扇电机速度的调节,实现温度低,转速低,温度高,转速高的设计思想。

图3-6 电机调速电路

4软件设计

软件设计就是为了实现系统的功能,本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和显示、及电机控制等子程序模块组成。把各个模块的功能一一实现,达到智能风扇的设计思想。

4.1 Keil C51环境简介

Keil C51是美国Keil Software公司开发的51系列兼容单片机C语言的软件开发系统,与单片机汇编语言相比,C语言在不仅语句简单灵活,而且编写的函数模块可移植性强[9],因而易学易用,效率高。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前使用较多的MCS-51系列单片机开发的软件。

Keil C51软件不仅提供了丰富的库函数,而且它强大的集成开发调试工具为程序编辑调试带来便利,在开发大型软件时更能体现高级语言的优势。在使用时要先建立一个工程,然后添加文件并编写程序,编写好后再编辑调试。

4.2 各功能模块设计

程序设计部分主要包括主程序、DS18B20初始化函数、DS18B20温度转换函数、温度读取函数、液晶显示函数、温度处理函数以及风扇电机控制函数。DS18B20初始化函数完成对DS18B20的初始化;DS18B20温度转换函数完成对环境温度的实时采集;温度读取函数完成主机对温度传感器数据的读取及数

据换算,温度处理函数对采集到的温度进行分析出理,为电机转速的变化提供条件。

图4-1系统总流程图

4.2.1温度检测部分

DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格

遵守单总线器件的工作时序。

图4-2温度检测流程图

4.2.2温度显示部分

显示部分用了一个1602液晶显示屏,显示当前环境的温度。本次设计精确到一位小数。

图4-3 温度显示流程图

4.3 Proteus仿真调试

4.3.1 Proteus简介

Proteus软件是来自英国Labcenter electronics公司的EDA工具软件。

Proteus软件有十多年的历史,在全球广泛使用,它不仅和其它EDA工具

一样有原理布图、PCB自动或人工布线及电路仿真的功能,而且更重要的功能是,他的电路仿真是互动的,可以根据仿真实时观察到得现象验证设计的正确性及准确性并及时改变程序代码、原理图连接以及元件属性等。它还能配合系统配置的虚拟仪器来显示和输出,如示波器、逻辑分析仪等,效果很好。

Proteus有4个功能模块:智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的PCB设计平台。其内部元件库含有丰富的元件,支持总线结构以及智能化的连线功能;支持主流CPU(如ARM、8051/52、AVR)及其通用外设模型的实时仿真等,为单片机的开发应用等带来极大的便利。

软件使用的主界面如图4-4。

图4-4 Proteus使用界面

4.3.2 系统的仿真

首先启动Proteus软件并建立一工程,然后根据原理图调出相应的原件,再根据要求改变各原件的属性并把各个原件按原理图连接起来。在原理图绘制连接好后再把编译好的程序加载到其中。最后根据系统要实现的功能分步进行仿

真[12]。

把温度传感器DS18B20温度设置为13摄氏度,环境温度低于15摄氏度,一档运行,点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为-41.8,如图4-5所示。

图4-5仿真效果一

当把温度传感器DS18B20温度设置为30摄氏度,环境温度小于35摄氏度三挡运行。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时直流风扇电机的转速为-132,如图4-6所示

图4-6 仿真效果三

在上一步仿真的基础上(温度传感器DS18B20温度设置为38摄氏度,系统预设的温度为39摄氏度),五档运行,此时可知系统预设温度大于温度传感器检测到的温度,观察到直流风扇电机的转速逐渐加快最后转速变为199,符合系统要实现的功能,如图4-7所示

图4-7 仿真效果五

通过以上仿真可以看出,直流风扇电机在系统设定温度一定的情况下,其转速随着环境温度(温度传感器检测到的温度)的增加而增大。实现风扇直流电机的分级调速,本系统实现的是电机在随环境温度变化的五个等级的速度变化,环境温度在一定小范围内变化风扇电机转速是不变的,只有超过了设定的某一界限时转速才会变化。

5系统搭建与调试

硬件搭建是本次设计重要的环节,也是检测之前工作的一种方式,稽老师和张老师为大家借好了实验室,准备好各种仪器,帮各位同学答疑解惑。

5.1 软件调试

5.1.1 显示部分的调试

调节系统参数时,液晶光标太快以致调节的时候观察困难,原因是刷新液晶太快。解决的方法是在相应数据更该时,才开始刷新液晶内容。

5.1.2 传感器DS18B20温度采集部分调试

由于数字式集成温度传感器DS18B20的高度集成化,为软件的设计和调试带来了极大的简便,小体积、低功耗、高精度为控制电机的精度和稳定提供了可能。软件设计采用P3.1口为数字温度输入口,但是需要对输入的数字信号进行处理后才能显示,从而多了温度转换程序。通过软件设计,实现了对环境温度的连续检测,显示出精确到一位小数的温度值。

5.1.3 电动机调速电路部分调试

在本设计中,采用了达林顿陈列-ULN2003驱动直流电机,其可驱动八个直流电机,本系统仅驱动一个。软件设置了P2.0口输出不同的PWM波形,通过达林顿陈列-ULN2003驱动直流电机转动,通过软件中程序设定,根据不同温度输出不同的PWM波,从而得到不同的占空比控制风扇直流电机。在本系统中风扇电机的转速可实现五级调速。通过温度传感器检测的温度与系统预设温度值的比较,实现转速变换。

5.2 硬件调试

5.2.1 显示部分的调试

在焊接板子的时候一定要按要求来焊,还要查器件资料,不能出现虚焊。

5.2.2 传感器DS18B20温度采集部分调试

将DS18B20芯片接在系统板对应的P3.6口,通过插针在对应系统板的右下侧三口即为对应的VCC、P3.6和GND,可将芯片直接插在该插针上,因此即为方便。系统调试中为验证DS18B20是否能在系统板上工作,将手心靠拢或者捏住芯片。由于DS18B20为3个引脚,因此在调试过程中因注意其各个引脚的对应位置,以免将其接反而是芯片不能工作甚至烧毁芯片。一定要注意正负极。

5.2.3 电动机调速电路部分调试

系统本部分的设计中重在软件设计,因为外围的驱动电路只是将送来的PWM信号放大从而驱动电机转动。硬件调试的时候一定要主意芯片的保护,不能损坏芯片。

调试成果如下图所示。

图5-1 实物图

可以显示当前温度,并且根据当前的环境温度改变电机的转速,通过移动电源供电。

6总结

本次设计主要是针对基于单片机的智能风扇控制器的设计,在设计中首先了解了风扇的结构和基本原理,熟悉了风扇的工作过程。本系统要求智能风扇可以根据室内当前环境的温度的改变从而改变电机的转速。

同时,在设计的过程中也发现了自己的不足。首先,在最初设计时,有好多问题没考虑全面,导致走了不少弯路。如在系统功能分析时,画系统流程图时,对流程图的画法不熟悉,对各个功能模块的功能不明确,这是完全不应该的。其次,在完成系统设计以后,没能顺利的完成原理图的绘制,使得在接下来的程序编写中遇到了很多困难。这个主要是初学,还得查找资料学习,耽误了时间。仿真软件的学习方面,自己还需要不断的加强,提高自己的学习能力。

通过本次毕设,使我学到了许多关于单片机、温度传感器方面的知识,这让我更深入的体会到单片机会在以后的技术发展中的实际应用。本次毕设也让我更清楚的认识到了自身学习能力的欠缺,在以后的学习中还得继续加强。 通过此次毕业设计,我不仅把知识融会贯通,而且丰富了大脑。同时在查找资料的过程中也了解了许多课外知识、开拓了视野、认识了将来单片机的发展方向,使自己在专业知识方面和动手能力方面有了质的飞跃。

毕业设计是我作为一名学生即将完成学业的最后一次作业,它既是对学校所学知识的全面总结和综合应用,又为今后走向社会的实际操作应用铸就了一个良好开端。毕业设计是我对所学知识理论的检验与总结,能够培养和提高设计者独立分析和解决问题的能力,是我在校期间向学校所交的最后一份综和性作业。从老师的角度来说,指导做毕业设计是老师对学生所做的最后一次执手训练。

毕业的时间一天一天的临近,毕业设计也接近了尾声。在不断的努力下我的毕业设计终于完成了。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的大概总结,但是真的面对毕业设计时发现自己的想法基本是错误的。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识太理论化了,面对单独的课题的是感觉很茫然。自己要学习的东西还太多.通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

不管是以前学会的还是没学会的的确觉得困难比较多,真是万事开头难,不

知道如何入手,最后终于做完了有种如释重负的感觉。此外,还得出一个结论,那便是知识必须通过应用才能实现其价值。有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识也经历了不少艰辛,但结果收获是巨大的。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且毕业设计大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也一般,但是在设计过程中所学到的东西是整个四年大学学习中各类知识的一个整合,必将使我终身受益。

致谢

此次毕业设计的顺利完成离不开张老师从头到尾的细心指导。在每次设计遇到问题时,张老师不辞辛苦的讲解才使得我的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了老师很多的宝贵时间和精力,在此向张老师师表示衷心的感谢!张老师的严谨、敬业、高尚宽厚的学术情怀指引着我在求知的道路上不断前进,让我在学习过程中又上了一个崭新的台阶。

同时,在本次设计及说明书的写作过程中,老师们和同学也为我提供了力所能及的帮助,在此也一并向他们表示感谢!祝愿大家的将来越来越好,都能有一个好前程。

参考文献

[1]窦浩,智能风扇控制系统设计[J],中国知识网,世界电子元器件,2014(1):56~58 [2] 李学龙. 使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:13—15. [3]王春生,宋凤娟,MCS-51单片机输出电路选择及应运[J],煤矿机械,2011,30(4):233-234 [4]梁国祥.基于单片机的风扇智能控制器硬件设计 [J],美国国家半导体公司大奖赛专栏,电子产品世界.2002(5):A.69~70[4] 胡汉才.单片机原理及其接口技术[M](第2版).北京:清华大学出版社.2004.第63页.

[5]陈耀华.双向可控硅的工作原理及其应用(上),[J]电子技术应用.1984(8):9~11 [6]李钢,赵彦峰.1-Wire总线数字温度传感器DSI8B20原理及应用[J].现代电子技术,2005,28(21):77—79.

[7] 马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):278—28

[8]刘舒淇,施国梁.基于热释电红外传感器的报警系统[J].国外电子元器件,2008(2):24-26 [9]孟祥忠,宋保业,许 琳.热释电红外传感器及其典型应用[J].仪器仪表用户,2005(3):9-11

[10]梁凯淋.单片机技术的发展及应用[J].中小企业管理与科技:下旬刊,2009(4):247 [11] 楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:第50页 [12] 王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J] .IT技术,2006,20:10—11

[13]王海宁,基于单片机的温度控制系统的研究[M],合肥工业大学,2008 [14]郭炳坤.简单的恒温箱温控电路[J].仪器与未来,2008(9):22

[15]陈富忠,翁桂琴,智能温控调速风扇的设计[J],上海电机学院学报,2009年第12期, 第12卷第4期,298~299

[16]CHEN Xue-li. Design and Research on New Intelligent Temperature Control System for Stove[J].Journal of China University of Mining & Technology,2001,11(2):217~220

[17]Shi Zhibin,Wang Baomin,Application and Development of Intelligent Temperature Control System[C].Proceedings of the 5th International Symposium on Test and Measurement,2003(1):4370~4373

附录一

#include //头文件 #define uchar unsigned char #define uint unsigned int

sbit DS=P3^6; //定义18B20信号端

sbit lcden=P3^5; sbit lcdrs=P3^3; 据,低电平为写命令

sbit lcdrw=P3^4; 据,低电平为写数据

sbit dianji=P2^0;

uchar code table[]={0,1,2,3,4,5,6,7,8,9}; uchar code table1[]="Temperature:"; uint tem;

//温度转换用

uint temp; // 存储温度值 uint num;

/************************************************** *名称:void delay(uint count) *功能:延时函数,用来延迟时间 *入口参数:count *出口参数:无

*说明:通过不断地执行空语句,来延迟时间(延时可以用延时语句,也可以用定时器产生中断来延迟时间,此例属于延时语句)

//宏定义

//声明1602的使能端,低电平有效

//声明1602的数据/命令控制端,高电平为写数

//声明1602的读/写控制端,高电平为读数

//电机的控制口

*范例:void delay(uint xms);

**************************************************/ void delay(uint count) { uint i,j; }

/************************************************** *名称:void dsreset(void)

*功能:18B20的复位函数,18B20使用时一定要初始化 *入口参数:无 *出口参数:无

*说明:请参照18B20的时序图,看程序 *范例:void dsreset(void);

**************************************************/ void dsreset(void) { DS=0; DS=1; }

/************************************************** *名称: bit tmpreadbit(void)

*功能: 从18B20读一位二进制数据, *入口参数:无 *出口参数:dat

*说明:请参照18B20的读数据的时序图,看程序 *范例:bit tmpreadbit(void));

for(i=count;i>0;i--)

for(j=100;j>0;j--);

//先让ds为低电平 //拉高

delay(1); delay(1);

//延迟一段时间 //延时

**************************************************/ bit tmpreadbit(void) { uint i; bit dat;

//定义返回值,注意类型

DS=0;i++; //短暂的延时,此时不用延时函数 DS=1;i++;i++; 采样,获取数据值

dat=DS; return (dat); }

/************************************************** *名称: uchar tmpread(void)

*功能: 从18B20读一个字节的数据函数 *入口参数:无 *出口参数:dat

*说明:请参照18B20的读数据的时序图,看程序 *范例:uchar tmpread(void);

**************************************************/ uchar tmpread(void) {

uchar i,j,dat; dat=0;

for(i=1;i

j=tmpreadbit();

dat=(j>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里

}

return(dat); }

//短暂的延时,期间单片机会对总线上的数据进行//将获得的数值返回给dat //延时

i=8;while(i>0)i--;

/************************************************** *名称: void tmpwritebyte(uchar dat) *功能: 向18B20写一个字节的数据 *入口参数:dat *出口参数:无

*说明:请参照18B20的读数据的时序图,看程序 *范例:void tmpwritebyte(uchar dat);

**************************************************/ void tmpwritebyte(uchar dat) { uint i; uchar j; bit testb; for(j=1;j

testb=dat&0x01; dat=dat>>1;

if(testb) //write 1 { DS=0; i++;i++; DS=1;

i=8;while(i>0)i--; } else {

DS=0; //write 0 i=8;while(i>0)i--; DS=1; i++;i++; }

} }

/************************************************** *名称: void tmpchange(void)

*功能: 18B20开始获取温度并转换,温度值存储在18B20的寄存器中 *入口参数:无 *出口参数:无

*说明:注意18B20的有关命令。 *范例:void tmpchange(void)

**************************************************/ void tmpchange(void) {

dsreset(); delay(1);

//先初始化

//延时一会

//跳过ROM,直接向18B20发温度变换命令,

//开始温度转换

tmpwritebyte(0xcc); tmpwritebyte(0x44); }

/************************************************** *名称: uint tmp()

*功能: 从18B20的寄存器中读取温度 *入口参数:无 *出口参数:temp

*说明:注意18B20的有关命令。 *范例:uint tmp();

**************************************************/ uint tmp() {

float tt; uchar a,b; dsreset(); delay(1);

//定义一个浮点型数据

//初始化

//延时一会

tmpwritebyte(0xcc); //跳过ROM,使用于只有一个18B20 tmpwritebyte(0xbe); //读暂存器 a=tmpread(); b=tmpread(); temp=b;

temp

temp=temp|a; tt=temp*0.0625; 12位,分辨率为0.0625,

temp=tt*10+0.5; temp=tt*10+0.5;后

return temp; }

/************************************************** *名称:void write_com(uchar com) *功能:向1602写命令 *入口参数:com *出口参数:无

*说明:注意几个延时不可缺少 *范例:void write_com(uchar com);

**************************************************/ void write_com(uchar com) {

//读低八位, //读高八位

//temp*0.0625就是实际温度值,出厂时默认配置为//转化为整数,加0.5表示四舍五入。经过//假如实际温度为25.583度,现在temp的数值为

256,如果不加0.5,则为255,由于只取前三位将会有较大的误差

lcdrs=0; //低电平,写命令

//此处不用加延时,由时序图可知,lcers与

P1=com;

写命令之间无先后关系

delay(5); //由时序图知,此处是让命令稳定 lcden=1;

delay(5); //让高脉冲持续一段时间 lcden=0;

}

/************************************************** *名称:void write_dat(uchar dat) *功能:向1602写数据 *入口参数:dat *出口参数:无

*说明:注意几个延时不可缺少,同时注意与写命令函数的区别在哪里 *范例:void write_dat(uchar dat));

**************************************************/ void write_dat(uchar dat) { 写数据

}

void init() {

lcdrs=1; P1=dat; delay(5); lcden=1; delay(5); lcden=0;

//对比写命令函数在此处的区别,此处为高电平,

lcdrw=0; lcden=0;

//设置读写控制端为写 //先让使能端为低电平

//此处为初始化设置,设置16*2显示,5*7点//设置开显示,不显示光标 //写一个字符后地址指针加1 //清零

//设置地址指针使之指向第一行开始处,以免刚

write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);

write_com(0x82);

阵,8位数据接口

上上电时,光标不在正确位置

}

void display() { 2

A2=tem%100/10; A3=tem%100%10; }

/************************************************** *名称:void qudong()

*功能:通过速度标志位来设定占空比

for(num=0;num

write_dat(table1[num] ); delay(2);

//延时,让数据稳定,如果此处延时比较大,那

么数据将挨个显示出来

//如果延时比较小,那么数据将一次性显示出

uchar A1,A2,A3;

A1=tem/100;

// 分离温度方便存储

//以上面的数为例,temp为256,则A1为

//A2为5, //A3为6

write_com(0x80+0x46); //设置地址指针使之指向第二行开始处 write_dat(0x30+table[A1]); delay(1);

write_dat(0x30+table[A2]); delay(1); write_dat('.'); delay(1);

write_dat(0x30+table[A3]); delay(1);

*入口参数:无 *出口参数:无 *说明:无

*范例:void qudong();

**************************************************/ void qudong() {

uchar i; if(tem

else if(tem

else if(tem

else if(tem

//温度小于37度的时候

//温度小于15度的时候

for(i=0;i

{dianji=0;display();} //用显示函数来实现延时 for(i=0;i

//温度小于25度的时候

for(i=0;i

//温度小于35度的时候

for(i=0;i

}

{ }

else if(tem

for(i=0;i

//温度小于39度的时候

for(i=0;i

/*-------------------------主函数---------------------------*/ void main() {

init(); while(1) {

tmpchange(); //18B20开始获取温度并转换,温度

tem=tmp(); //tmp() ;

//初始化

值存储在18B20的寄存器中

} }

qudong();

附录二 元器件清单

表1 元器件清单

附录三 实物图


相关内容

  • 智能温控调速风扇的设计
  • 第12卷第4期2009年12月 上海电机学院学报 J OURNAL OF SHANGHA I D I AN JI UN I RS I TY ol .12No.4D ec . 2009文章编号1671-2730 2009 04-0297-04 智能温控调速风扇的设计 陈富忠1! 翁桂琴2 ! 1. 上 ...

  • 中南大学单片机课程设计报告
  • 单片机课程设计报告 题 目 智能电风扇控制器 专业班级 电子信息1101班 学 号 姓名 指导老师 课设时间 中南大学·信息科学与工程学院 摘 要 单片机已经在家电领域中得到了广泛的应用.本风扇的主控芯片采用价格实惠而且容易购买的 STC89C52芯片.系统能完成采集当前温度, 并用LED 显示,能 ...

  • 安全性评价在电力施工公司的应用
  • 基于MC6805单片机的电风扇控制器的设计 沈权 (湖州师范学院信息与工程学院,浙江湖州 313000) [摘要]设计了一种以MC6805系列单片机为控制核心的电风扇控制器,该控制器可以实现电风扇的无极调速.各种定时功能和风型的自由转换.而且该控制器控制功能强,适用于电风扇等家用电器的自动控制.它不 ...

  • 智能电风扇控制器设计报告完整版
  • 智能电风扇控制器设计 <单片机课程设计>设计报告 设计题目 智能电风扇控制器设计 目 录 序言 一. 设计任务----------------..------2 二. 小直流电机调速控制系统的总体方案设计-------.-.2 T6.,2.1.系统硬件总体结构-------------- ...

  • 智能电风扇毕业论文设计
  • 合肥学院 <单片机原理与应用> 课程论文题目 院系名称 专业(班级) 学姓指 2013年 6 月 基于单片机的智能落地电风扇的设计 计算机科学与技术 计本(2)班 号 名 导 教 师 摘要:本设计主要介绍了一种智能电风扇的设计方案.该系统以AT89C51芯片的单片机为 核心,应用通用的温 ...

  • 电风扇智能控制系统设计
  • 第1节 引 言„„„„„„„„„„„„„„„„„„„„„„„„„„„2 1.1 智能电风扇控制系统概述 „„„„„„„„„„„„„„„„„„2 1.2 本设计任务和主要内容 „„„„„„„„„„„„„„„„„„„2 第2节 方案论证 „„„„„„„„„„„„„„„„„„„„„„„„„4 2.1 温度 ...

  • 汽车散热风扇电磁离合器
  • 客 第1期 车技术与研究 N0.12011 21 BUS TECHNOLOGY AND RESEARCH 汽车散热风扇电磁离合器 张克铭 (河北南风汽车设备集团有限公司,河北南皮 061503) 摘要:分析汽车散热风扇电磁离合器技术及发展:简述电磁离合器在客车及重卡.工程机械中起到的 节能.降噪.环 ...

  • 智能水产养殖系统论文
  • 题 目: 关键词: STM32:智能控制:数据采集:无线通信 摘要 在水产养殖中要求养殖人进行繁重的体力劳动,同时在一些养殖设备操作复杂,工作环境相对危险,给养殖户带来诸多不便.为解决这一问题,本论文结合了无线通信技术.数据处理技术及直流电机控制技术,设计了一套基于 ARM(Advanced RIS ...

  • 汽车发动机冷却系毕业论文
  • 河南农业职业学院 毕业论文(设计) 题 目 冷却系统常见故障与排除 学 院: 河南农业职业学院 系 别:机电工程系 专业班级:汽车检测与维修09-3班 学生姓名: 指导教师: 撰写日期: 2012 年 4 月 21 日 摘 要 汽车现在已是大众的交通工具,它集机械与电子一体,是当前社会的高科技产品. ...