基于51单片机的智能散热风扇设计9.86_第1页
基于51单片机的智能散热风扇设计9.86_第2页
基于51单片机的智能散热风扇设计9.86_第3页
基于51单片机的智能散热风扇设计9.86_第4页
基于51单片机的智能散热风扇设计9.86_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要基于51单片机的智能散热风扇的设计主要可以分为监测单元、控制单元和中央处理单元。本系统采用单片机STC89C52RC作为主控制器,采用数字型温度传感器DS18B20作为监测单元,主要就是采集温度数据,通过一系列的计算转化成实际温度数值。为了实时显示温度、速度等数据,使用了LCD1602液晶显示屏,通过这个不仅方便进行程序的调试,而且易于观察结果。使用外部EEPROM可以将温度限值进行保存,再次上电可以直接读取该数值不需要重新设置。对于外部的控制单元主要有键盘和红外一体化1308。它可以通过设定好按键控制速度,以及红外控制实现远程调节功能。其中可以自行设置温度限值,根据温度设置范围自动调节电

2、机转速,直流电机也可根据设定好的速度进行运行,方便可靠。关键词:单片机STC89C52RC;温度传感器DS18B20;LCD1602;红外接收头1308IIIABSTRACTThe design of intelligent heat radiation fan based on 51 single chip microcomputer can be divided into the monitoring unit, the control unit and the central processing unit. This system uses single chip microcompu

3、ter STC89C52RC as the main controller, using digital temperature sensor DS18B20 as the monitoring unit, the main is the acquisition of temperature data, through a series of calculations into the actual temperature value. For real-time display of temperature, speed and other data, the use of the LCD1

4、602 LCD screen, through this program is not only convenient to debug, but also easy to observe the results. External EEPROM can be used to save the temperature value, again on the power can be read directly from the value does not need to re set. The external control unit mainly has the keyboard and

5、 infrared integration 1308.It can be achieved by setting the key control speed, as well as infrared remote control functions to achieve. Which can set the temperature limit, according to the scope of the temperature automatically adjust the motor speed, DC motor can be set to run according to the sp

6、eed, convenient and reliable.Key words: single chip STC89C52RC; temperature sensor; LCD1602; DS18B20; infrared receiver head 1308 目录第一章 绪论11.1 引言11.2 选题的背景及意义11.3基于单片机的智能散热风扇设计要求及内容21.4本文的结构3第二章 单片机STC89C52RC芯片简介42.1 单片机的概述42.2单片机STC89C52RC的简介42.2.1 STC89C52RC芯片的引脚及性能42.2.2 增加的新功能7第三章 温度监测单元的元器件的选型8

7、3.1 温度传感器DS18B20概述83.1.1 特性83.1.2 引脚83.1.3 详细说明及运用93.2 DS18B20的内部处理顺序103.3 DS18B20命令集10第四章 硬件系统的设计及分析124.1 硬件系统的整体设计124.2 硬件的各个功能模块的设计与分析124.2.1 电源模块电路设计124.2.2 复位电路的设计134.2.3 晶振电路的设计144.2.4 温度采集电路的设计144.2.5 LCD1602液晶显示电路的设计154.2.6矩阵键盘和独立按键电路的设计164.2.7 EEPROM掉电保存电路的设计174.2.8 1308红外一体化电路的设计18第五章 软件系统

8、的设计与分析195.1软件系统的结构分析195.2 软件系统的程序设计195.2.1 主程序与中断程序195.2.2 温度传感器DS18B20的数据测量和处理子程序215.2.3 LCD1602液晶显示子程序225.2.4 按键扫描子程序235.2.5 基于IIC通信总协议的数据存取子程序255.2.6 1308红外接收信号读写子程序26第六章 PWM脉宽调制技术276.1 PWM脉宽调制技术简介276.2 PWM调节电压28第七章 温度监测及调节系统的调试307.1硬件系统调试307.1.1 Altium Designer 绘制电路原理图307.1.2 Altium Designer 绘制P

9、CB布线图317.1.3硬件调试具体过程327.2软件系统调试327.2.1 Keil uVision4 编程327.2.2软件系统调试具体过程347.3基于51单片机的智能散热风扇系统的联合调试35第八章 结论36致谢38参考文献39附录A:原理图40附录B:PCB图41第一章 绪论1.1 引言随着技术的发展革新,出现了许多的电器,人类的生活中也越来越离不开这些电器,而这些电器长时间使用也就会产生热量,如果散发出来的热量无法及时散发出去必然会烧坏器件导致设备不可使用,在这样的情况下,散热风扇也就随之发展起来,开始的时候也就是普通的风扇固定的转速其他不可调节,然而对于当代社会的发展,这已经完全

10、不能满足时代的要求,现在,新型的散热风扇都是智能化、人性化的多功能产品,不仅降低了功耗而且更加贴合人类的要求。对于基于单片机控制的智能散热风扇来说,更是以其特有的优势逐步占领市场。发展智能散热风扇已是必不可少的。1976年intel公司研制出的MCS48系列8位微处理器标志着单片机问世。现如今随着单片机的逐渐改进和发展,单片机已经完全渗透到我们生活中的各个领域,每个领域都可见到单片机的踪影。例如在生活方面,摄像机、全自动洗衣机、空调、冰箱等常见的家用电器以及使用广泛的智能IC卡等等;军事方面,飞机上的各种仪表、导弹火箭的装置等;工业方面,各种类型的零件加工机床,机器人,汽车中 保障系统等;医疗

11、方面,各种医疗器械、治疗仪器都有使用单片机。由此可见,单片机不仅发展及其神速,而且应用也极为广泛,成为生活中不可或缺的元素。1.2 选题的背景及意义随着科技的进步,工业自动化的发展,原先的散热风扇只有固定的调节档位已经不符合时代的要求。传统的散热风扇只是单纯的有散热的功能,其电机的转速也是固定的,不可调节转速,这样不能达到节能的要求。而且目前的技术产品都往自动化、智能化的方向发展,这也就要求设计中电机转速可以根据温度的高低自动调节达到节能的效果,并且不需要人对其进行实时的控制。 本毕业设计是基于生活中需要降温的要求,能够自动监测空间的温度的状况,并将数据传输给中央处理单元,控制电动机的运行从而

12、达到不同等级的散热功能。当温度超过限制时电机自动调节转速等级实现智能散热功能,而且可以外界控制温度限值以及电机转速的等级,数据过液晶显示屏显示出来。这个设计不仅符合时代的发展而且节约资源,增加了更多的功能如调节档位、显示温度等,相信这类的技术的发展会慢慢占领市场,逐步完善贴合人类的想法,真正实现自动化、智能化、人性化。1.3基于单片机的智能散热风扇设计要求及内容基于单片机的智能散热风扇的设计主要可以分为监测单元、控制单元和中央处理单元。由监测单元传感器DS18B20进行温度的采集,并将数据传输至中央处理单元进行处理显示,再由控制单元将调节的数据传输至中央处理单元进行处理并返回数据控制直流电机的

13、运行。其中,通过IIC通信总线协议将数据写入EEPROM中,实现断电后再次启动可读取上次的数据的功能。基于单片机的智能散热风扇设计的控制系统核心就在于使用的STC89C52芯片,通过温度传感器DS18B20对温度数据的实时采集,经过温度传感器内转换器转换成对应的二进制数存储在芯片的RAM中,在单片机发出温度读取命令时,温度传感器返回对应的参数值至中央处理单元。其系统框图如图1.1所示。液晶显示掉电保存温度传感器单片机STC89C52RC直流电机按键红外一体化 图1.1 系统功能框图监测单元要求的任务:1. 采集温度数据,通过单片机中央处理单元的处理,转换成实际的温度值;2. 实时对数据进行保存

14、;3. 准确的显示温度数值以及温度等级。控制单元要求的任务:1. 通过矩阵键盘或独立按键调节温度限值和电机转速;2. 远距离利用红外遥控来控制以上参数1.4本文的结构本文以监测温度实现自动化、智能化、人性化为背景,对基于51单片机的智能散热风扇系统进行了研究。全文一共分为八章,每章的主要内容特点如下:第一章简要的概括了基于51单片机的智能散热风扇的有关背景、特点以及意义;第二章介绍了单片机STC89C52RC的基本概念;第三章研究了基于单片机的散热风扇的硬件选取,对温度传感器各项性能指标以及原理进行分析,讨论了温度传感器数据的采集处理方法。第四章对基于单片机的智能散热风扇系统进行整体的分析,详

15、细的解读各个硬件模块并设计出电路;第五章对基于51单片机的智能散热风扇系统的软件方面加以分析,从每个模块着手编写程序,最后结合起来形成具体的系统;第六章讲述了PWM脉宽调制技术,详细描述了调节电压来控制速度;第七章详细介绍了如何使用Altium Designer 绘制电路原理图以及PCB图,利用Keil软件编写各个子程序并联合起来进行调试,以及解决调试过程中出现的问题;第八章对本设计进行了总结。第二章 单片机STC89C52RC芯片简介2.1 单片机的概述单片机是整个系统的控制中枢,其控制所有器件协调完成特定的功能。单片机是一种采用超大规模集成电路技术将中央处理单元CPU(由运算器和逻辑控制器

16、组成,不仅包括了中断系统而且也包含了部分外部特殊功能寄存器)、只读存储器ROM(用来存放程序以及一些原始数据和表格)、随机存储器RAM(可读写的数据存放在其中,掉电保存)、四个8位并行I/O口、两个定时/计数器等功能模块集成在一块硅片上的集成电路芯片。单片机就是一个小而完善的微机系统。现在社会中单片机的踪影到处可见,如生活中的空调、冰箱还有工业中各种仪器等。单片机的系列也十分多,而使用最为广泛之一的就是51单片机。通常在设计单片机硬件电路时都会将整个系统分为很多单独部分,每个部分实现一个特定的功能,先设计好各个模块,之后再将模块按逻辑合并成一个整体,这种模块化设计方法有利于降低系统设计的复杂性

17、,提高利用率。2.2单片机STC89C52RC的简介STC89C52RC芯片是一种8位运算的微控制器,具有功耗低、性能好等优点,它属于经典的MCS51内核,而且芯片中含有不需要取下芯片就可以直接烧写程序的Flash存储器,存储空间是8k,。STC89C52RC芯片的CPU是8位的,还有在系统可编程Flash,许多控制系统都会使用它,使用该芯片不仅灵活、高效,而且它的价格低廉、性能可靠、抗干扰能力强,有较广的应用范围。另外STC89C52有两种可选节电模式:掉电保护模式和空闲模式。前者是在掉电的情况下,RAM中内容不会丢失,在下一个中断、复位出现之前,单片机都是停止工作的;后者情况是CPU会暂停

18、一切工作,除此之外的一些部分还是正常工作的例如RAM、定时器/计数器等等。2.2.1 STC89C52RC芯片的引脚及性能STC89C52RC的功能有以下几点:8k字节程序存储空间;512字节数据存储空间;内带2k字节EEPROM存储空间;32个通用I/O口;3个定时器/计数器;外部中断4路,下降沿中断或低电平触发电路;通用异步串行口(UART);STC89C52RC是增强型的8051单片机,它的时钟/机器周期有6和12之分,这根据具体情况选择;它可分为3V和5V,本系统使用的是一个5V单片机,工作电压的范围在53.3V到5.5V之间;工作频率范围是040MHZ,实际工作频率可达到48MHZ;

19、有ISP(在系统可编程)/IAP(在应用可编程);看门狗(WDT)电路以及片内振荡器、时钟电路;。STC89C52RC芯片管脚概述:STC89C52RC单片机芯片共有40个引脚:4个I/O口P0、P1、P2、P3,共32个外部双向输入/输出口;控制口;电源和时钟。具备的功能:8KB Flash片内程序存储器,512B RAM,2KB EEPROM,1个通用异步串行口(UART),8个中断源,4个中断优先级,可编程计数/定时器有3个,除了上述功能还内带一些电路如看门狗(WDT)电路以及片内振荡器、时钟电路。芯片管脚具体如下图:图2.1 STC89C52RC芯片芯片管脚的说明:8位组成的P0口不仅

20、可以双向传输数据而且还可以输出低8位地址,它是漏极开路的I/O口,在四组I/O口中,也是唯一一组可以直接对外部存储器进行读和写操作。当端口写入“1”时,其被定义为高阻输入口;当它作为输出口使用时,可以驱动8个TTL逻辑门电路。在访问期间地址和数据分时复用时,内部的上拉电阻被激活。P0口在校验程序时,输出指令字节;接收指令字节是在Flash ROM编程时;其中,校验程序的时候必须要外接上拉电阻。P1口是标准的8位双向I/O口,专门供用户使用的。当端口写入“1”时,作为输入口使用;当它作为输出口使用时,可以驱动4个TTL逻辑门电路。P1口的内部带有上拉电阻,其会在作为输入端口使用时,将端口拉到高电

21、位,这时,外部信号将引脚拉低就会产生一个弱电流。P2口不被用来扩展外部存储器时,它的功能与P1口一致。P2口在系统扩展时使用,如果访问的外部数据存储器的数据存储地址是8位的,则P2口上的内容不变;如果访问的是16位地址,P2口可作为高8位地址线使用。P2口在flash编程、校验时也会接收高位地址以及一些控制信号。P3口是具有两种功能的I/O口。它的第一功能与P1口一样可以用于数据的双向传输,但是P3口除了作为一般的I/O口来使用,它还有第二功能用途,如表2.1所示。表2.1 P3口引脚的第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外中断0

22、)P3.3/INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6/WR(外部数据存储器的写选通道)P3.7/RD(外部数据存储器的读选通道)由表2.1可以看出P3口的每一位都可以独立的被定义,这些就是与其他口的不同之处。两个时钟引脚:XTAL1是内部时钟工作电路的输入和反相振荡电路的输入端;XTAL2是反相振荡电路的输出端。芯片的控制线有以下4根:RST(Reset)复位功能:要想实现对单片机的复位,就需要在WDT计时溢出后,RST引脚输出两个机器周期以上时间的高电平。若是要关闭此功能,可以对地址是8EH的特殊功能寄存器AUXR上的DISRTO位进行设置,若

23、对DISRTO位不做修改而是处于默认状态下,RST端输出高电平才能正常复位;ALE/PROG:当P0口访问外部存储器时,输出外部存储器的低8位地址,ALE就输出脉冲对该8位地址进行锁存。如果不访问,ALE还会输出正脉冲信号,该脉冲信号是按照六分之一的时钟振荡频率来输出的,所以它可用于定时。/PROG(片内EPROM编程脉冲)在片内EPROM编程期间输入编程脉冲;/EA(外部访问允许)。该引脚是用来选择访问内程序存储器和外程序存储器的,它是一个低电平有效的引脚,也就是EA端必须接GND(保持低电平),这样才允许CPU访问外部ROM(地址是0000H到FFFFH)。如果CPU要访问内部存储器,执行

24、内部ROM中的指令,则EA端应该接VCC(保持高电平)。如果加密方式设定为1时,复位时EA端状态会被内部锁存。电源引脚:VCC:芯片电源的输入端,接+5V;GND:接地。2.2.2 增加的新功能STC89C52RC兼容标准MCS-51指令系统,对与51单片机而言它增加的新功能有以下几点:1.一个全双工串行通信口UART;2.芯片内部增加了2KB EEPROM;3.中断源增加到8个,4个中断优先级;4.最高工作频率为33MHZ,而它的极限工作频率是48MHZ,其具有更高的工作频率,使得其拥有更快的计算速度;5.内部集成看门狗(WDT)计时器;6.全新的加密算法;7.向下完全兼容51系列产品。第三

25、章 温度监测单元的元器件的选型3.1 温度传感器DS18B20概述3.1.1 特性每一个DS18B20都有唯一的系列号,所以同一条单线总线上允许多个DS18B20存在,这也就有利于实现多点测温。为了使信号传输比较稳定,所以最多可以并联8个DS18B20使供电电源电压不会太低。它在小空间的工业设备、电缆线槽等工业领域都有广泛地应用,完成测温和控制。DS18B20输出、输入的信号都是通过单线接口进行传输的,所以DS18B20只需要一根线连接到单片机中央处理单元,外加接地。DS18B20的特性包含以下几点:1.独特的单线接口,只需一根线即可通信;2.不需要外部元件;3.数据线供电,不需要备份电源4.

26、具有多点能力,简化了分布式温度检测的应用;5.提供9位数字值的温度读数;6.测量范围在-55到+125之间,期间的增量值是0.5(等效华氏度范围:-67F +257F 增量值:0.9F);7.在1s(典型值)内可以将温度转换成数值8.应用范围包括家用电器、工业系统、任何热敏系统等。3.1.2 引脚引脚说明:GND 地DQ 单线运用的数据输入输出引脚VDD 可选的VDDNC 空引脚DNC 不连接3.1.3 详细说明及运用温度传感器DS18B20包括了3个主要部件:1. 温度灵敏元件;2. 64位光刻ROM:前8位是每个产品系列的自身编码,用连续数字表示的接下来的48位代表唯一系列号,还有8位是对

27、前几位的校验,通过光刻ROM这样就可以区分一根总线上的多个DS18B20;3. 存储器RAM:DS18B20的RAM有两种分别为可电擦除和高速暂存,其中,非易失性温度触发器TH和TL是在可电擦除RAM中。DS18B20使用的是单线接口,对于一线通信接口而言,ROM必须先被设置好,之后才能使用记忆、控制功能,所以首先主机必须提供以下五个ROM功能命令中的一个:Read ROM(读ROM);Search ROM(搜索ROM);Match ROM(符合ROM);Alarm Search(告警搜索);Skip ROM(跳过ROM)。这五种命令之一被执行完成后,由于是对每个器件的ROM操作,如果一线上存

28、在多个器件,就可以知道线上挂有多少设备以及挑选的器件类型是什么样的,这时存储器和控制器功能也可以使用了,主机在6种操作命令中选一个执行。指示DS18B20完成温度测量的就是其中一个控制器操作命令,在完成温度测量指令后,测量结果被放在内部高速暂存存储器中,并且可以发出阅读记忆功能的操作命令,就可以读取片上存储器的存储内容。工作原理分析:当温度变化时,高温度系数晶振的振荡率明显变化,其决定了门开通期,将高温度系数振荡器产生的脉冲作为计数器2的输入。DS18B20测量温度就是在门开通期间,对低温度系数晶振减法计数所经历的时钟周期。计数器1和温度寄存器设置的基数值应相对于-55,计数器1在门开通期间对

29、低温度系数晶振输出的脉冲进行计数,直到设定值减至为零温度寄存器就加一,在此基础对上述过程进行重复操作,当计数器2的设定值减至零,就可以得到测量的温度,该温度值就是温度寄存器中的值。在此过程中,斜率累加器电路的输出会对计数器1的预设值进行修正。因为测量温度不是线性进行的,而是非线性的,所以就需要斜率累加器对此过程进行修正,并补偿非线性,这样测量的温度具有高分辨率。所以,在确定了以上计数器的值以及斜率累加器的值,就可以得到相应的分辨率。DS18B20内部完成温度计算,提供的温度读数是二进制补码的,展现形式是16位的,前8位是符号扩展位,全为1时表示温度为负值,为0表示温度为正,对后8位值取原码,再

30、将二进制转换成十进制就得到了温度值。当温度以1/2LSB(最低有效位)形式表示时,产生的9位格式如下:MSB(最高有效位) LSB(最低有效位)111001110上面列出的是补码形式,计算得出的结果是-50,所以当温度以1/2LSB形式表示时结果就为-25。3.2 DS18B20的内部处理顺序经过单线接口访问DS18B20的顺序如下:1.初始化初始化是一切处理(如发复位脉冲、接收存在脉冲)的开端。2.执行ROM操作命令在初始化后,如果接收到器件的存在脉冲,主机就要执行8位的ROM功能命令。读ROM(33H):此命令只允许总线上存在一个从属器件,如果多个器件同时发送数据时就会出现数据冲突。“符合

31、”ROM(55H):要想对后继的存储器操作命令做出响应就必须与64位ROM序列严格相符才行,若不符则需等待复位脉冲。搜索ROM(F0H):主机可以通过此命令来识别总线上器件个数或从片的64位ROM编码。告警搜索(ECH):仅在最近一次测量温度高于TH或低于TL时,DS18B20才会对此命令做出响应。3.3 DS18B20命令集指令说明约定代码发出约定代码后单总线的操作注温度变换命令温度变换启动温度变换44h读温度“忙”状态1存储器命令读暂存存储器从暂存存储器读字节BEh读9字节数据写暂存存储器写字节至暂存存储器地址2和地址3处(TH和TL温度触发器)4Eh写数据至地址2和地址3的2个字节复制暂

32、存存储器把暂存存储器复制入非易失性存储器(仅地址2和地址3)43h读复制状态2重新调出E2把存储在非易失性存储器内的数值重新调入暂存存储器(温度触发器)E3h读温度“忙”状态读电源发DS18B20电源方式的信号至主机B4h读电源状态注:1.若器件在接收到温度变换命令之后从VDD引脚没有获取电源,则DS18B20的I/O引脚必须保持2s高电平,这样才能提供变换所需要的电源。2.若器件接收到复制暂存存储器命令之后未从VDD引脚取得电源,则I/O引脚必须保持10ms的高电平,这样才能提供复制过程所需的电源。第四章 硬件系统的设计及分析4.1 硬件系统的整体设计系统设计的重要部分之一就是硬件电路的设计

33、,硬件电路设计的正确性是软件正常工作的重要保证,一旦完成硬件的制作就很难进行修改,故此在设计硬件的时候要彻底的对各个部分进行原理分析,保证电路的正确性。在设计硬件电路要考虑到CPU的处理能力、I/O口的分配、存储容量及速度、电平要求等。基于51单片机的智能散热风扇系统的设计分为两部分:硬件部分和软件部分设计。硬件部分的设计包括电源模块电路、复位电路、晶振电路、温度采集电路、LCD1602液晶显示电路、矩阵键盘和独立按键电路、EEPROM掉电保存电路、AT24C02A红外一体化电路;软件部分包括主程序与中断程序、温度传感器DS18B20的数据测量和处理子程序、LCD1602液晶显示子程序、按键扫

34、描子程序、基于IIC通信总协议的数据存取子程序、AT24C02A红外接收信号读写子程序。单片机是整个系统的控制中心,控制各个模块完成特定的功能。硬件的设计采用模块化设计,这样降低了系统设计的复杂性,每个模块实现基本的特定功能,再将模块组合起来完成系统功能。4.2 硬件的各个功能模块的设计与分析4.2.1 电源模块电路设计系统平稳运行的前提和基础是电源模块的稳定可靠,要想设计的电子系统完整而又精致,那么为整个系统提供电源供电模块就是首要需要考虑的问题。应用范围最广、使用时间最早的51系列单片机在实际使用过程中,会出现一个典型的问题就是,容易受到干扰导致程序跑飞,为单片机系统配置一个稳定可靠的电源

35、供电模块就是克服这种现象出现的一个重要手段。通过计算机的USB口或使用外部稳定可靠的5V电源供电模块可以给电源供电模块供给电源。图4.1为电源电路设计图: 图4.1 电源电路图中的电源电路中接入了电源指示灯,SW1为电源开关,R1则为LED灯的限流电阻,防止电流过大烧坏LED灯,C1是电源的滤波电容。4.2.2 复位电路的设计一般单片机有两种复位方式:高电平、低电平复位。本设计设计的是高电平复位电路,如图4.2所示,进行复位操作,RST引脚被置为“1”,单片机复位有效;若在默认状态下RST端是低电平,这时单片机处于正常工作。图4.2所示的复位电路使用的就是阻容复位,当复位引脚端变为高电平时,该

36、高电平维持的时间要长达两个机器周期及以上。图4.2 复位电路复位端外接一个电容和一个电阻,电容的另一端与VCC想接,电阻的另一端与GND相连,这样连接起来就可以实现上电复位。接通电源,其中的电容进行充放电可以保证时间达到复位有效,设计采用的电容是10uf的电极性电容,电阻的大小为10k欧姆。除了上述的一些元器件,还增加了一个按键开关,与电容并联,可以实现按键复位。上述复位电路的工作原理是在接入+5V电源的情况下就可以完成上电复位,要想进行按键复位,则复位引脚端为高电平才能进行,所以要先按一下KW1,这个瞬间复位端被置“1”,并且通过对电容的充电,高电平会被保持一段时间,从而完成了复位功能;松开

37、按键时,电容就会放电使单片机恢复正常工作状态。4.2.3 晶振电路的设计晶振是单片机正常工作的重要因素之一,它也称为晶体振荡器。晶振的重要性就体现在它可以提供时钟源,而单片机系统执行所有指令就是以时钟源为基础的。单片机正常工作时,晶体振荡器提供的时钟频率和标准频率相一致;如果单片机没有正常工作,可能晶振引脚电压为0或5V而不是2V左右,这样就会导致晶振不能起振,从而单片机就不能工作。通常时钟频率越高,单片机执行指令的速度就越快。图4.3所示就是晶振电路,通过此电路单片机内部就可以产生时钟信号,从而控制单片机的运行。图4.3 晶振电路由图4.3可以看出,单片机的两个引脚(XTAL)外接两个22p

38、f的电容和一个晶振,与芯片内部电路相结合就可以实现自振荡。电路中采用电容就是为了稳定振荡频率,使其接近晶振频率。一般单片机所需的时钟源是由晶振电路与芯片内部的锁相环电路配合作用产生的,所以在晶振不变的情况下,连接不同的锁相环电路,就可以产生不同的时钟频率,这就能满足子系统不同的频率要求。4.2.4 温度采集电路的设计当温度变换发生时,I/O线上必须提供足够的功率才能使DS18B20完成准确的温度变换。若DS18B20的工作电流较小时,要使I/O线有足够的驱动能力,10k的上拉电阻是远远不足的。在此条件下有两种方法可以确保DS18B20在其有效变换期内得到足够的电源电流。第一种方法就是发生温度变

39、换时,用一个MOSFET把I/O线直接拉到电源上。在使用寄生电源方式时VDD引脚必须接到地。另一种方法是使用连接到VDD引脚的外部电源,如下图4.4所示,此方法不需要强上拉,换句话说,总线上主机在不向上连接的情况下,还能使线在温度变换期内保持高电平。需要注意的是接入外部电源工作时,GND引脚不可悬空。图4.4 温度传感器驱动电路4.2.5 LCD1602液晶显示电路的设计字符型液晶显示模块由字符型液晶显示屏(LCD)、控制驱动主电路及其扩展驱动电路,少量的电阻、电容等装配在PCB板上而成的。LCD1602的基本特点:1.液晶显示屏是以若干个5*8点阵块组成的,每个点阵块为一个字符位,字符行距和

40、间距都为一个点的宽度;2.具有可显示192中字符的字符发生器ROM;3.具有80个字节的RAM和64个字节的自定义字符RAM;4.由+5V电源供电。引脚功能:VSS是电源地;VCC是+5V逻辑电源;V0是液晶驱动电源;RS为1是数据,为0是指令;R/W为1是读操作,为0是写操作;E是使能信号;D0D7是数据总线。1602的驱动电路包括了三个部分:数据口、控制口和电源。RS端与P2.4口相连接,R/W端与P2.5相连,E端与P2.6相连,数据口与P0口的八位数据线相连接,1602液晶显示电路如图4.5所示:图4.5 LCD液晶显示屏驱动电路4.2.6矩阵键盘和独立按键电路的设计键盘是一种外部输入

41、设备,设计的单片机系统可以通过外部设备进行一系列的设置控制。键盘有两种形式分别为编码和非编码。一般情况下都会选用非编码的键盘,因为其硬件电路比较简单,成本较低;而编码键盘与之相反,虽然使用方便但电路复杂。接下来要介绍的就是其中的两种键盘分别为独立键盘、矩阵键盘。独立键盘的电路如图4.6.1所示,只有8个按键,每一个端口都有相对应的按键,开始端口都被赋予高电平,按下某个按键则对应的端口会被拉低,按此原理进行编程十分简易,但是按键比较少,应用的范围就受到限制,不及矩阵键盘使用广泛。图4.6.1 独立键盘电路矩阵键盘电路如图4.6.2所示,相对独立键盘电路比较复杂,编写的程序也比较繁琐,但同样利用了

42、8个端口却有16个按键可使用,这就大大提高了利用率。要判断是否有按键按下或按下的是哪个按键,就需要进行键盘扫描,对每一行按键扫描判读就可以得到准确的位置。图4.6.2 矩阵键盘电路4.2.7 EEPROM掉电保存电路的设计图4.7 AT24C02存储电路AT24C02芯片遵循IIC协议(总线数据传输协议),对数据进行传送,如图4.7所示电路就构成了一个串行EEPROM存储单元。该芯片的体积小,而且具有写保护功能,即掉电情况下,数据不会丢失而是被保存起来,再次上电可以通过I2C总线读取数据,所以它被广泛地运用。其中会利用I2C总线协议,不仅简单而且有效;除此之外,它的接口简单,这就使得I2C总线

43、不会占用大量的空间,不仅缩小了电路板空间还减少了芯片管脚,有利于降低互联网的成本。I2C总线工作原理:I2C总线可发送和接收数据,它是由时钟SCL和数据线SDA构成的串行总线。其可实现双向传递,在IC与IC之间以及CPU与被控IC之间,传送率最高可达到100kbps,并联在这条总线上的各种被控电路都有唯一的地址,在信息的传输过程中,按照所需要完成的功能来决定I2C总线上并接的每一模块电路是主控器、受控器或是发送器、接收器。4.2.8 1308红外一体化电路的设计图4.8 红外接收一体化电路红外线光谱是位于红色光之外,比红光的波长还长,波长范围是0.761.5um。红外遥控就是利用红外线进行信息

44、传递的一种控制方法,它有很多优点如抗干扰、功耗小、成本低等,而且电路简单,容易编码和解码。图4.8所示的红外一体化电路就是整个红外遥控系统中接收的部分,主要是将接收到的红外信号进行放大解调,还原成原始编码并转换为TTL信号,单片机对此进行识别就可完成一系列的控制。除了接收部分,还有调制和发射部分。遥控器中有红外发光二极管,红外线就是由此发射出去的;将发射的数据和载波进行“与”操作就完成了调制部分。一个完整的红外遥控系统都包括上述三个部分。第五章 软件系统的设计与分析5.1软件系统的结构分析基于51单片机的智能散热风扇系统的软件系统设计是基于Keil uVision4开发平台采用C51语言编写的

45、,在这种开放环境下,不仅可以缩短开发周期,降低开发成本,而且还使得程序易于调试和维护,除此之外还具有可靠性高,可读性及可移植性好等优点。软件调试完全正确后将程序写入单片机上电工作,温度传感器将当前的温度值转化成二进制传送给单片机,单片机将采集的数据进行计算获得当前实际的温度值,之后把温度值及温度限值、速度等级发送给1602液晶进行显示,也可将温度限值存储到AT24C02中以便再次上电时直接读取数据。设计一个完整的系统,通常先将其分成多个模块,对每个模块进行设计编程,这样不仅容易编写而且易于管理,此系统主要包括以下几个模块:1.主程序、中断程序;2. DS18B20对温度采集和处理的子程序;3.

46、LCD1602液晶显示子程序;4.按键扫描子程序;5.基于IIC通信总协议的数据存取子程序;6.1308红外接收信号读写子程序。5.2 软件系统的程序设计5.2.1 主程序与中断程序主程序是对所有模块程序的结合利用,先对每个器件进行初始化,包括各种中断初始化等,之后根据系统要求功能进行程序的调用整合。主程序按照程序逻辑进行子程序的调用与执行,实现对温度的采集和数据的处理,温度数据的存储,温度相关数据及速度等级的显示,监测单元与上位机通信等模块的集中控制。具体流程图如图5.1所示:开始系统初始化读取温度数据计算实际温度值显示温度相关数据及等级N是否给上位机发送数据Y发送数据 图5.1 主程序流程

47、图部分主程序:void main (void)Init_Timer1();TIM0init();/初始化定时器EX0init();/初始化外部中断LCD_Init();/初始化液晶显示屏DelayMs(20); /延时LCD_Clear();/清屏IRcvStr(0xae,4,displayscope,16); /读取存储数据.while (1) /主循环temperature=(float)temp*0.0625;/计算出温度值LCD_Write_String(0,1,displaytemp);/显示温度值LCD_Write_String(0,0,displayscope);/显示限值、等级

48、if(auto_flag = 1)PWM_Motor(temperature,temp_low,temp_high);/自动调节温度5.2.2 温度传感器DS18B20的数据测量和处理子程序时间片是用来处理数据位以及指定进行何种操作的命令字,使用时间片可以读出和写入DS18B20的数据。主机产生读时间片时就从DS18B20中读取数据,要产生读时间片就需要主机将数据线端置为“0”。在出现下降沿也就是高电平变为低电平的时候,读时间片开始,过了15us之后就可以判断I/O端上是高电平还是低电平,若是经历了15us低电平,之后数据线释放变为原来的高电平状态,则读“1”;若是仍然是低电平并维持了60us

49、,那么读“0”。所有时间片之间要求保证1us以上的恢复时间。流程图如图5.2所示:开始初始化18b20启动温度转换读取温度寄存器温度值计算结束 图5.2 温度采集子程序流程图温度读取程序:unsigned int r_temp()unsigned char l=0;unsigned int h=0;unsigned int t=0;DS18B20_Init ();w_char (0xCC);/跳过读序列号的操作w_char (0x44); /启动温度转换DelayMs(10);DS18B20_Init ();w_char (0xCC);w_char (0xBE);/读取温度寄存器l=r_cha

50、r ();h=r_char ();h=8;t=l+h;return(t);5.2.3 LCD1602液晶显示子程序在lcd1602液晶显示中,总共分为两行,第一行显示温度上限值、温度下限值和速度等级,第二行显示当前温度值。LCD液晶显示子程序设计流程图大致如下:开始LCD初始化LCD清屏设置行起始地址Y 字符是否为结束符设置另外行起始地址字符是否为结束符设置下个字符地址Y 设置下个字符地址结束 图5.3 液晶显示子程序流程图写入字符串函数程序:void lcd_w_s(unsigned char x,unsigned char y,unsigned char *s) if (y = 0)w_c

51、om(0x80 + x);ox80第一行开始elsew_com(0xC0 + x);while (*s)w_data( *s); s +;5.2.4 按键扫描子程序矩阵键盘的流程图:开始键扫描 键扫描N有键按下? 消除抖动键扫描消抖N确有键按下?求键值N键释放?等待键释放按键处理返回 图5.4 键盘驱动程序流程图键扫描就是判断有无键按下,当扫描到有按键按下时,下一步的处理才可正常进行,否则就退出键盘处理程序。独立键盘扫描只需要读取I/O口的状态就可以判断是哪个键被按下,而矩阵键盘需要对按键进行扫描才可判断,一般扫描方法有两种:逐行扫描法和线反转法。逐行扫描法:先从第一行开始,发送给改行一个低电

52、平信号,如果该行线所连接的键没有被按下,则所有列线端口得到的信号全都是高电平,反之有键按下的话,列线端口得到的信号不全为“1”,之后每一行都按上述操作进行直到最后一行。本系统设计的矩阵键盘就是使用逐行扫描的方法。线反转法虽然扫描速度比较快,但程序编写较为繁琐。先给行线上全是低电平信号,如果有键按下,此时读取的列线值中按键所在列上的值为“0”;之后就给列线全“0”信号,读取行线的输入值,行线连接按下键的值必为“0”,所以当一个按键被按下时,必定可以得到唯一的一对行列值,由此可以确定闭合键的位置。按键按下和松开的瞬间,由于这是机械动作,所以其输出电压会产生波动,考虑到此干扰,在键盘扫描程序设计中应

53、该进行按键消抖,使用的方法就是软件消抖法。软件消抖法就是采用延时(一般延时1020ms)的方法避免按键的抖动,直到按键已经稳定地闭合或断开,这时才读出其状态。读出的状态可以得到闭合键的键码,根据键码得到相对应的按键,便于之后的操作。矩阵键盘扫描程序:#define keyp1 P1unsigned char key_scan ()unsigned char keyval;keyp1 =0xf0;if(keyp1!=0xf0)/判断是否按下按键DelayMs(10); /去抖if(keyp1!=0xf0)keyp1 =0xfe; /扫描第一行if(keyp1!=0xfe)keyval = keyp1 &0xf0;keyval +=0x0e;while(keyp1!=0xfe);DelayMs(10); while(keyp1!=0xfe);return keyval;/检测以下几行将e改为d、b、7return 0xff;5.2.5 基于IIC通信总协议的数据存取子程序I2C总线在传送数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论