找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 41500|回复: 7
打印 上一主题 下一主题
收起左侧

基于51单片机的温控风扇设计论文下载

  [复制链接]
跳转到指定楼层
楼主
ID:328014 发表于 2018-7-24 01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机的温控风扇设计
摘要

在炎热的夏天人们用电风扇来降温;在工业生产中,大型机械用电风扇来散热等。随着温度控制的技术不断发展,应运而生的温控电风扇也逐渐走进了人们的生活中。温控电风扇可以根据环境温度自动调节电风扇启停与转速,在实际生活的使用中,温控风扇不仅可节省宝贵的电资源,也大大方便了人们的生活和生产。

本设计为一种温控风扇系统,具有灵敏的温度感测和显示功能,系统采用STC89C51 单片机作为控制平台对风扇转速进行控制。利用DS18B20数字温度传感器采集实时温度,经单片机处理后通过三极管驱动直流风扇的电机。根据采集的实时温度,实现了风扇的自起自停。可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。



目录
前 言
第1章 绪论
1.1 研究本课题的目的和意义
1.2 发展现状
第2章 整体方案选择
2.1 温度传感器的选用
2.2 主控机的选择
2.3显示电路
2.4调速方式
第3章 系统硬件组成
3.1 系统结构
3.2 主控芯片介绍
3.2.1 STC89C51简介
3.2.2 STC89C51主要功能和性能参数
3.2.3 STC89C51单片机引脚说明
3.2.4 STC89C51单片机最小系统
3.2.5 STC89C51中断技术概述
3.3 DS18B20温度采集电路
3.3.1 DS18B20 的特点及内部构造
3.3.3 DS18B20的工作原理
3.3.3 DS18B20的工作时序
3.4 数码管驱动显示电路
3.4.1 数码管驱动电路
3.4.2 数码管显示电路
3.5 风扇驱动电路
3.6 按键模块
第4章 系统软件设计
4.1 软件介绍
4.1.1 Keil C51
4.1.2 Protel99SE
4.1.3 Proteus
4.2 主程序流程图
4.3 DS18B20子程序流程图
4.4 数码管显示子程序流程图
4.5 按键子程序流程图
第5章 系统调试
5.1 软硬件调试
5.1.1 按键显示部分的调试
5.1.2 传感器DS18B20温度采集部分调试
5.1.3 风扇调速电路部分调试
5.2 系统功能
5.2.1 系统实现的功能
5.2.2 系统功能分析

结 论
谢 辞
参考文献
附 录
附录1:protel原理图
附录2:proteus仿真图
附录3:源程序
外文资料译文

前 言



在现代社会中,风扇被广泛的应用,发挥着举足轻重的作用,如夏天人们用的散热风扇、工业生产中大型机械中的散热风扇以及现在笔记本电脑上广泛使用的智能CPU风扇等。而随着温度控制技术的发展,为了降低风扇运转时的噪音以及节省能源等,温控风扇越来越受到重视并被广泛的应用。

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

本文设计了基于单片机的温控风扇系统,用单片机为控制器,利用温度传感器DS18B20作为温度采集元件,并根据采集到的温度,通过两个三极管驱动风扇电机。根据检测到的温度与系统设定的温度比较实现风扇电机的自动启动和停止,并能根据温度的变化自动改变风扇电机的转速档位,同时用LED八段数码管显示检测到的温度与当前档位。系统的预设温度的设置是通过三个独立按键来实现的,一个是设置按键,一个是增大预设温度,一个是减小预设温度。


第1章 绪论

1.1 研究本课题的目的和意义

生活中,我们经常会使用一些与温度有关的设备。比如,现在虽然不少城市家庭用上了空调,但在占中国大部分人口的农村地区依旧使用电风扇作为降温防暑设备,春夏(夏秋)交替时节,白天温度依旧很高,电风扇应高转速、大风量,使人感到清凉;到了晚上,气温降低,当人入睡后,应该逐步减小转速,以免使人感冒。虽然风扇都有调节不同档位的功能,但必须要人手动换档,睡着了就无能为力了,而普遍采用的定时器关闭的做法,一方面是定时时间长短有限制,一般是一两个小时;另一方面可能在一两个小时后气温依旧没有降低很多,而风扇就关闭了,使人在睡梦中热醒而不得不起床重新打开风扇,增加定时器时间,非常麻烦,而且可能多次定时后最后一次定时时间太长,在温度降低以后风扇依旧继续吹风,使人感冒;第三方面是只有简单的到了定时时间就关闭风扇电源的单一功能,不能满足气温变化对风扇风速大小的不同要求。又比如在较大功率的电子产品散热方面,现在绝大多数都采用了风冷系统,利用风扇引起空气流动,带走热量,使电子产品不至于发热烧坏。要使电子产品保持较低的温度,必须用大功率、高转速、大风量的风扇,而风扇的噪音与其功率成正比。如果要低噪音,则要减小风扇转速,又会引起电子设备温度上升,不能两全其美。为解决上述问题,我们设计了这套温控风扇系统。本系统采用高精度集成温度传感器,用单片机控制,能显示实时温度,并根据使用者设定的温度自动在相应温度时作出小风、大风、停机动作,精确度高,动作准确。



1.2 发展现状

当今社会已经完全进入了电子信息化,温度控制器在各行各业中已经得到了充分的利用。具有对温度进行实时监控的功能,以保证工业仪器,测量工具,农业种植的正常运作,它的最大特点是能实时监控周围温度的高低,并能同时控制电机运作来改变温度。它的广泛应用和普及给人们的日常生活带来了方便。   

温控风扇是用单片机系统来完成的一个小型的控制系统。现阶段运用与国内大部分家庭,系统效率越来越高,成本也越来越低。其发展趋势可以根据其性质进行相应的改进可以运用与不同场合的温度监测控制,并带来大量的经济效益。

第2章 整体方案选择                        
                        
                        
2.1 温度传感器的选用
                        
温度传感器可由以下几种方案可供选择:
                        
方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放大由于温度变化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用AD转换芯片ADC0809将模拟信号转化为数字信号输入单片机处理。具体方案如果2-1
                        
                                                        
                        
图2-1 热敏温度采集电路
                        
方案二:采用热电偶作为感测温度的核心元件,配合桥式电路,运算放大电路和AD转换电路,将温度变化信号送入单片机处理。此方案原理和方案一的原理大同小异,AD转换电路一样,就是模拟量输入的处理方式不一样,热电偶的还需要配合桥式电路,整体更加复杂点,但是此方案的测温范围更广。
                        
方案三:采用数字式集成温度传感器DS18B20作为感测温度的核心元件,直接输出数字温度信号供单片机处理。
                        
                                                        
                        
图2-2 DS18B20温度采电路
                        
对于方案一,采用热敏电阻有价格便宜、元件易购的优点,但热敏电阻对温度的细微变化不敏感,AD0809也只有8位,所以显示温度也只能显示到度,不能显示到小数。在信号采集、放大、转换过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其本身电阻对温度的变化存在较大误差,虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温度环境温度变化中难以检测到小的温度变化。故该方案不适合本系统。
                        
对于方案二,采用热电偶和桥式测量电路相对于热敏电阻其对温度的敏感性和器件的非线性误差都有较大提高,其测温范围也非常宽,从-50摄氏度到1600摄氏度均可测量。但是依然存在电路复杂,对温度敏感性达不到本系统要求的标准,故不采用该方案。
                        
对于方案三,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述两种方案的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术(1-WRIE),与单片机的接口变的非常简洁,抗干扰能力强。关于DS18B20的详细参数参看下面“硬件设计”中的器件介绍。
                        
                        
2.2 主控机的选择
                        
方案一:采用凌阳系列单片机作为系统的控制器,凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。
                        
方案二:采用单片机作为控制核心。以软件编程的方法进行温度判断,并在端口输出控制信号。
                        
因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案二。对于方案二,以单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示电路显示出来,而且用户能通过键盘接口,自由设置上下限动作温度值,满足全方位的需求。并且通过程序判断温度具有极高的精准度,能精确把握环境温度的微小变化。故本系统采用方案二。
                        
                        
2.3显示电路
                        
方案一:采用数码管显示温度,动态扫描显示方式。采用LED数码管这种方案。虽然显示的内容有限,但是也可以显示数字和几个英文字母,在这个设计中已经足够了,并且价格比液晶字符式要低的多,为了控制设计制作的成本,在此设计中选用LED数码管显示。
                        
方案二:采用液晶显示屏LCD显示温度。显示用液晶字符式,可以用软件达到很好的控制,硬件不复杂,液晶字符显示器可以显示很丰富的内容,但是液晶字符式价格昂贵。
                        
对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显示方式是使数码管逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20MS,当数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来消除闪烁感。
                        
对于方案二,液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点,这是LED数码管无法比拟的。但是液晶显示模块价格昂贵,驱动程序复杂,从简单实用的原则考虑,本系统采用方案一。
                        
                        
2.4调速方式
                        
方案一:采用变压器调节方式,运用电磁感应原理将220V电压通过线圈降压到不同的电压,控制风扇电机接到不同电压值的线圈上可控制电机的转速,从而控制风扇风力大小。
                        
方案二:采用三极管驱动PWM进行控制。
                        
对于方案一,由于采用变压器改变电压调节,有风速级别限制,不能适应人性化要求。且在变压过程中会有损耗发热,效率不高,发热有不安全因素。
                        
对于方案二,PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。故本系统采用方案二。

第3章 系统硬件组成


3.1 系统结构

本系统由集成温度传感器、单片机、LED数码管、三极管驱动电路及一些其他外围器件组成。使用具有价廉易购的STC89C51单片机编程控制,通过修改程序可方便实现系统升级。系统的框图结构如下:(见附件)

3.2.4 STC89C51单片机最小系统
                        
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。
                        
STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,结构如图2-3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
                        
                        
                        
                        
                        
图3-3 单片机最小系统原理框图
                        
1. 时钟电路
                        
STC89C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2-4所示。在STC89C51单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。
                        
                                                        
                        
图3-4 STC89C51内部时钟电路
                        
2. 复位电路
                        
当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。
                        
复位电路通常采用上电自动复位和按钮复位两种方式。
                        
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
                        
除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST(9)端与电源Vcc接通而实现的。按键手动复位电路见图2-5。时钟频率用11.0592MHZ时C取10uF,R取10kΩ。
                        
                                                        
                        
图3-5 STC89C51复位电路
                        
                        
3.2.5 STC89C51中断技术概述
                        
中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。
                        
图3-6为整个中断响应和处理过程。
                        
                                                        
                        
                        

                        
图3-6  中断响应和处理过程
                        
如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。
                        
                        3.3 DS18B20温度采集电路                        
DS18B20是美国DALLAS半导体器件公司推出的单总线数字化智能集成温度传感器。单总线(1-Wire)是DALLAS公司的一项专有技术,它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
                        
                        
3.3.1 DS18B20 的特点及内部构造
                        
特点如下:
                        
(1)采用独特的单总线接口方式,即只有一根信号线与控制器相连,实现数据的双向通信,不需要外部元件;
                        
(2)测量结果直接输出数字温度信号,以单总线串行传送给控制器,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
                        
(3)支持多点组网功能,多个DS18B20可以并联在唯一的三根线上,实现组网多点测量;
                        
(4)适应电压范围宽3.0-5.5V,不需要备份电源、可用数据线供电,温度测量范围为-55℃~125℃,-10℃~85℃时测量精度为±0.5℃;
                        
(5)通过编程可实现9~12位的数字值读数方式,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃,0.0625℃,实现高精度测温;
                        
(6)负压特性。电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
                        
封装图及内部构造,如下图3-7和3-8所示
                        
                                                        
                        

                        
图3-7 DS18B20外部结构框图
                        
                        
                        
3.3.2引脚功能介绍
                        
NC:空引脚,悬空不使用;
                        
VDD:可选电源脚,电源电压范围3~5.5V。工作于寄生电源时,此引脚应接地;
                        
I/O:数据输入/输出脚,漏极开路,常态下高电平。
                        
DS18B20采用3脚TO-92封装或8脚SOIC及CSP封装方式。图2-8所示为DS18B20的内部结构框图,它主要包括寄生电源、温度传感器、64位光刻ROM及单总线接口、存放中间数据的高速暂存器(内含便笺式RAM)、存储与控制逻辑、用于存储用户设定的温度上下限值的TH和TL触发器、结构寄存器、8位循环冗余校验码(CRC)发生器等八部分。
                        
                                                        
                        
图3-9 DS18B20的封装
                        
                        
3.3.3 DS18B20的工作原理
                        
64位ROM的结构如图3-10所示,开始8位是产品类型的编号;接着是每个器件唯一的序号,共48位;最后8位是前面56位的CRC检验码,这也是多个DS18B20可采用单线进行通信的原因。非易失性温度报警触发器TH、TL,可以通过编程写入用户报警上下线数据。
                        
                        
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPROM。
                        
高速暂存RAM的结构位9字节的存储器,结构如图2-12所示。前两个字节包括测得温度的信息。3、4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换频率,DS18B20工作时按此寄存器中的分辨率将温度转换成相应精度的数值。该字节各位的定义如图2-13,其低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在检测模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R2决定温度转换的精度位数,即用来设置分辨率,
                        
单片机可以通过单线接口读出该数据。的数据时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。
                        
表3-1是部分温度值对应的二进制温度表示数据。
                        
表3-1 DS18B20温度与表示值对应表
                        
                                
温度/℃
二进制
十六进制
+125
0000 0111 1101 0000
07D0H
+85
0000 0101 0101 0000
0550H
+25.
0000 0001 1001 0001
0191H
+10.
0000 0000 1010 0010
00A2H
+0.5
0000 0000 0000 1000
0008H
0
0000 0000 0000 0000
0000H
-0.5
1111 1111 1111 1000
FFF8H
-10.
1111 1111 0101 1110
FF5EH
-25.
1111 1110 0110 1111
FF6FH
-55
1111 1100 1001 0000
FC90H
                        

                        
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容对照,若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可以用多个DS18B20同时测得温度并进行报警搜索。
                        
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并与存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
                        
关于DS18B20的工作原理这里就不再多说,有感兴趣的可以查阅相关手册。
                        
DS18B20的编程指令
                        
DS18B20的指令有:读ROM(33H),匹配ROM(55H),跳过ROM(CCH),搜索ROM(F0H),报警搜索(ECH),稳定转换(44H),度暂存器(BEH),写暂存器(4EH),复制暂存器(48H),重调E2PROM(B8H),读供电方式(B4H)。关于这些指令,这里也不再一一介绍,只把本设计用到的用法说一下。
                        
CCH-跳过ROM指令。忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于一个从机工作。
                        
44H-温度转换指令。启动DS18B20进行温度转换,12位转换时最长为750ms(9位93.75ms)。结果存入内部9字节的RAM中。
                        
BEH-读暂存器指令。读内部RAM中9字节的温度数据。
                        
如图2-14所示,是DS18B20在电路中的接发,本设计采用的是单独电源供电方式,下面将介绍其工作时序,有工作时序图可以很清楚的知道该这样控制DS18B20。
                        
                                                        
                        
图3-11 DS18B20的工作电路
                        
                        
3.3.3 DS18B20的工作时序
                        
初始化时序,当主机将单总线P30从逻辑高拉到逻辑低时,即启动一个写时隙,所有的写时隙必须在60~120us完成,且在每个循环之间至少需要1us的恢复时间。写0和写1时隙如图所示。在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。时序图如图3-15所示。
                        
                        
图3-15 初始化时序图
                        
具体步骤如下:
                        
(1)将数据线置高电平1。
                        
(2)延时(时间应尽量短些)。
                        
(3)数据线拉到低电平0。
                        
(4)延时750 μs(该范围可以在480~960μs)。
                        
(5)数据线拉置高电平1。
                        
(6)延时等待。如果初始化成功则在15~60ms内产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。但是应注意,不能无限地等待,不然会使程序进入死循环,所以要进行超时判断。若CPU读到数据线上的低电平0后,还要进行延时,其延时的时间从发出高电平算起(第5)步的时间算起)最少要480μs。
                        
(7)将数据线再次拉置高电平1后结束。
                        
1.数据时序
                        
当主机将单总线P30从逻辑高拉到逻辑低时,即启动一个写时隙,所有的写时隙必须在60~120us完成,且在每个循环之间至少需要1us的恢复时间。写0和写1时隙如图所示。在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。时序图见图3-16所示。
                        
                        
                        
                        
                        
图3-16 写数据时序图
                        
具体步骤如下:
                        
(1)数据线先置低电平0。
                        
(2)延时确定时间为15μs。按从低位到高位的顺序发送数据(一次只发送一位)。
                        
(3)延时时间为45μs。
                        
(4)将数据线拉到高电平1。
                        
(5)重复(1)~(5)步骤,直到发送完整个字节。
                        
(6)最后将数据线拉高到1。
                        
2.读数据时序
                        
DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。在主机发起读时隙之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线的状态。时序图见图3-17所示。
                        
                        
                        
图3-17 读数据时序图
                        
具体步骤如下:
                        
(1)将数据线拉高到1。
                        
(2)延时2μs。
                        
(3)将数据线拉低到0。
                        
(4)延时6μs。
                        
(5)将数据线拉高到1。
                        
(6)延时4μs。
                        
(7)读数据线的状态得到一个状态位,并进行数据处理。
                        
(8)延时6μs。
                        
(9)重复(1)~(7)步骤,直到读取完一个数据。
                        
                        3.4 数码管驱动显示电路                        
                        
3.4.1 数码管驱动电路
                        
本电路的显示驱动模块是由74HC573芯片来完成的,74HC573包含八路D 型透明锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。
  当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。
  当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状态。

74HC573特性:
                        
(1)输入输出分布在芯片封装的两侧,为微处理器提供简便的接口
                        
(2)用于微控制器和微型计算机的输入输出口
                        
(3)三态正相输出,用于面向总线的应用
                        
(4)共用三态输出使能端
                        
(5)逻辑功能与74HC563、74HC373相同
                        
(6)遵循JEDEC标准no.7A
                        
(7)ESD保护
                        
                        
3.4.2 数码管显示电路
                        
本电路的显示模块主要由一个4位一体的7段LED数码管构成,用于显示测量到的温度及当前的档位。它是一个共阴极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P0口产生的显示段码。S1,S2,S3,S4引脚端为其位选端,用于接收单片机的P2口产生的位选码。本系统采用动态扫描方式。扫描方式是用其接口电路把所有数码管的8个比划段a~g和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。CUP从字段输出口送出字型码时,所有数码管接收到相同的字型码,但究竟是哪个数码管亮,则取决于COM端。COM端与单片机的I/O接口相连接,由单片机输出位位选码到I/O接口,控制何时哪一位数码管被点亮。在轮流点亮数码管的位扫描过程中,每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象,给人的印象就是一组稳定显示的数码。动态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。具体原理图如图3-18所示
                        
                                                        
                        
图3-18 数码管显示电路
                        
                        3.5 风扇驱动电路                        
风扇的驱动采用的是两个三极管,三级管将信号放大,然后传输到风扇下图是该模块电路:
                        
                                                        
                        
图3-19 风扇驱动模块
                        
三极管是电流放大器件,有三个极,分别叫做集电极C,基极B,发射极E。分成NPN和PNP两种。我们仅以NPN三极管的共发射极放大电路为例来说明一下三极管放大电路的基本原理。
                        
(1)电流放大
                        
下面的分析仅对于NPN型硅三极管。如上图所示,我们把从基极B流至发射极E的电流叫做基极电流Ib;把从集电极C流至发射极E的电流叫做集电极电流 Ic。这两个电流的方向都是流出发射极的,所以发射极E上就用了一个箭头来表示电流的方向。三极管的放大作用就是:集电极电流受基极电流的控制(假设电源 能够提供给集电极足够大的电流的话),并且基极电流很小的变化,会引起集电极电流很大的变化,且变化满足一定的比例关系:集电极电流的变化量是基极电流变 化量的β倍,即电流变化被放大了β倍,所以我们把β叫做三极管的放大倍数(β一般远大于1,例如几十,几百)。如果我们将一个变化的小信号加到基极跟发射 极之间,这就会引起基极电流Ib的变化,Ib的变化被放大后,导致了Ic很大的变化。如果集电极电流Ic是流过一个电阻R的,那么根据电压计算公式 U=R*I 可以算得,这电阻上电压就会发生很大的变化。我们将这个电阻上的电压取出来,就得到了放大后的电压信号了。
                        
(2)偏置电路
                        
三极管在实际的放大电路中使用时,还需要加合适的偏置电路。这有几个原因。首先是由于三极管BE结的非线性(相当于一个二极管),基极电流必须在输入电压 大到一定程度后才能产生(对于硅管,常取0.7V)。当基极与发射极之间的电压小于0.7V时,基极电流就可以认为是0。但实际中要放大的信号往往远比 0.7V要小,如果不加偏置的话,这么小的信号就不足以引起基极电流的改变(因为小于0.7V时,基极电流都是0)。如果我们事先在三极管的基极上加上一 个合适的电流(叫做偏置电流,上图中那个电阻Rb就是用来提供这个电流的,所以它被叫做基极偏置电阻),那么当一个小信号跟这个偏置电流叠加在一起时,小 信号就会导致基极电流的变化,而基极电流的变化,就会被放大并在集电极上输出。另一个原因就是输出信号范围的要求,如果没有加偏置,那么只有对那些增加的 信号放大,而对减小的信号无效(因为没有偏置时集电极电流为0,不能再减小了)。而加上偏置,事先让集电极有一定的电流,当输入的基极电流变小时,集电极 电流就可以减小;当输入的基极电流增大时,集电极电流就增大。这样减小的信号和增大的信号都可以被放大了。
                        
(3)开关作用
                        
下面说说三极管的饱和情况。像上面那样的图,因为受到电阻 Rc的限制(Rc是固定值,那么最大电流为U/Rc,其中U为电源电压),集电极电流是不能无限增加下去的。当基极电流的增大,不能使集电极电流继续增大 时,三极管就进入了饱和状态。一般判断三极管是否饱和的准则是:Ib*β〉Ic。进入饱和状态之后,三极管的集电极跟发射极之间的电压将很小,可以理解为 一个开关闭合了。这样我们就可以拿三极管来当作开关使用:当基极电流为0时,三极管集电极电流为0(这叫做三极管截止),相当于开关断开;当基极电流很 大,以至于三极管饱和时,相当于开关闭合。如果三极管主要工作在截止和饱和状态,那么这样的三极管我们一般把它叫做开关管。
                        
                                                        
                        
图3-20 三极管引脚介绍
                        
                        3.6 按键模块                        
单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。
                        
独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。
                        
在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10~200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。硬件电路如图3-21所示:
                        
                                                        
                        
图3-21 按键模块电路图
                        

第4章 系统软件设计
                        
                        
                        
4.1 软件介绍
                        
                        
4.1.1 Keil C51
                        
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。   Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 Keil_c软件界面如图4-1所示
                        
                                                        
                        
图4-1 Keil_c软件界面
                        
                        
4.1.2 Protel99SE
                        
Protel99SE是PORTEL公司在80年代末推出的EDA软件。Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。
                        
Protel99SE软件的特点:
                        
(1)              可生成30多种格式的电气连接网络表;
                        
(2)              强大的全局编辑功能;
                        
(3)              在原理图中选择一级器件,PCB中同样的器件也将被选中;
                        
(4)              同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络
                        
(5)              既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理图和PCB在设计上的一致性;
                        
(6)              满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5);
                        
(7)              支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层;
                        
(8)              强大的“规则驱动”设计环境,符合在线的和批处理的设计规则检查;
                        
(9)              智能覆铜功能,覆铀可以自动重铺;
                        
(10)提供大量的工业化标准电路板做为设计模版; Protel99SE的工作界面是一种标准的Windows界面,如图所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
                        
                                
                        
图4-2 Prtel99SE软件界面
                        
                        
4.1.3 Proteus
                        
Proteus是目前最好的模拟单片机外围器件的工具,可以仿真51 系列、AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI 器件,部分IIC 器件)
                        
Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
                        
  • Proteus 的工作过程
                        
运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。
                        
  • Proteus 软件所提供的元件资源Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。
  • Proteus 软件所提供的仪表资源
                        
对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus 软件包中,不存在同类仪表使用数量的问题。Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
                        
  • Proteus 软件所提供的调试手段
                        
Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。对于单片机硬件电路和软件的调试,Proteus 提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。
                        
对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation 菜单项或shift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。
                        
对于软件的分步调试,应先执行debug 菜单下的start/restart debugging 菜单项命令,此时可以选择stepover 、step into 和 step out 命令执行程序(可以用快捷键F10、F11 和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start / restart debuging 命令后,在debug 菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。
                        
                                                        
                        
图4-3 proteus软件界面
                        
                        
4.2 主程序流程图
                        
要实现根据当前温度实时的控制风扇的状态,需要在程序中不时的判断当前温度值是否超过设定的动作温度值范围。由于单片机的工作频率高达12MHz,在执行程序时不断将当前温度和设定动作温度进行比较判断,当超过设定温度值范围时及时的转去执行超温处理和欠温处理子程序,控制风扇实时的切换到关闭、弱风、大风三个状态。
                        
显示驱动程序以查七段码取得各数码管应显数字,逐位扫描显示。主程序流程图如图4-4所示。
                        
                        
                                                        
                        
图4-4 主程序流程图
                        
                        
4.3 DS18B20子程序流程图
                        
先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
                        
                        
图4-5 DS18B20程序流程图
                        
                        
4.4 数码管显示子程序流程图
                        
程序实现的功能是将从DS18B20读取的二进制温度值转换为七段码在LED上显示出来。显示方式采用的是动态扫描的方式,先给位选信号,再给段选信号,然后延时一下。具体流程图如图4-6
                        

                        
                                
图4-6 数码管显示程序流程图
                        
                        
4.5 按键子程序流程图
                        
硬件设计上为通过3个按键,由按键扫描子程序KEYSCAN子程序提供软件支持。按下一次设置键K1,进入温度上限设置,此时按下“加”键K2,加一,按下“减”键K3,减1。再按一次设置键K2,进入温度下限设置状态,此时按下“加”键K2,加一,按下“减”键K3,减1。下限动作温度值TL和上限动作温度值的设置范围为10-100摄氏度,满足一般使用要求。再按一次设置键K3退出上下限温度设置状态。
                        
                        
                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
图4-7 按键程序流程图
                        
                        
第5章 系统调试
                        
                        
                        
5.1 软硬件调试
                        
                        
5.1.1 按键显示部分的调试
                        
起初根据设计编写的系统程序:程序的键盘接口采用P3口,数码管显示采用P0口控制LED的断码,P2口控制LED的位码,从而实现键盘功能及数码管的显示。经过编译没有出错,但在仿真调试时,数码管显示的只是乱码,没有正确的显示温度,按键功能也不灵,当按下键时,显示会变化很多次。
                        
经过查找分析,发现键盘扫描程序没有没有按键消抖部分,按键在按下与松手时,都会有一定程度的抖动,从而可能使单片机做出错误的判断,导致按键条件预设温度时失灵,甚至根本不能正常工作。因此必须在按键扫描程序中加入消抖部分,即在按键按下与松手时加入延时判断,以检测键盘是否真的按下或已完全松手。
                        
数码管不能正确的显示,主要是因为所以数码管的段码都由P0口传送,而数码管显示又采用了动态扫描的方式,但在程序中却没有设置显示段码的暂存器,导致当P0口传送段码时发生混乱,不能正确识别段码。应在系统中加入锁存器,或是在程序中设定存储段码的空间。
                        
在键盘加入了消抖程序,数码管显示程序中加入了段码的存储空间后,数码管能够正常的显示,按键也能够工作,达到了较好的效果。
                        
                        
5.1.2 传感器DS18B20温度采集部分调试
                        
由于数字式集成温度传感器DS18B20的高度集成化,为软件的设计和调试带来了极大的简便,小体积、低功耗、高精度为控制电机的精度和稳定提供了可能。软件设计采用P1.6口为数字温度输入口,但是需要对输入的数字信号进行处理后才能显示,从而多了温度转换程序。通过软件设计,实现了对环境温度的连续检测,由于硬件LED个数的限制,只显示了预设温度的整数部分。
                        
在温度转换程序中,为了能够正确的检测并显示温度的小数位,程序中把检测的温度与10相乘后,再按一个三位的整数来处理。如把24.5变为245来处理,这样为程序的编写带来了方便。
                        
系统调试中为验证DS18B20是否能在系统板上工作,将手心靠拢或者捏住芯片,即可发现LED显示的前两位温度也迅速升高,验证了DS18B20能在系统板上工作。由于DS18B20为3个引脚,因此在调试过程中因注意其各个引脚的对应位置,以免将其接反而是芯片不能工作甚至烧毁芯片。
                        
                        
5.1.3 风扇调速电路部分调试
                        
在本设计中,采用了三极管驱动直流电机,软件设置了P1.0口输出不同的PWM波形,通过三极管的放大作用驱动直流电机转动,通过软件中程序设定,根据不同温度输出不同的PWM波,从而得到不同的占空比控制风扇直流电机。程序实现了P1.0口的PWM波形输出,当外界温度低于设置温度时,电机不转动或自动停止转动;当外界温度高于设置温度时,电机的转速升高或是自动开始转动。
                        
在本系统中风扇电机的转速可实现两级调速。通过温度传感器检测的温度与系统预设温度值的比较,实现转速变换。
                        
                        
5.2 系统功能
                        
                        
5.2.1 系统实现的功能
                        
本系统能够实现单片机系统检测环境温度的变化,然后根据环境温度和设置的阀值来控制风扇直流电机输入占空比的变化,从而产生不同的转动速度,亦可根据键盘调节不同的设置温度,再由环境温度与设置温度的差值来控制电机。当环境温度低于设置温度时,电机停止转动;当环境温度高于设置温度时,单片机对应输出口输出不同占空比的PWM信号,控制电机开始转动,系统还能动态的显示当前温度和当前的档位,并能通过键盘调节当前的设置温度。
                        
                        
5.2.2 系统功能分析
                        
系统总体上由四部分来组成,既按键电路、数码管驱动显示电路、温度检测电路、风扇驱动电路。首先考滤的是温度检测电路,该部分是整个系统的首要部分,首先要检测到环境温度,才能用单片机来判断温度的高低,然后通过单片机控制直流风扇电机的转速;其次是电机驱动电路,该部分需要使用外围电路将单片机输出的PWM信号转化为平均电压输出,根据不同的PWM波形得到不同的平均电压,从而控制电机的转速,电路的设计中采用了两个三极管组成复合管驱动,实现较好的控制效果;再次是数码管的动态显示电路,该部分的功能实现对环境温度和档位的显示,其中DS18B20采集环境温度,按键实现不同设置温度的调整,实现了对环境温度和档位的及时连续显示。

结 论

本次设计的系统以单片机为控制核心,以温度传感器DS18B20检测环境温度,实现了根据环境温度变化调节不同的风扇电机转速,LED数码管能连续稳定的显示环境温度和档位,并能通过三个独立按键调节不同的设置温度,从而改变环境温度与设置温度的差值,进而改变电机转速。实现了基于单片机的温控风扇的设计。

本系统设计可推广到各种电动机的控制系统中,实现电动机的转速调节。在生产生活中,本系统可用于简单的日常风扇的智能控制,为生活带来便利;在工业生产中,可以改变不同的输入信号,实现对不同信号输入控制电机的转速,进而实现生产自动化,如在电力系统中可以根据不同的负荷达到不同的电压信号,再由电压信号调节不同的发电机转速,进而调节发电量,实现电力系统的自动化调节。综上所述,该系统的设计和研究在社会生产和生活中具有重要地位。

谢 辞



毕业设计结束了,在这里,首先要衷心地感谢李志先老师一直以来对我们的指导和帮助。正是在他渊博的专业知识、严谨的科研作风的带动下,我们才能顺利地完成这次毕业设计的任务。在论文阶段,从选题到后来课件制作和论文撰写阶段,老师帮我耐心分析及细心的指导,时刻关心我毕业设计工作的进展,帮助我把握研究方向和解决研究中遇到的许多问题。使我能够顺利的完成论文工作,把自己的工作总结提炼出来。

在这次毕业设计中,这四年学得的大部分知识得到了充分的应用,以前没有完全掌握的难点得到了解决。同时,将理论和实践更好地结合起来,培养了我们实事求是的科学态度和严谨的作风,进一步提高了自己的自学能力。这对即将完全踏入社会的我们来说,是一个很大的收获。

最后,我要感谢洛阳理工学院,在这里,我们不但学到了丰富的专业知识和多方面的能力,更学到了如何做人处事。这将是我人生中一笔巨大的财富。在此,我向学校的每一位老师致以最真诚的谢意!并祝愿洛阳理工学院的明天更加的辉煌!

附 录                        

                        
附录1:protel原理图
                        
                        
                                                        
                        

                        
附录2:proteus仿真图
                        
                        
                                

完整的Word格式文档51黑下载地址(含源码):



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:553778 发表于 2019-6-12 23:01 | 只看该作者
你好,按键路程图为什么没有呢?
方便从新上传一下吗?
也可以直接回复我
谢谢!
回复

使用道具 举报

板凳
ID:555216 发表于 2019-6-13 02:26 | 只看该作者
这个好,不用定时了,直接一直开着风扇就好了,谢谢
回复

使用道具 举报

地板
ID:546381 发表于 2019-11-25 16:29 | 只看该作者
感谢分享,学习一下。黑色的是什么元件
回复

使用道具 举报

5#
ID:382819 发表于 2020-2-24 11:30 | 只看该作者
不错的资源 要是带全套仿真就更好了
回复

使用道具 举报

6#
ID:729128 发表于 2020-4-14 17:35 | 只看该作者
感谢楼主
回复

使用道具 举报

7#
ID:424725 发表于 2020-4-27 11:55 | 只看该作者
谢谢楼主分享!!!
回复

使用道具 举报

8#
ID:760739 发表于 2020-5-26 10:41 来自手机 | 只看该作者
没有程序图就很难了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表