1、目录摘要1第一章 绪论21.1课题研究及应用前景21.2本设计任务主要要求2第二章 方案选择32.1温度传感器的选择32.2主控机的选择42.3显示电路52.4调速方式5第三章 系统硬件设计73.1系统总体设计73.2主控芯片介绍73.2.1AT89C51简介73.2.2AT89C51主要功能和系统参数83.2.3AT89C51单片机引脚说明93.2.4AT89C51单片机最小系统113.3DS18B20温度采集电路133.3.1DS18B20温度处理方法133.3.2DS18B20工作原理133.4其他电路143.4.1数码管驱动显示电路143.4.2风扇驱动电路153.4.3按键模块15第
2、四章 系统软件设计174.1主程序流程图174.2DS18B20子程序流程图184.3数码管显示子程序流程图194.4按键子程序流程图19第五章 系统调试215.1系统功能215.1.1硬件调试215.1.2系统实现的功能215.1.3系统功能分析21总结22致谢23参考文献24附录25附录1:protel原理图25附录2:系统PCB板图26附录3:源程序2730摘要在炎热的夏天人们常用电风扇来降温,但传统电风扇多采用机械方式进行控制,存在功能单一,需要手动换挡等问题。随着科技的发展和人们生活水平的提高,家用电器产品趋向于自动化、智能化、环保化和人性化,使得智能电风扇得以逐渐走进了人们的生活中
3、。智能温控风扇可以根据环境温度自动调节风扇的启停与转速,在实际生活的使用中,温控风扇不仅可以节省宝贵的电资源,也大大方便了人们的生活。本设计为一种温控风扇系统,具有灵敏的温度检测和显示功能,采用单片机AT89C51为核心控制器对风扇转速进行控制,使用温度传感器DS18B20检测温度数据,通过数码管显示实时温度,根据采集的温度,实现了风扇的自起自停。可由使用者设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇,控制状态随外界温度而定。关键词:单片机AT89C51;温度传感器DS18B20;数码管;电风扇第
4、一章 绪论1.1课题研究及应用前景近年来,虽然空调以其强大的制冷效果赶超过电风扇,但随着绿色生活,低碳生活意识的普及,空调的高耗电量、加剧温室效应、破坏臭氧层等弊端,使得低功耗低污染的电风扇仍有很大市场需求。传统电风扇采用机械方式进行控制,大部分只有手动调速,功能单一,存在隐患或不足。比如说人们常常离开后忘记关闭电风扇,浪费电且不说还容易引发火灾,长时间工作还容易损坏电器。对于夜间温差大的地区,人们在夏夜使用电风扇时可能遇到这样的问题:当凌晨降温的时候电风扇依然在工作,可是人们因为熟睡而无法察觉,既浪费电资源又容易引起感冒,传统的机械定时器虽然能够控制电风扇在工作一定后关闭,但定时范围有限,且
5、无法对温度变化灵活处理。为解决上述问题,我们设计了这套温控自动风扇系统。本系统采用高精度集成温度传感器,用单片机控制,能显示实时温度,并根据使用者设定的温度自动在相应温度时作出小风、大风、停机动作,精确度高,动作准确。它的广泛应用和普及将给人们的日常生活带来极大的方便,其发展趋势可根据其性质进行相应的改进可以运用与不同场合的温度监测控制,并带来大量的经济效益。1.2本设计任务主要要求本设计以AT89C51单片机为核心,通过温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。(1)风速有小风、大风、停机共3
6、个档位,可由用户通过按键设定。(2)每当温度低于下限值时,则电风扇风速关闭。(3)每当温度在下限和上限之间时,则电风扇转速缓慢。(4)每当温度高于上限值时,则电风扇风速全速运转。第二章 方案选择2.1温度传感器的选择温度传感器可由以下几种方案可供选择:方案一:选用热敏电阻作为感测温度的核心元件,通过运算放大器放大由于温度变化引起热敏电阻电阻的变化、进而导至的输出电压变化的微弱电压变化信号,再用AD转换芯片ADC0809将模拟信号转化为数字信号输入单片机处理。具体方案如图2-1图2-1 热敏温度采集电路方案二:采用热电偶作为感测温度的核心元件,配合桥式电路,运算放大电路和AD转换电路,将温度变化
7、信号送入单片机处理。此方案原理和方案一的原理大同小异,AD转换电路一样,就是模拟量输入的处理方式不一样,热电偶的还需要配合桥式电路,整体更加复杂点,但是此方案的测温范围更广。方案三:采用数字式集成温度传感器DS18B20作为感测温度的核心元件,直接输出数字温度信号供单片机处理。对于方案一,采用热敏电阻有价格便宜、元件易购的优点,但热敏电阻对温度的细微变化不敏感,在信号采集、放大、转换过程中还会产生失真和误差,并且由于热敏电阻的R-T关系的非线性,其本身电阻对温度的变化存在较大误差,虽然可以通过一定电路予以纠正,但不仅将使电路复杂稳定性降低,而且在人体所处温度环境温度变化中难以检测到小的温度变化
8、。故该方案不适合本系统。对于方案二,采用热电偶和桥式测量电路相对于热敏电阻其对温度的敏感性和器件的非线性误差都有较大提高,其测温范围也非常宽,从-50摄氏度到1600摄氏度均可测量。但是依然存在电路复杂,对温度敏感性达不到本系统要求的标准,故不采用该方案。对于方案三,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,温度误差很小,并且由于其感测温度的原理与上述两种方案的原理有着本质的不同,使得其温度分辨力极高。温度值在器件内部转换成数字量直接输出,简化了系统程序设计,又由于该传感器采用先进的单总线技术(1-WRIE),与单片机的接口变的非常简洁,抗干扰
9、能力强。2.2主控机的选择方案一:采用电压比较电路作为控制部件。温度传感器采用热敏电阻或热电偶等,温度信号转为电信号并放大,由集成运放组成的比较电路判决控制风扇转速,当高于或低于某值时将风扇切换到相应档位。方案二:采用单片机作为控制核心。以软件编程的方法进行温度判断,并在端口输出控制信号。对于方案一,采用电压比较电路具有电路简单、易于实现,以及无需编写软件程序的特点,但控制方式过于单一,不能自由设置上下限动作温度,无法满足不同用户以及不同环境下的多种动作温度要求,故不在本系统中采用。对于方案二,以单片机作为控制器,通过编写程序不但能将传感器感测到的温度通过显示电路显示出来,而且用户能通过键盘接
10、口,自由设置上下限动作温度值,满足全方位的需求。并且通过程序判断温度具有极高的精准度,能精确把握环境温度的微小变化。故本系统采用方案二。2.3显示电路方案一:采用数码管显示温度,动态扫描显示方式。采用LED数码管这种方案。虽然显示的内容有限,但是也可以显示数字和几个英文字母,在这个设计中已经足够了,并且价格比液晶字符式要低的多,为了控制设计制作的成本,在此设计中选用LED数码管显示。方案二:采用液晶显示屏LCD显示温度。显示用液晶字符式,可以用软件达到很好的控制,硬件不复杂,液晶字符显示器可以显示很丰富的内容,但是液晶字符式价格昂贵。对于方案一,该方案成本低廉,显示温度明确醒目,在夜间也能看见
11、,功耗极低,显示驱动程序的编写也相对简单,这种显示方式得到广泛应用。不足的地方是扫描显示方式是使数码管逐个点亮,因此会有闪烁,但是人眼的视觉暂留时间为20MS,当数码管扫描周期小于这个时间时人眼将感觉不到闪烁,因此可以通过增大扫描频率来消除闪烁感。对于方案二,液晶体显示屏具有显示字符优美,不但能显示数字还能显示字符甚至图形的优点,这是LED数码管无法比拟的。但是液晶显示模块价格昂贵,驱动程序复杂,从简单实用的原则考虑,本系统采用方案一。2.4调速方式方案一:采用变压器调节方式,运用电磁感应原理将220V电压通过线圈降压到不同的电压,控制风扇电机接到不同电压值的线圈上可控制电机的转速,从而控制风
12、扇风力大小。方案二:采用三极管驱动PWM进行控制。脉宽调制是按一定的规律改变脉冲序列的脉冲宽度,调节输出量和波形的一种调节方式,在PWM驱动控制的调节系统中,最常用的是以矩形波PWM信号,在控制时需要调节PWM波的占空比。占空比是指高电平持续时间在一个周期时间内的百分比。在控制电机转速时,占空比越大,转速就越快,若全为高电平,占空比为100%时,转速达到最大。对于方案一,由于采用变压器改变电压调节,有风速级别限制,不能适应人性化要求。且在变压过程中会有损耗发热,效率不高,发热有不安全因素。对于方案二,PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式
13、可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。故本系统采用方案二。第三章 系统硬件设计3.1系统总体设计本系统由集成温度传感器、单片机、LED数码管、三极管驱动电路及一些其他外围器件组成。使用AT89C51单片机编程控制,通过修改程序可方便实现系统升级。系统的框图结构如下:通过修改程序可方便实现系统升级。系统的框图结构如下:数码管驱动电路风扇驱动电路风扇复位电路温度采集电路单片机晶
14、振电路按键设置电路数码管显示图3-1 系统框图3.2主控芯片介绍3.2.1AT89C51简介AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存储数据存储器(RAM);器件采用ATMEL公司的高密度、非易失性存储技术生产;兼容标准MSC-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51可灵活应用于各种控制领域。具有以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向
15、量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。图3-2 AT89C51单片机引脚图3.2.2AT89C51主要功能和系统参数(1) 与MCS-51产品指令系统完全兼容(2) 4K字节可重擦写FLASH闪速存储器(3) 1000次擦写周期(4) 全静态工作:0Hz-24MHz(5) 三级程序存储器锁定(6) 1288位内部RAM(7)
16、 32个可编程I/O口线(8) 2个16位定时器/计数器(9) 6个中断源(10) 可编程串行UART通道(11) 低功耗闲置和掉电模式3.2.3AT89C51单片机引脚说明 VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1
17、口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在
18、FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能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(外部数据存储器写选通)P3.7 /RD(外
19、部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果
20、微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2.4AT89C51单片机最小系统最小
21、系统包括单片机及其所需的必要的电源、晶振、复位等部件,能使单片机始终处于正常的运行状态。电源、晶振等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用AT89C51单片机构成最小应用系统时,只要将单片机接上晶振电路和复位电路即可,结构如图3-3所示,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。时钟电路复位电路AT89C51I/0口图3-3 单片机最小系统原理框图1. 时钟电路在AT89C51单片机内部有一振荡
22、电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容选30pF,晶振频率选择12MHz。由石英晶体构成的振荡器产生的脉冲频率很稳定且速率很高,且电路简单。单片机时钟电路的设计原理图如图3-4所示图3-4 AT89C51内部时钟电路2. 复位电路复位是单片机的初始化操作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。AT89C51芯片的
23、第9脚RESET是复位信号的输入端,复位信号时高电平有效,有效时间应持续2个机器周期以上,若使用频率为12MHz的晶振,则复位信号持续时间超过2s才能完成复位操作。图3-5为上电自动复位电路,只要VCC上升时间不超过1ms,通过在VCC和RESET引脚之间加一个10F的电容,上电瞬间,电容充电电流最大,电容相当于短路,RESET端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RESET端为低电平,程序正常运行。图3-5 AT89C51复位电路3.3DS18B20温度采集电路3.3.1DS18B20温度处理方法DS18B20是美国DALLAS半导体器件公司推
24、出的单总线数字化智能集成温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因而使用DS18B20可使系统结构更趋简单可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。 3.3.2DS18B20工作原理DS1
25、8B20数字温度传感器采集现场温度,将测量到的数据送入AT89C51单片机的P1.6口,经过单片机处理后显示当前温度值,并与设定温度值的上下限值作比较,若高于设定上限值或低于设定下限值则控制风速进行调整。图3-6 DS18B20温度采电路3.4其他电路3.4.1数码管驱动显示电路本电路的显示驱动模块是由74HC573芯片来完成的,74HC573包含八路D 型透明锁存器,每个锁存器具有独立的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。本电路的显示模块主要由一个4位一体的7段LED数码管构成,用于显示测量到的温度及当前的档位。每一位
26、数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P0口产生的显示段码。S1,S2,S3,S4引脚端为其位选端,用于接收单片机的P2口产生的位选码。本系统采用动态扫描方式。扫描方式是把所有数码管的8个比划段ag和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。CPU从字段输出口送出字型码时,所有数码管接收到相同的字型码,但究竟是哪个数码管亮,则取决于COM端。COM端与单片机的I/O接口相连接,由单片机输出位位选码到I/O接口,控制何时哪一位数码管被点亮。在轮流点亮数码管的位扫描过程中,每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象,给
27、人的印象就是一组稳定显示的数码。动态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。具体原理图如图4-1所示图3-7 数码管显示电路3.4.2风扇驱动电路风扇的驱动采用的是两个三极管,三级管将信号放大,然后传输到风扇。下图是该模块电路:图3-8 风扇驱动模块3.4.3按键模块本设计选用独立式键盘接法,实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保持高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机
28、内部的上拉电阻使I/O口仍然保持高电平。在软件中通过软件延时来消除按键的机械抖动。图3-9 按键模块电路图第四章 系统软件设计4.1主程序流程图要实现根据当前温度实时的控制风扇的状态,需要在程序中不时的判断当前温度值是否超过设定的动作温度值范围。由于单片机的工作频率高达12MHz,在执行程序时不断将当前温度和设定动作温度进行比较判断,当超过设定温度值范围时及时的转去执行超温处理和欠温处理子程序,控制风扇实时的切换到关闭、弱风、大风三个状态。显示驱动程序以查七段码取得各数码管应显数字,逐位扫描显示。主程序流程图如图4-1所示。开始程序初始化调用DS18B20初始化函数调用DS18B20温度转换函
29、数调用温度读取函数调用按键扫描函数调用数码管显示函数调用温度处理函数调用风扇控制函数结束图4-1 主程序流程图4.2DS18B20子程序流程图先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。图4-2 DS18B20程序流程图4.3数码管显示子程序流程图程序实现的功能是将从DS18B20
30、读取的二进制温度值转换为七段码在LED上显示出来。显示方式采用的是动态扫描的方式,先给位选信号,再给段选信号,然后延时一下。具体流程图如图4-3第一位送位选给低第一位送形延时10ms显示第二位送位选给低第三位送位选给低第四位送位选给低第二位送形第三位送形第四位送形延时10ms显示延时10ms显示延时10ms显示结束图4-3 数码管显示电路流程图4.4按键子程序流程图硬件设计上为通过3个按键,由按键扫描子程序KEYSCAN子程序提供软件支持。按下一次设置键K1,进入温度上限设置,此时按下“加”键K2,加一,按下“减”键K3,减1。再按一次设置键K2,进入温度下限设置状态,此时按下“加”键K2,加
31、一,按下“减”键K3,减1。下限动作温度值TL和上限动作温度值的设置范围为10-100摄氏度,满足一般使用要求。再按一次设置键K3退出上下限温度设置状态。判断设置键是否按下设置按键按下延时去抖判断当前设置模式设置上限设置下限退出设置判断加、减键是否按下修改设置的阀值结束NYYN图4-4按键程序流程图第五章 系统调试5.1系统功能5.1.1硬件调试系统调试中为验证DS18B20是否能在系统板上工作,将手心靠拢或者捏住芯片,即可发现LED显示的前两位温度也迅速升高,验证了DS18B20能在系统板上工作。在本系统中风扇电机的转速可实现两级调速。通过温度传感器检测的温度与系统预设温度值的比较,实现转速
32、变换。当外界温度低于设置温度时,电机不转动或自动停止转动;当外界温度高于设置温度时,电机的转速升高或是自动开始转动。5.1.2系统实现的功能本系统能够实现单片机系统检测环境温度的变化,然后根据环境温度和设置的阀值来控制风扇直流电机输入占空比的变化,从而产生不同的转动速度,亦可根据键盘调节不同的设置温度,再由环境温度与设置温度的差值来控制电机。当环境温度低于设置温度时,电机停止转动;当环境温度高于设置温度时,单片机对应输出口输出不同占空比的PWM信号,控制电机开始转动,系统还能动态的显示当前温度和当前的档位,并能通过键盘调节当前的设置温度。5.1.3系统功能分析系统总体上由四部分来组成,即按键电
33、路、数码管驱动显示电路、温度检测电路、风扇驱动电路。首先考虑的是温度检测电路,该部分是整个系统的首要部分,首先要检测到环境温度,才能用单片机来判断温度的高低,然后通过单片机控制直流风扇电机的转速;其次是电机驱动电路,该部分需要使用外围电路将单片机输出的PWM信号转化为平均电压输出,根据不同的PWM波形得到不同的平均电压,从而控制电机的转速,电路的设计中采用了两个三极管组成复合管驱动,实现较好的控制效果;再次是数码管的动态显示电路,该部分的功能实现对环境温度和档位的显示,其中DS18B20采集环境温度,按键实现不同设置温度的调整,实现了对环境温度和档位的及时连续显示。总结本次毕业设计的课题为智能
34、温控风扇,本次课题是专业知识与实际很好的一次结合,为了更好的完成这次毕业设计,我们查阅了大量的关于温度控制类书籍、学术论文等相关资料。我们从一开始的无从下手到后来的慢慢理解,通过这中间的经历的确让我们学习到了很多。本次设计的系统以单片机为控制核心,以温度传感器DS18B20检测环境温度,实现了根据环境温度变化调节不同的风扇电机转速,LED数码管能连续稳定的显示环境温度和档位,并能通过三个独立按键调节不同的设置温度,从而改变环境温度与设置温度的差值,进而改变电机转速。实现了基于单片机的温控风扇的设计。本系统设计可推广到各种电动机的控制系统中,实现电动机的转速调节。在生产生活中,本系统可用于简单的
35、日常风扇的智能控制,为生活带来便利;在工业生产中,可以改变不同的输入信号,实现对不同信号输入控制电机的转速,进而实现生产自动化,如在电力系统中可以根据不同的负荷达到不同的电压信号,再由电压信号调节不同的发电机转速,进而调节发电量,实现电力系统的自动化调节。综上所述,该系统的设计和研究在社会生产和生活中具有重要地位。致谢本次毕业设计结束了,首先要衷心地感谢曹校长和田老师一直以来对我们的指导和帮助。正是在老师耐心的指导和热情的帮助下,我们才能顺利地完成这次毕业设计的任务。在这段时间里,老师严谨的治学态度和热忱的工作作风令我十分敬佩,老师的指导也是我受益匪浅。通过本次毕业设计,使我深刻地认识到学好专
36、业知识的重要性,也理解了理论联系实际的含义,并且检验了这四年的学习成果。虽然在这次毕业设计中对于知识的运用和衔接还不够熟练,但是我会在以后的工作和学习中继续努力,不断完善。这段时间的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了坚实的基础。参考文献1 金发庆. 传感器技术与应用北京: 机械工业出版社, 20082 李玉峰MCS-51系列单片机原理与接口技术北京:人民邮电出版社,20063 李朝青. 单品机原理及接口技术. 北京: 北京航空航天大学出版社, 20084 胡健单片机原理及接口技术实践教程北京:机械工业出版社,20105 陈跃东. DS18B20集成温度传感器原理与应
37、用. 安徽: 安徽机电学院学报, 20126 DALLAS公司. DS18B20数据手册7 张越, 张炎, 赵延军. 基于DS18B20温度传感器的数字温控器, 20118 郝振涛,张建北,江恒,乔曼. 家庭温度监控装置 P. 中国专CN201629819U, 2010-11-109 邹于丰,基于AT89C51单片机的温控器系列J.电子世界.2011年,第5期,P3910 张海龙. 基于单片机的风扇控制系统J. 网络与信息. 2009年, 第4期,P47附录附录1:protel原理图附录2:系统PCB板图附录3:源程序#include#include#define uchar unsigned
38、 char#define uint unsigned intsbit dj=P10;/电机控制端接口sbit DQ=P16;/温度传感器接口/按键接口/sbit key1=P35;/设置温度sbit key2=P36;/温度加sbit key3=P37;/温度减/sbit w1=P24;sbit w2=P25;sbit w3=P26;sbit w4=P27;/共阴数码管段选/uchar table22=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x38,0x76,0x
39、00,0xff,0x37;/-,L,H,灭,全亮,n 16-21uint wen_du; uchar gao,di;/pwmuint shang,xia; /对比温度暂存变量uchar dang;/档位显示uchar flag;uchar d1,d2,d3;/显示数据暂存变量void delay(uint ms)uchar x;for(ms;ms0;ms-)for(x=10;x0;x-);/*ds18b20延迟子函数(晶振12MHz )*/ void delay_18B20(uint i)while(i-);/*ds18b20初始化函数*/void Init_DS18B20() uchar x
40、=0; DQ=1; /DQ复位 delay_18B20(8); /稍做延时 DQ=0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us delay_18B20(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ uchar ReadOneChar()uchar i=0;uchar dat=0;for (i=8;i0;i-) DQ=0; / 给脉冲信号 dat=1; DQ=1; / 给脉冲信号 if(DQ) delay_18B20(4); return(dat);/*
41、ds18b20写一个字节*/ void WriteOneChar(uchar dat) uchar i=0; for (i=8;i0;i-) DQ=0; DQ=dat&0x01; delay_18B20(5); DQ=1; dat=1;/*读取ds18b20当前温度*/void ReadTemperature()uchar a=0;uchar b=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(100); / this message is wery importa
42、ntInit_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(100);a=ReadOneChar(); /读取温度值低位b=ReadOneChar(); /读取温度值高位wen_du=(b*256+a)4); /当前采集温度值除16得实际温度值void display()/显示温度w1=0;P0=tabled1;delay(10); /第1位P0=0x00;w1=1;delay(1); w2=0;P0=table16;delay(10);/第
43、2位P0=0x00;w2=1;delay(1);w3=0;P0=tabled2; delay(10);/第3位P0=0x00;w3=1;delay(1);w4=0;P0=tabled3;delay(10);/第4位P0=0x00;w4=1;delay(1);void zi_keyscan()/自动模式按键扫描函数if(key1=0)delay(10);if(key1=0)flag=1;while(key1=0);/松手检测while(flag=1)d1=18;d2=shang/10;d3=shang%10;display();if(key1=0)delay(10);if(key1=0)flag=2;while(key1=0);/松手检测if(key2=0)if(key2=0)shang+=5;if(shang=100)shang=100;while(key2=0);/松手检测if(key3=0)delay(10);if(key3=0)if(shang=95)xia=95;while(key2=0);/松手检测if(key3=0)delay(10);if(key3=0)xia-=1;if(xia=0)xia=0;