基于AT89C52单片机的温控电风扇设计.docx
《基于AT89C52单片机的温控电风扇设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C52单片机的温控电风扇设计.docx(20页珍藏版)》请在冰豆网上搜索。
基于AT89C52单片机的温控电风扇设计
基于AT89C52单片机的温控电风扇设计
2012年度本科生毕业论文(设计)
基于AT89C52单片机的温控电风扇设计
学院:
电子信息工程学院
专业:
通信技术
年级:
2008级
学生姓名:
张志强
学号:
08250336
导师及职称:
林元乖(副教授)
2012年5月
2012AnnualGraduationThesisProjectoftheCollegeUndergraduate
Microcontroller-basedtemperaturecontrolfandesign
Department:
CollegeofElectronicsandInformationEngineering
Major:
ComputerScienceandTechnology
Grade:
2008
Student’sName:
Zhang
StudentNo.:
08253036
Tutor:
AssociateProfessorLinYuanguai
FinishedbyMay,2012
毕业论文(设计)原创性声明
摘要
生活中,我们经常会使用到电风扇。
比如,在炎热的夏天人们用电风扇来降温;在工业生产中,大型机械用电风扇来散热等。
但是当环境温度变化的时候,人工很难做到及时控制风扇的转速,也很难有效利用宝贵的电资源。
随着温度控制的技术不断发展,温控技术已经完全满足现代的日常生活和生产的要求,应运而生的温控电风扇也逐渐走进了人们的生活中。
温控电风扇可以根据环境温度自动调节电风扇启停与转速,在实际生活的使用中,温控电风扇不仅可节省宝贵的电资源,也大大方便了人们的生活和生产。
温控风扇是利用温度的变化控制风扇启停及转速的智能系统,在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产大型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智能CPU风扇等。
本文设计了基于单片机的温控风扇系统,采用单片机为控制器,利用温度传感器DS18B20作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803驱动风扇电机。
根据检测到的温度与系统设定的温度比较实现风扇电机的自动启动和停止,并能根据温度的变化自动改变风扇电机的转速,同时用LED八段数码管显示检测到的温度与设定的温度。
系统的预设温度的设置是通过两个独立按键来实现的,一个增大预设温度,一个减小预设温度。
关键词:
单片机;DS18B20;温控;风扇
ABSTRACT
Inlife,weoftenusetoelectricfan.Forexample,inthehotsummerpeopleuseelectricfantocool;inindustrialproduction,large-scalemachineryuseelectricfanforcooling.Butwhentheenvironmentaltemperaturechanges,artificialhardtotimelycontrolthespeedofthefan,isalsoverydifficulttoeffectivelyutilizevaluableresources.Withthedevelopmentoftechnologyoftemperaturecontrol,temperaturecontroltechnologyhasbeenfullymeetthemoderndailylifeandproductionrequirements,emergeasthetimesrequiretemperature-controlledelectricfanhasgraduallyenteredpeople'slife.Temperaturecontrolelectricfanaccordingtotheambienttemperatureautomaticregulatingelectricfanstart/stopandspeed,inreallifeuse,temperature-controlledelectricfannotonlycansavevaluableresources,alsobringsgreatconvenienceforpeople'slifeandproduction.
Temperaturecontrolfaninmodernsocietyproductionandpeople'sdailylifehaveawiderangeofapplications,Suchasindustrialproductionoflargemechanicalcoolingsystemoffan,nownotebookcomputeronawiderangeofapplicationofintelligentCPUfan.ThispaperintroducesthedesignofMCUbasedtemperaturecontrolfansystem,usingSCMasthecontroller,useoftemperaturesensorDS18B20asatemperatureacquisitioncomponent,andaccordingtothecollectedtemperature,throughaDarlingtonreversedrivingfanmotordriverULN2803.Accordingtothedetectedtemperatureandasettemperaturetoachievesystemcomparisonoffanmotorforautomaticstartandstop,andaccordingtotemperaturechangesautomaticallychangethefanmotorspeed,atthesametimewiththeLEDeightdigitaltubedisplaythedetectedtemperatureandasettemperature.Thepresettemperaturesetbytwoindependentbuttonstoachieve,Theoneincreasethepresettemperature,andtheanotheronereducedthepresettemperature.
Keywords:
singlechipmicrocomputer;DS18B20;temperaturecontrol;fan
第一章前言1
第二章整体方案设计2
2.1系统整体的设计2
2.2方案论证2
温度传感器的选择3
控制核心的选择3
温度显示器件的选择4
调速方式的选择4
第三章各单元模块的硬件设计6
3.1系统器件简介6
DS18B20单线数字温度传感器简介6
达林顿反向驱动器ULN2803简介6
AT89C52单片机简介7
LED数码管简介9
3.2电路设计10
开关复位与晶振电路10
独立按键连接电路11
数码管显示电路12
温度采集电路13
风扇电机驱动与调速电路14
电路总图15
第四章软件设计17
4.1程序设置17
主要程序代码18
4.2用KeilC51编写程序20
4.3用Proteus进行仿真21
Proteus简介21
本设计基于Proteus的仿真22
第五章系统调试26
5.1软件调试26
按键显示部分的调试26
传感器DS18B20温度采集部分调试26
电动机调速电路部分调试27
5.2硬件调试27
按键显示部分的调试27
传感器DS18B20温度采集部分调试27
电动机调速电路部分调试28
5.3系统功能28
系统实现的功能28
系统功能分析28
第六章结束语30
参考文献31
附录32
致谢34
第二章整体方案设计
2.1系统整体的设计
本设计的整体思路是:
利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给单片机AT89C52进行处理,在LED数码管上显示当前环境温度值以及预设温度值。
其中预设温度值只能为整数形式,检测到的当前环境温度可精确到小数点后一位。
同时采用PWM脉宽调制方式来改变直流风扇电机的转速。
并通过两个按键改变预设温度的大小,一个提高预设温度,另一个降低预设温度。
系统结构框图如图2-1所示。
图2-1系统构成框图
2.2方案论证
本设计需要实现风扇直流电机的温度控制,使风扇电机能根据环境温度的变化自动启动和停止以及转速的自动调节,需要比较高的温度变化分辨率以及稳定可靠的换挡停机控制部件。
温度传感器的选择
在本设计中,温度传感器的选择有一下两种方案:
方案一:
使用数字式的DS18B20集成温度传感器作为温度检测的核心元件,由其检测并直接输出数字信号给单片机进行处理。
方案二:
使用热敏电阻作为检测温度的核心元件,并通过运算放大器放大,由于热敏电阻会随温度变化而变化,进而产生输出电压变化的微弱电压变化信号,再经模数转换芯片ADC0809将微弱电压变化信号转化为数字信号输入单片机处理。
对于方案二,采用热敏电阻作为温度检测元件,有价格便宜,元件容易购的优点,但是热敏电阻对温度的细微变化不太敏感,在信号采集、放大以及转换的过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其自身对温度的变化存在较大的误差,虽然可以通过一定电路来修正,但这个不仅将使电路变得更加复杂,而且在人体所处环境温度变化过程中难以检测到小的温度变化。
故该方案不适合本系统。
对于方案一,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外界放大转换等电路的误差因数,温度误差变的很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温度分辨力极高。
温度值在器件内部转化成数字量直接输出,简化了系统程序的设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变的非常简洁,抗干扰能力强,因此该方案适用于本系统。
控制核心的选择
在本设计中采用AT89C52单片机作为控制核心,通过软件编程的方法进行温度检测和判断,并在其I/O口输出控制信号。
AT89C52单片机工作电压低,性能高,片内含8k字节的只读程序存储器ROM和256字节的随机数据存储器RAM,它兼容标准的MCS-51指令系统,单片机价格便宜,适合本设计系统。
温度显示器件的选择
方案一:
应用动态扫描的方式,采用LED共阴极数码管显示温度。
方案二:
采用LCD液晶显示屏显示温度。
对于方案一,该方案成本很低,显示温度明确醒目,即使在黑暗空间也能清楚看见,功耗极低,同时温度显示程序的编写也相对简单,因而这种方式得到了广泛的应用。
但不足的地方是它采用动态扫描显示方式,各个LED数码管是逐个点亮的,因此会产生闪烁,但由于人眼的视觉暂留时间为20ms,故当数码管扫描周期小于这个时间时,人眼不会感觉到闪烁,因此只要扫描频率设置得到即可采用该方案。
对于方案二,液晶显示屏具有显示字符优美,其不仅能显示字符甚至图形,这是LED数码管无法比拟的。
但是液晶显示模块的元件价格昂贵,显示驱动程序的编写也较复杂,从简单实用的角度考虑,本系统采用方案一。
调速方式的选择
方案一:
采用单片机软件编程实现PWM(脉冲宽度调制)调速方法。
PWM的英文全称是:
PulseWidthModulation的缩写,它是按一定的规律改变脉冲序列的脉冲宽度,一调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是以矩形波PWM信号,早控制时需要调节PWM波的占空比。
占空比是指高电平持续时间在一个周期时间内的百分比。
在控制电机转速时,占空比越大,转速就越快,若全为高电平,占空比为100%时,转速达到最大。
用单片机I/O口输出PWM信号时,有如下三种方法:
(1)利用软件延时。
当高电平延时时间到时,对I/O电平取反,使其变成低电平,然后再延时一定时间;当低电平延时时间到时,再对I/O电平取反,使其变成高电平,如此循环即可得到PWM信号。
在本设计中采用了此方法。
(2)利用定时器。
控制方法与
(1)相同,只是在该方法中利用单片机的定时器来定时进行高低电平的转变,而不是用软件延时。
但是此方法编程相对复杂。
(3)利用单片机自带的PWM控制器。
在STC12系列单片机中自身带有PWM控制器,但本系统所应用到的AT89C52单片机无此功能。
对于方案一,该方案能够直接实现对直流电机的无极调速,速度变化灵敏,但是D/A转换芯片的价格较高,与其温控状态下无极调速功能相比价格较高。
对于方案二,相对于其他用硬件或是软件相结合的方法实现对电机进行调速而言,采用PWM用纯软件的方法来实现调速过程,具有更大的灵活性,并大大降低了成本,能够充分发挥单片机的功能,对于简单速度控制系统的实现提供了一种有效的途径。
综合考虑选用方案二。
第三章各单元模块的硬件设计
系统主要器件包括DS18B20温度传感器、AT89C52单片机、五位LED共阴数码管、风扇直流电机,达林顿反向驱动器ULN2803。
辅助元件包括电阻、电容、电源、按键、拨码开关等。
3.1系统器件简介
DS18B20单线数字温度传感器简介
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。
DS18B20内部结构主要有四部分:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
其管脚有三个,其中DQ为数字信号端,GND为电源地,VDD为电源输入端。
达林顿反向驱动器ULN2803简介
本系统要用单片机控制风扇直流电机,需要加驱动电路,为直流电机提供足够大的驱动电流。
在本系统驱动电路中,选用达林顿反向驱动器ULN2803来驱动风扇直流电机。
ULN2803在使用时接口简单,操作方便,可为电机提供较大的驱动电流,它实际上是一个集成芯片,单块芯片可同时驱动8个电机。
每个电机由单片机的一个I/O口输出的为5V的TTL信号。
UNL2803由8个NPN达林顿晶体管组装而成,共18个引脚,引脚1~8分别是8路驱动器的输入端,输入信号可直接是TTL或是CMOS信号;引脚11~18分别是8路驱动器的输出端;引脚9为接地线,引脚10为电源输入。
当输入TTL信号为5V或CMOS信号为6~15V时,输出的最大电压为50V,最大电流为500mA,工作温度范围为0~70℃。
本系统选用的电机为12V直流无刷电机,可用ULN2803来驱动。
AT89C52单片机简介
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对片外存储器的读写数据。
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:
外部中断0输入,P3.3:
(外部中断1输入)
P3.4:
T0(计数器0计数输入),P3.5:
T1(计时器1外部输入)
P3.6:
(外部RAM写选通信号)P3.7:
(外部RAM读选通信号)
图3-1AT89C52单片机
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平状态。
ALE/:
地址锁存允许/编程线,当访问片外存储器时,在P0.7~P0.0引脚线上输出片外存储器低8位地址的同时还在ALE/线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。
在不访问片外存储器时,单片机自动在ALE/线上输出频率为1/6晶振频率的脉冲序列。
:
外部程序存储器ROM的选通信号。
在由外部程序存储器取指期间,每个机器周期两次有效。
但在访问外部数据存储器时,这两次有效的信号将不出现。
/VPP:
允许访问片外存储器/编程电源线,当保持低电平时,则在此期间允许使用片外程序存储器,不管是否有内部程序存储器。
当保持高电平时,则允许使用片内程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1和XTAL2:
片内震荡电路输入线,这两个端子用来外接石英晶体和微电容,即用来连接单片机片内OSC的定时反馈回路。
LED数码管简介
本系统选用五个LED数码管来进行温度显示。
LED又称为数码管,它主要有8段发光二极管组成的不同组合,其中a~g为数字和字符显示段,dp为小数点的显示,通过a~g这7个发光二极管点亮的不同组合,可以显示0~9和A~F共16个数字和字母。
LED数码管可以分为共阴极和共阳极两种结构,如图3-2(a)和图3-2(b)所示。
共阴极结构把8个发光二极管阴极连接在一起,共阳极结构是把8个发光二极管阳极连接在一起。
通过单片机引脚输出高低电平,可使数码管显示相应的数字或字母,这种使数码管显示字形的数据称字形码,又称段选码。
数码管引脚a.共阴极b.共阳极
图3-2七段LED数码管
表3-1七段LED的段选码表
显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03FHC0H87FH80H106HF9H96FH90H25BHA4HA77H88H34FHB0HB7FH83H466H99HC39HC6H56DH92HD3FHA1H67DH82HE79H86H707HF8HF71H8EH
一个共阴极数码管接至单片机的电路,要想显示“7”,须a、b、c这3个显示段发光(即这3个字段为高电平)只要在P0口输入00000111(07H)即可。
这里07H即为数字7的段选码。
字形与段选码的关系见表3-1所示。
3.2电路设计
开关复位与晶振电路
在单片机应用系统中,出单片机本身需要复位以外,外部扩展I/O接口电路也需要复位,因此需要一个包括上电和按钮复位在内的系统同步复位电路。
单片机上的XTAL1和XTAL2用来外接石英晶体和微调电容,即用来连接单片机内OSC的定时反馈回路。
笨设计中开关复位与晶振电路如图3-3所示,当按下按键开关S1时,系统复位一次。
其中电容C1、C2为33pF,C3为10uF,电阻R2、R3阻值为10k,晶振频率为12MHz。
图3-3系统复位与晶振电路
独立按键连接电路
按键包括两个独立按键S2和S3,一端与单片,另一端接地,当按下任一键时,P1口读取低电平有效。
系统上电后,进入按键扫描子程序,以查询的方式确定各按键,完成温度初值的设定。
其中按键S2为加按键,每按一次,系统对最初设定值加一,按键S3为减按键,每按下一次,系统对初定值进行减一计算。
其连线图如图3-4所示。
图3-4独立按键连接电路
数码管显示电路
本设计制作中选用5位共阴极数码管作为显示模块,它和单片机硬件的接口如图3-5所示。
其中前3位数码管DS1、DS2、DS3用于显示温度传感器实时检测采集到的温度,可精确到0.1摄氏度,显示范围为0~99.9摄氏度;后2位数码管DS4、DS5用于显示系统设置的初值温度,只能显示整数的温度值,显示范围为0~99摄氏度。
5位数码管的段选a、b、c、d、e、f、g、dp线分别与单片机的P0.0~P0.7口连接,其中P0口需要接一10K的上拉电阻,以使单片机的P0口能够输出高低电平。
5位数码管的位选W1~W5分别与单片机的P2.0~P2.4口相连接,只要在P2.0~P2.4口任一位中输出低电平,则选中与该位相连的数码管。
图3-5数码管显示电路
温度采集电路
DS18B20数字温度传感器通过其内部计数时钟周期的作用,实现了特有的温度测量功能。
低温系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数,计数器预先设置有与-55℃相应的一个基权值。
如果计数器计数到0时,高温度系数振荡周期还未结束,则表示测量的温度值高于-55℃,被预置在-55℃的温度寄存器中的值就加1℃,然后这个过程不断反复,知道高温系数振