




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE35TOC\o"1-3"\u目录摘要 IIIAbstract IV第一章整体方案设计 11.1前言 11.2系统整体设计 11.3方案论证 21.3.1温度传感器的选择 21.3.2控制核心的选择 31.3.3温度显示器件的选择 31.3.4调速方式的选择 3第二章各单元模块的硬件设计 52.1系统器件简介 52.1.1DS18B20单线数字温度传感器简介 52.1.2达林顿反向驱动器ULN2803简介 52.1.3AT89C52单片机简介 62.1.4LED数码管简介 72.2各部分电路设计 82.2.1开关复位与晶振电路 92.2.2独立键盘连接电路 92.2.3数码管显示电路 102.2.4温度采集电路 112.2.5风扇电机驱动与调速电路 12第三章软件设计 143.1程序设置 143.2用KeilC51编写程序 143.3用Proteus进行仿真 153.3.1Proteus简介 153.3.2本设计基于Proteus的仿真 16第四章系统调试 214.1软件调试 214.1.1按键显示部分的调试 214.1.2传感器DS18B20温度采集部分调试 214.1.3电动机调速电路部分调试 214.2硬件调试 224.2.1按键显示部分的调试 224.2.2传感器DS18B20温度采集部分调试 224.2.3电动机调速电路部分调试 224.3系统功能 234.3.1系统实现的功能 234.3.2系统功能分析 23结论 24参考文献 25致谢 26附录1:电路总图 27附录2:程序代码 28摘要现代社会中,众多的工业生产、日常生活都离不开温控风扇的应用,其在工程建设的散热系统、手提电脑处理器降温等有着突出的作用。本命题对温控风扇系统进行了解释说明,单片机为其核心构成部分,通过温度传感器DS18B20获取温度信息,与系统设置的温度做比较,判断使用ULN2803电机做成的风扇系统对元件进行散热处理,同时能通过判断设定温度与采集温度的温差大小,来确定风扇系统的转速,采用LED八段数码管实现温度显示功能。关键词:单片机、DS18B20、温控、风扇AbstractInmodernsociety,manyindustrialproductionanddailylifeareinseparablefromtheapplicationoftemperature-controlledfans,whichplayaprominentroleinthecoolingsystemofengineeringconstructionandthecoolingoflaptopprocessors.Thispropositionexplainsthetemperature-controlledfansystem.Thesingle-chipmicrocomputerisitscorecomponent.ThetemperatureinformationisobtainedthroughthetemperaturesensorDS18B20,andcomparedwiththetemperaturesetbythesystem,itisjudgedthatthefansystemmadeofULN2803motorisusedtoheatthecomponents.Atthesametime,itcandeterminethespeedofthefansystembyjudgingthetemperaturedifferencebetweenthesettemperatureandthecollectedtemperature,andtheLEDeight-segmentdigitaltubeisusedtorealizethetemperaturedisplayfunction.Keywords:MCU,DS18B20,temperaturecontrol,fan第一章整体方案设计1.1前言在现代社会中,风扇被广泛的应用,在人民日常生活中的作用越来越大,无论是工程建设中的散热系统,还是电脑主机的散热功能,都离不开风扇的使用。由于科学技术的发展,低噪音、低耗能的风扇逐渐被推广,随着科技水平的智能化程度越来越高,如今的风扇的转速可以随着环境温度的变化而变化,同时当环境温度达到或者低于其设定值时,风扇可以自发启动或者停止,实现控制系统的智能化。目前单片机的应用愈加普及,一定程度上促进了温控系统的发展,通过单片机技术的运用,提升温控系统的智能性,实现风扇的自发启动与停止、风扇转速与环境温度相配合,提升风扇的智能化水平。这不仅给人民生活带来了便捷,提升工业生产质效,还避免了资源浪费,提升资源利用率。本命题介绍了8052系列单片机,其由ATMEL公司研发,以AT89C52作为主要控制器,通过DS18B20元件进行温度采集,进而通过ULN2803驱动风扇电机实现风扇转动。此外,通过LED数码管来显示出系统所采集的环境温度以及系统预设的温度,根据系统检测到得环境温度与系统预设温度的比较,实现风扇电机的自动启停以及转速的自动调节。1.2系统整体设计本产品的设计思路如下:通过温度传感器对环境温度进行温度采集,转化为数字信号输入AT89C52单片机,进而在八段数码管上显示出所采集的温度以及系统设定温度,分别精确到十分位与整数位。并且通过运用PWM脉宽调制法,实现电机转速随着环境温度的改变而改变。此外,为了方面预设温度的调整,设定两个按键来对预设温度进行升高或者降低。该系统运行流程图如下所示:DS18B20温度显示DS18B20温度显示独立键盘独立键盘ATAT89C52直流电机PWM驱动电路直流电机PWM驱动电路晶振复位晶振复位图1.1系统构成框图1.3方案论证为了提升风扇的智能化水平,本产品风扇电机能根据采集的环境温度是否达到预设温度,实现风扇电机的自发启动与停止,这对温控器件以及温度传感器元件的技术要求较高[1][1]李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:13—温度传感器的选择本产品的温度传感器有两种以下两者选择:A方案:温控系统的温度采集元件采用热敏电阻,随着温度的变化,配合运算放大器的使用,热敏电阻所产生的动态电压信号经过AD转换成数字信号,进而输入单片机进行下一步设置。B方案:温控系统的温度采集元件用DS18B20温度传感器,其将电压信号通过AD转换成数字信号输入温控系统。采用A方案选取热敏电阻作为核心,其优点是成本低,热敏电阻方便安装等,但其也有缺点,例如当温度产生微小变化时,热敏电阻的灵敏度低,变化不大,因此对温度采集过程会产生误差。同时,热敏电阻的电阻与温度之间的特性曲线非线性,其本身存在测量误差,可以通过外加电路进行校正,减少测量误差,但这会使温控系统复杂化,而且在人体所处环境温度变化过程中难以检测到微小的温度变化。因此,采用A方案缺乏便捷性以及精准性。采用B方案由于DS18B20型温度传感器的精确度高,对采集温度过程中很大程度上减少了测量误差,相比于热敏电阻,其灵敏度高,其内部可以直接把电信号转化为数字信号,减少了电路的复杂程度。通过单线总技术,让系统电路简单化,并且提升其自动控制水平,提升系统的精简性与智能性。B方案与系统要求相契合。1.3.2控制核心的选择本产品中的选取AT89C52单片机作为温控系统的核心元件,对其输入对应功能的代码,实现温度采集与判定,在输入输出端口中输出数字信号。这一单片机的优点包括性能完善、工作耗能小、存储器容量大等,相比于其它单片机,AT89C52的兼容性较强,购买价格便宜,非常契合系统的运行。1.3.3温度显示器件的选择A方案:选取LED八段数码管进行动态扫描。B方案:通过LCD显示屏体现温度信息。A方案的优点是采购价格低,耗能低,所显示出的温度即使在黑暗环境下也清晰可见,所植入的程序易理解,因此这类温度显示器得到了推广,普遍应用于人民的日常生活当中。由于它是通过动态扫描的方式来显示数字,只要显示间隔时间大于20MS,数字信息就能通过人眼采集,因此,设定适合的闪烁频率就可使用A方案。B方案的LCD液晶显示屏相比于LED数码管其所显示出的数字比较美观,除此之外还能显示多元化的字符以及图案。但其购买成本也相对较高。显示驱动程序的编写也较复杂,从简单实用的原则考虑,综合考虑,A方案比较适合本系统。1.3.4调速方式的选择A方案:选取DAC0832元件作为核心元件,采集到的环境温度输入此芯片,从而输出对应的模拟信号以控制晶闸管的导通以及关断时间,进而实现根据不同的温度自动调节风扇转速。B方案:选用脉宽调节法(PWM),通过输入编程代码实现对输入脉冲宽度的调节,进而调节输出波形,控制风扇转动速度。这种方法一般采取矩形波的脉冲信号,对脉冲宽度的调节时严格控制其占空比。PWM的占空比反映高电平脉冲在一个完整周期内所占的比例,高电平时间持续越长,电机转速就越高,当脉冲没有低电平时,风扇电机达到最大转速[2]蓝厚荣.[2]蓝厚荣.单片机的PWM控制技术[J].工业控制计算机,2010,23(3):97—98(1)通过软件对PWM高低电平进行延时处理。当高电平即将变成低电平时,通过软件处理,对I/O输出端口进行取反处理,使高电平变为低电平,同时增加延时时间;当低电平即将变成电平时,重复上述过程,不断循环处理便可输出PWM信号。这种方法比较契合本系统。(2)通过定时器的使用,与(1)中的控制方法相同,改变脉冲高低电平的延时时间,应用此方法时编程相对复杂。(3)利用单片机自带的PWM控制器。在STC12系列单片机中自身带有PWM控制器,但本系统所用到得AT89系列单片机无此功能。A方案能够的性能较好,其灵敏度高,环境温度变化时对应的风扇电机速度变化灵敏,但DAC0832芯片的购买成本高,对本系统的而言其性价比较低。B方案采用软件系统对风扇电机的转速进行调节,这种方法转变性比较强,相比于硬件系统其成本低,单片的功能的体现不亚于硬件系统,对于比较单一的控制系统而言,B方案比较适合。第二章各单元模块的硬件设计本设计的主要硬件包含:①型号为DS18B20的输出离散型号的数字温度传感器;②型号为AT89C52的CMOS8位单片机;③5位发光二极管封装的数码管显示器④风扇直流电动机;⑤型号为ULN2803驱动器。其他电子元器件包含:①多种不同阻值的电阻器;②多种不同电容量的电容器;③多个晶体振荡器;④各类电压源以及电流源;⑤多个按键;⑥多个DIP开关。2.1系统器件简介2.1.1DS18B20单线数字温度传感器简介DS18B20属于DALLAS公司开发的一款数字温度传感器产品,该产品性能稳定、体积紧凑、功率损耗低、适用范围广,能够采集环境的温度信息并以数字信号的形式进行输出。若在一些微观领域使用DS18B20进行温度的测量,则可以充分发挥它的功能。其工作特性如下:第一,可以对环境的温度信息进行捕捉,并将这些信息转化为离散的数字信号,信号的输出端仅设有一条线路,DS18B20在该线路上以串行通信的方式将数字信号传输于中央处理器CPU,在这个过程中,还可以进行循环冗余效验,保证了数据传输的准确性以及稳定性;第二,以摄氏度为单位,DS18B20的测温区间为[-55,125],在区间[-10,85]内,DS18B20可以控制在0.5摄氏度以内的测量误差;第三,DS18B20温度分辨率设有0.5℃9bits、0.25℃10bits、0.125℃11bits、0.0625℃12bits这4个级次,即最高采样位数为12bits,显示温度的最小变化量为0,0625摄氏度;第四,DS18B20“一线总线”的模式,可以实现使用一条线路与MPU进行半双工通信;第五,多个DS18B20可以连接于一根接线上,构成温度监测网络,对环境温度进行大范围的监测;第六,DS18B20工作时,以V为单位,其两段的电压值区间为[3.0,5.5][3]。它的内部包含4个核心器件:①64bits的只读存储器;②用于采集温度信息的传感器;③温度高位与温度低位的触发报警器④寄存器。DS18B20含有引脚(3个),其中DQ端用于输出数字信号,GND端用于接地,VDD端用于外接电源的输入。2.1.2达林顿反向驱动器ULN2803简介本文主要对基于单片机的温控风扇进行设计,电机在需要一定的驱动电流才能正常工作,因此需引入相应的驱动电路。本设计选取ULN2803作为电机工作电流的驱动器。反向驱动器ULN2803的硬件接口较少,可以简化系统开发者的安装操作流程,并为本系统的风扇直流电动机提供充足的工作电流,ULN2803的本质为CMOS器件中的接口型集成芯片,1~8脚为输入端,11~18脚为输出端,可集中驱动8路小型直流电机。在本系统中,AT89C52的8个I/O口与ULN2803的8路输入进行连接,输入TTL高电平,进而实现对8个相应电机的控制。ULN2803的内部由8路NPN达林顿管构成,并采用合适的形式进行封装,包含18个管脚,1脚至8脚为输入端口,可接收TTL电平以及CMOS电平;11脚至18脚为输出端口,可输出充足的电压以及电流;9脚为GND端,用于接地;10脚为供电输入端口,接正极电源。若在1~8脚中输入5V的TTL高电平或者输入6V至15V的CMOS高电平,那么对应的11~18脚最高输出电压可以达到50V,相应的电流可达500mA,以摄氏度为单位,ULN2803可正常运行的温度限值区间为[0,70],本设计将选取工作电压为12V的直流电机,因此ULN2803符合该电机的驱动条件。2.1.3AT89C52单片机简介AT89C52属于COMS8位单片机,由制作商爱特梅尔公司推出,是一款性能极佳、工作电压低的单片机产品。AT89C52的组件使用爱特梅尔的NVM技术制作,可兼容Intel8051系统,内部装有8bitsCPU、容量为8KB的ROM、容量为256B的RAM。AT89C52功能强大,适用于各种不同系统的开发,它含有40只管脚,对应的功能如下:VCC:作为供电输入端口,接5V电压。GND:用于接地端或0线。P0.7~P0.0:P0端共含有八只管脚,从P0.0至P0.7位数逐渐上升。P0.7~P0.0包含两种使用情况:①若AT89C52不连接外部存储器,且确保P0口功能的正常,则需要在P0的引出端中插入一个电阻并输入高电平,进而实现中央处理器通过P0端与外部设备进行数据交换以及信息传输的功能。②若AT89C52外部接有存储器,那么在中央处理器与外部存储器进行数据传输时,相应引脚会先传输外部存储器的低八位地址信号,再传输中央处理器对应的读写信息[4]。P1.7~P1.0:P1端包含了P1.7~P1.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,具备一般I/O端的功能,能够用于传输I/O信息,不同之处在于P1端内部预先插入了上拉电阻,因此P1端可直接通路使用。在使用AS语言进行编程时,可以通过P1端对AT89C52的EPROM的低八位地址信息进行输入。P2.7~P2.0:P2端包含了P2.7~P2.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,具备一般I/O端的功能,传送用户的输入/输出数据,此外,P2还能与P0.7~P0.0管脚的②功能配合使用,实现外接存储器高八位地址信号的传输功能,输出16位地址信号,进而协同选取外接存储器的存储元集合,不足之处在于,二者配合使用时无法输出中央处理器对外接存储器的读写信息。对于一些其他不同的51机,P2.7~P2.0脚还能够与P0.7~P0.0脚协同使用,输入单片机内部EPROM的高四位地址信号。P3.7~P3.0:P3端包含了P3.7~P3.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,在对P3端进行写1操作后,其将输出高电平。P3端具备一般I/O端口的功能,可以让CPU与外部设备进行数据的输入与输出,P3口也作为一些特殊功能端口使用,如下所示: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读选通信号)图2.1.1AT89C51单片机ALE/:地址锁存器允许/编程线,在访问片外存储器时在ALE/线上输出高电位脉冲,以及在引脚P0.7〜P0.0上的片外存储器的低8位地址。下降之后是片外存储器的低8位地址的锁存器到外部专用地址锁存器。为了释放P0.7〜P0.0引脚以传输后续的片外存储器读写数据。当读取片外存储器时,单片机自动进入ALE/线上输出频率为1/6晶振频率的脉冲序列。:是读取外部程序存储器的先通信号,CPU从外部获取指令时,在每个工作周期中两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。/VPP:允许访问片外存储器/编程电源线。程序存储器的选取是由电平状态决定的,当处于高电平状态时,只选用片内程序存储器;当处于低电平状态时,只选用外程序存储器。在固态存储器与动画编辑器工作过程中,经常性地使用12V编辑电压(VPP)。2.1.4LED数码管简介在本系统中,温度由五根LED管表示。LED管又名数码管,由八段具有发光功能的二极管组成,根据外界条件的变化,这八段具有发光功能的二极管可以组成成千上万种不同的组合。如下图2.1.2所示,其中标有字母a-g的二极管根据不同的发光组合可以用来表示数字0-9或字母A-F;标有dp的二极管则表示小数点。一般而言,LED管结构主要分为两类:①共阴极结构;②共阳极结构;如下图2.1.2(a)、(b)所示。两种结构不同的地方在于这八段二极管终端接连的差异。顾名思义,在共阴极结构中,八段二极管的终端都连接在阴极;在共阳极结构中,八段二极管的终端都连接在阳极。控制电平的高低状态可以使得二极管按照预先设定的组合发光,以此表示具体的数字组合或者字母组合,最终形成一段字形码,又称为段选码[5]。b.共阳极a.共阴极数码管引脚分配图b.共阳极a.共阴极数码管引脚分配图图2.1.2七段LED数码管表2.1.17段LED的段选码表显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03fHC0H87fH80H106HF9H96fH90H25bHA4HA77H88H34fHB0HB7fH83H466H99HC39HC6H56dH92HD3fHA1H67dH82HE79H86H707HF8HF71H8EH在采用共阴极结构的单片机中,给“a、b、c”三个二极管输入高电平时,即这三个二极管同时发光时就会显示数字“7”。其具体操作为在P0输入端输入段选码07(H),即00000111就可以显示数字“7”。其他数字与段选码的相互关系如上表2.1.1所示。2.2各部分电路设计2.2.1开关复位与晶振电路复位不仅在单片机中发挥着非常重要的作用,还在外部组成结构之一的I/O接口电路中发挥着至关重要的作用。因此,需要设计一个具有复位功能的开关,除此之外,该开关还需同步单片机系统和外部I/O接口电路,以此简化整个操作过程。另外,借助XTAL1和XTAL2引脚有利于确保石英晶体以及微调电容接触状态良好。按照以上方法设计的具有复位功能的开关示意图如图2.2.1所示。具体功能如下:当按触S1时,单片机系统进行复位,此时电容C1、C2、C3以及电阻R2、R3都参与了整个复位过程。图2.2.1系统复位与晶振电路2.2.2独立键盘连接电路该独立键盘拥有两个具有特定功能的按钮,分别为:S2和S3。其中S2和单片机系统的P13接口相接;S3和单片机系统的P14接口相接。当单片机系统通电并按下S2、S3任一按钮之后,P1处会显示实时的电平状态。此时可以通过按触两个按钮调节初始温度大小,S2按钮为减按钮,S3为加按钮,每一次按触的变化值都是单位1,按触后系统会计算出最终的初始温度值。其接线图如下:图2.2.2独立键盘连接电路2.2.3数码管显示电路 本设计制作中选用5位共阴极数码管作为显示模块,它和单片机硬件的接口如图2.2.3所示。其中温度的测量由显示模块中前3位数码管DS1、DS2、DS3显示,以摄氏度为单位,其可测量的温度值区间为[0,99.9],另外,在该测量范围内,其最终测量的温度精准度控制在±0.1℃。除此之外,初始温度值由后2位数码管DS4、DS5显示,而且改2位数码管有且仅有显示温度初始值得功能,其可显示的初始温度值区间为[0,99]。其各线路的衔接如下图2.2.3所示。通过观察下图,可以发现5位数码管借助a-g以及dp线与单片机相连接,其接口也是按照字母顺序对接单片机的P00-P07接口。除此之外,还需要给单片机P0接口处添加一个电阻为10K的电阻R,有利于精准地控制电平状态。图2.2.3数码管显示电路2.2.4温度采集电路内部计数时钟周期是DS18B20温度转换器的技术核心,当内部计数时钟周期正常运作时,DS18B20温度转换器才具有测量温度的功能。通过高温系数振荡器产生的门周期对低温系数振荡器输出的时钟信号进行计数。除此之外,还在该计数器中预先设定一个与-55℃对应的权数值。以该权数值作为界限,若当计数器输出结果为0时,高温系数振荡器还处于震荡状态,则表明此次测量的温度大于-55℃,此时原先存在在显示屏的温度值就会加1℃。重复以上过程直至高温系数震荡器停止震荡,该时显示屏显示的数值为温度的测量值。除此之外,该数值会被换算为16位二进制的表示形式储存在内部存储器。当需要读取温度测量值时只需要向系统输入相关指令[6]。单片机有利于DS18B20温度转换器实现其测量温度的功能。因此,在实际使用情况中,往往将DS18B20温度转换器的信号线与单片机的I/O线相连接。除此之外,单片机的I/O接口还可以同时与多个DS18B20温度转换器相连接,提高单片机的使用效率,有利于测量多点温度值[7]。其具体连接模式如下图2.2.4所示:图2.2.4温度采集电路2.2.5风扇电机驱动与调速电路本系统由AT89C52通过I/O端进行PWM脉冲的输出,再使用ULN2803将输出的电流电压参数放大至适宜的值,ULN2083与电机链接并发挥驱动作用,最终使工作电压为12V的直流电机正常运作并实现电机转速的调控功能。通过PC机的如键盘等终端设备进行目标环境温度值的设定,并使用51机相关软件将目标温度控制值转化为AT89C52的操作指令,进而使AT89C52的1.7引脚输出用于调控电机转速的PWM脉冲,该脉冲在其电流电压参数由ULN2803放大后可用于对电机的控制电路进行驱动,通过这些流程后最终可实现风扇电机的启动、关停以及工作频率的自动化调控功能[8]。若外界的温度值上升,那么风扇的工作频率也将上升,随之转速上升;若外界的温度值降低,那么风扇的工作频率也将下降,随之转速降低;若外界温度低于目标温度值,那么风扇将停止运作;若外界温度高于目标温度值,那么风扇将重新运行,进而实现风扇电机转速根据环境温度的自适应调节功能。电机的驱动与控制电路见图2.2.5,从该图中可以清晰地看到VCC输入+12V直流电压至MOTOR-DC,同时MOTOR-DC与ULN2803的输出端OUT7管脚连接;ULN2803的输入端IN7管脚与AT89C52的TXD引脚相接,同时GND脚接地,COM口接+12V的VCC输入电压,此时AT89C52的TXD脚将输出PWM脉冲,通过ULN2803的放大作用实现对MOTOR-DC的启动、关停以及工作频率的调控功能。图2.2.5风扇电机驱动与调速电本设计选取了工作电压为12V的直流电机,若ULN28031的1~8脚输入5V的TTL高电平或者输入6V至15V的CMOS高电平,那么对应的11~18脚最高输出电压可以达到50V,相应的电流可达500mA,以摄氏度为单位,ULN2803可正常运行的温度限值区间为[0,70]。因为本设计采用了51系列单片机AT89C52,其I/O端输出TTL高电平,满足ULN2803的使用要求,所以能够选取ULN2803作为电机的驱动器件。第三章软件设计3.1程序设置采用主程序、DS18B20初始化函数、DS18B20温度转换函数、温度读取函数、键盘扫描函数、数码管显示函数、温度处理函数以及风扇电机控制函数等,这一部分都主要在程序设计部分进行操作与应用。采用DS18B20初始化函数完成对DS18B20的初始化;对环境温度的实时采集则选用了DS18B20温度转换函数;主机对温度传感器数据的读取及数据换算则采用了温度读取函数,依据需要完成初值的加减设定的要求选用了键盘扫描函数;而针对需要即完成将采集到的温度进行处理,选择温度处理函数,使得具备支持电机转速变化所需条件;鉴于需要依据温度的数值完成对电机转速及启停的控制则选用了风扇电机控制函数。具体流程图如图3.1.1:所示调用键盘扫调用键盘扫描函数主程序开始主程序开始调用数码管调用数码管显示函数程序初始化程序初始化调用温度处理函数调用温度处理函数调用DS18B20初始化函数调用风扇电机控制函数调用风扇电机控制函数调用DS18B20温度转换函数结束调用温度读结束调用温度读取函数图3.1.1主程序流程图3.2用KeilC51编写程序由美国KeilSoftware公司开发的KeilC5151软件系统,属于系列兼容单片机C语言类,与单片机汇编语言相比,C语言不仅在语句方面简单灵活,而且编写的函数模块可移植性强[9][9]谭浩强.C程序设计[M](第三版).北京:清华大学出版社.2005.37—65.事实上,随着单片机开发技术的日益迭代发展,市面上单片机的开发软件也早已呈现繁荣景观,同时在操作应用中,单片机的开发技术也有所转变,现基本已从早年常用的汇编语言转向高级语言,而其中,Keil软件则属于目前使用面积较广的一款MCS-51系列单片机开发软件。KeilC51软件具备非常多的优势,其主要优势有两点。第一它能提供非常丰富的库函数,这便使得在应用过程中大大节省了操作人员的时间,简化了工作步骤;二是KeilC51还具备强大的集成开发调试工具,优化了程序编辑调试,带来诸多便利,而以上这两点优势,完全在当需要开发大型软件时体现出高级语言的优势。关于Keil软件的使用,主要步骤大致分为三步,即先建立一个工程,再添加文件并编写程序,编写好程序之后最后再进行编辑调试。软件使用界面如图所示3.2.1。图3.2.1KeilC51软件的使用界面3.3采用Proteus进行仿真3.3.1Proteus简介Proteus软件是由英国公司Labcenterelectronics出品,是一款EDA工具软件,该款软件具备十多年的历史,其使用人数涵盖全球,深受世界各地的喜欢。该款软件的优势十分显著,不仅具有和其他EDA工具一样的原理布图、人工布线以及电路仿真功能,而且与其它软件不同的是,它的仿真电路还可以进行互动,甚至可以根据仿真进行实时观察从而验证设计的准确性并及时改变程序代码、原理图连接以及元件属性等。另外该款软件还能配合系统配置的虚拟仪器来显示和输出,例如示波器、逻辑分析仪等[10]孙号[10]孙号.Proteus软件在设计电子电路中的应用[J].仪表技术,2009,8:74—75Proteus有4个功能模块分别为智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的PCB设计平台。而Proteus的优势也十分显著,其内部元件库含有丰富的元件,能支持总线结构以及智能化的连线功能,此外它还能支持主流CPU(如ARM、8051/52、AVR)及其通用外设模型的实时仿真等,而这些优势能为单片机的开发与应用等带来极大的帮助。Proteus使用的主界面如图3.3.1。图3.3.1Proteus使用界面3.3.2本设计基于Proteus的仿真本阶段的主要操作具体为:启动Proteus软件,建立工程,依据原理图调出所需要的原件,按照要求改变各原件的属性,最后将各个原件按照原理图连接起来。在原理图绘制连接好之后,把编译好的程序加载到其中[11]楼俊军.[11]楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:第50页[12]王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J].IT技术,2006,20:10—11将温度传感器DS18B20的温度设置为26.4摄氏度,用键盘S2将调节系统预设的温度调节到22摄氏度。点击按钮,系统开始进行仿真,待一段数值时间稳定后再进行观察,记录风扇直流电机的转速,此时风扇直流电机的速转显示为+14.2r/s,如图3.3.2所示。图图3.3.2Proteus仿真效果图一使用DS18B20将温度设定为28,。4摄氏度,用键盘S2调节温度,将系统预设温度调节为22摄氏度。点击按键,系统开始仿真,待到一段时间稳定后再进行观察,此时记录数值,结果为+23.3r/s,如图3.3.3所示。使用温度传感器DS18B20将温度设定为28.4摄氏度,然后采用S2调节系统预设温度,将其设定为22摄氏度。点击开始键,系统立刻进行仿真,待一段时间数值稳定后再进行读数,此时记录直流风扇电机的转速,获得结果为+23.3r/s,如图3.3.3所示。图3.3.3Proteus仿真效果图二图3.3.3Proteus仿真效果图二温度传感器DS18B20的温度设置为33.4摄氏度,键盘S2调节温度,将系统预设温度调节为22摄氏度。点击按钮,启动系统仿真程序,待到一段时间稳定后再进行数值观察和记录,此时所观察到的直流风扇电机的转速为+32.0r/s,如图3.3.4所示。图图3.3.4Proteus仿真效果图三在上一步上述基础上,即33.4摄氏度的温度传感器和22摄氏度的系统预设温度条件下,用键盘S2调节系统预设温度到34摄氏度,此时得知系统预设温度高于温度传感器检测到的温度,观察到直流风扇电机的转速正逐渐变慢,直到最后转速归0,符合系统要实现的功能,如图3.3.5所示。图图3.3.5Proteus仿真效果图四通过上述仿真可以看到,直流风扇电机在系统所设定的温度一定的情况下,其电机的转速会随着环境温度即温度传感器检测到的温度的增加而增大。当环境温度低于系统预设温度时,风扇自动停止运转,此结果能够实现系统所设计的功能。当然,在此并没有实现风扇直流电机的无级调速,本系统实现的是电机在随环境温度变化的四个等级的速度变化,环境温度的变化在一定小范围内不会影响风扇电机的转速,只有超过了设定的某一界限时转速才会变化。第四章系统调试4.1软件调试4.1.1按键显示部分的调试首先,按照设计方案编写了系统程序:P0端口与数码管相连,P1端口与键盘接口相接,P2端口用于控制LED位码,用于控制键盘的使用功能和数码管的显示。此种情况下,编译没有出现错误,但在模拟调试中,数码管显示出现乱码情况,数码管上显示的设定温度不正确,通过按键调节设定温度时显示器上的温度并没有任何的变化。通过对每一个部件的查找和分析,发现键盘程序存在一定的问题,其发现键盘扫描程序并没有安装按键部件来防止防震。这是因为当键盘中的按键被按下或者松开时,因为惯性的原因按键均会出现一定程度的震动,致使单片机做出错误的判断,导致在按键条件决定温度时出现故障,甚至某种程度上使其不工作。为了解决此类问题则需要在按键扫描程序中增加消除抖动部分,即增加按键释放时的延迟判断,以确定按键是完全按下还是完全释放。数码管不能准确显示的主要原因是所有数码管段码都是通过P0端口传输的,而数码管屏幕认可的模式是动态扫描。然而,该系统程序中没有显示段码的寄存器,导致通过端口P0传输段码时产生混淆,无法识别正确的段码。这就是为什么有必要向系统添加一个连接或设置程序的段代码空间的原因。在键盘上加入防振程序,在数码管显示程序中加入保存段码的空间后,数码管没有出现乱码且可以正常显示,按键也可以正常工作且没有延迟现象发生,在模拟调试时取得了很好的效果。4.1.2传感器DS18B20温度采集部分调试由于数字温度积分传感器DS18B20集成度高,给软件设计和调试带来很大的方便。其体积小、能耗低、精度高,为检测仪器的精度和稳定性提供了支持和可能。软件使用P3.1端口作为数字温度输入端口,但必须在数字信号输入出现之前对其进行处理,因此这里有温度转换程序,此程序经过编程和软件设计之后可以实现对外部环境连续测温。但是也存在一定的问题,即由于硬件LED数量的限制,此处仅显示部分默认温度的整数部分。为了解决上述只显示整数部分的问题,一般在温度转换程序中为了准确的检测和显示温度中小数点后的数字,程序会将检测到的温度乘以10,然后将其作为三位整数进行数字处理,例如将28.5更改为285,这样的程序使编码变得更加简便,加快了编程的速度。4.1.3电动机调速电路部分调试在本设计中,使用了一个达林顿驱动器ULN2803来驱动直流发动机,它可以驱动八台发动机。直流电软件将端口设置为P3.1端口以输出不同形式的PWM波。达林顿驱动器ULN2803驱动直流发动机运行。通过软件的程序任务定义,在不同的温度下输出不同形式的PWM波,从而对直流通风机的发动机进行不同的控制。程序执行端口P3.1的PWM波形输出,当外部温度低于设定温度时,发动机不会自动旋转或停止;当外部温度高于设定温度时,发动机转速会自动增加或开始旋转。此外,当外部温度与固定温度之差较大时,发动机转速会较高,因此工作循环会增加。在该系统中,风扇的发动机转速可以达到四级调速。将温度传感器检测到的温度与系统温度的默认值进行比较,可以实现速度的转换执行。当检测到的温度比默认温度升高5摄氏度时,风扇的发动机转速升高一个阶段。4.2硬件调试4.2.1按键显示部分的调试系统的按键部分执行以下功能:按P1.3键,最后两个LED数字显示设定温度增加1℃的值;按中间的P1.4键,最后两个LED数字显示温度降低1℃的值。在调试过程中,当按键时间过长时,设定的温度值斌不是增加1℃或减少1℃的情况,而是在先增加之后减少几个值。经调查分析,造成这种情况的主要原因可能是增加按键释放时的延迟判断时间过长,故在此基础上有所改变,具体改进方法是适当增加按键释放时的相应延迟时间,但同时控制时间不宜太久,否则密钥将无效。系统显示部分执行以下功能:LED显示屏的前三位数字连续显示环境温度的全部包括整数部分和小鼠部分,最后两位LED数字显示按键设置所需的设计温度。LED显示效果非常好,可持续性很强。4.2.2传感器DS18B20温度采集部分调试将DS18B20芯片连接到P3.1端口。通过对应系统板右下角的三个端口,特别是VCC、P3.1和GND,芯片可以直接插入此插针上。这一步操作的目的是为了使后续操作更加简便。在系统调试中,为了验证DS18B20是否能在系统板工作,通过合上手掌或握住芯片进行检测。如果结果显示LED屏幕上的前两个数字的温度迅速上升,则表明DS18B20可以在系统板工作,反之则不能在系统班上工作。因DS18B20有三列,在调试过程中需要看每一列的对应位置是否正确,避免使芯片不能正常工作甚至烧坏如果连接了芯片。4.2.3电动机调速电路部分调试电动机调速电路部分的调试重点在于调试相关软件的设计开发,因为该电路部分外侧的电路主要用于将外界接收的PWM信号放大而驱动电机转动。一般情况下在P3.1端口设置在系统软件,其目的是使电动机转动放大的PWM信号占空比。当外部温度高于设定温度时,发动机转速会自动增加或开始旋转,此时若用于提高温度的热源温度高于外界时且靠近测温芯片DS18B20时,发现发动机的转速会一直升高且速度越来越快,当发动机的转速达到一个临界值时转速将不再升高。当热源距离测温芯片DS18B20较远时,发动机的转速开始逐渐下降,当发动机的转速达到一个临界值且此时将设定的温度升高并高于环境温度时,发动机的转速变为0.此系统中的电机选用的是额定电压为12V的直流电机,驱动电路中选用的电源是输出电压最高值为5V的单片机电源。在调试过程中,采用原直流发动机5V进行调试,发现控制效果客观。4.3系统功能4.3.1系统实现的功能单片机系统可以用来检测环境中的温度变化,直流电机的流量循环变化可以通过环境温度的变化来控制,从而产生不同转速的效果和应用。同时,本系统可以根据键盘调节和设定不同的温度来控制发动机的转速。当环境温度低于设定的温度时,发动机停止转动;当环境温度高于设定的温度时,相应的单片机可以通过不同输出口输出并用不同占空比的PWM信号来控制发动机进行启动转动,发动机转速随着环境温度与设定温度的差值变化而变化,一般规律为差值越大转速越快。另外,系统还可以动态显示当前温度和设定温度,并通过键盘设定当前温度。4.3.2系统功能分析整个系统由按键和复位回路、数码管显示回路、温度检测回路和发动机驱动回路五部分组成。一是温度检测回路,是整个系统的重要部分,温度检测回路首先可以准确地检测出环境温度,然后利用单片机对温度进行评估,最后利用单片机控制直流故障发动机的速度。二是发动机驱动回路,这部分必须利用外围电路将单片机输出的不同的波形PWM以获得不同的平均输出电压,更好地控制发动机的速度,设计中采用了具有良好控制效果的达林顿变换驱动器ULN2803;三是数码管动态显示回路,该部分可以显示环境温度和设定温度,键盘部位可以调节设定温度而DS18B20可以测定环江温度,然后记录环境温度和设定温度并将其连续及时显示。结论本系统采用单片机为核心部位,以DS18B20温度传感器测定环境温度为基础组合可以具有不同转速的风扇发动机为一个整体,通过测定外界环境温度的变化来加快或减慢发动机的转速,并实现在一定的温度范围内转速的连续调节。LED数码管可以显示周围环境温度,并可以通过键盘上的两个独立按键实现维持和稳定数码管不同设定温度的调整,这意味着数码管的温度是固定在不同的温度差值水平的。改变环境的温度和设定温度之间的差值可以进一步改变发动机的转速。了解本系统的发动机转速设计可以应用众多发动机的控制系统之中。它可以在日常生活中使用,使智能化风扇可以被广大消费者所使用,为生活提供便利。在工业化生产中,为了控制发动机的转速,可以改变输入信号的不同类型,降低生产自动化程度和生产压力及使用成本。例如,在能源系统中可以获得不同负载的不同电压信号,然后通过每个电压信号改变不同发电机的转速,从而确定发动机的转速,实现电力系统的自动化。该系统的设计和研究在工业生产和日常生活中起着重要的作用。参考文献[1]李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:13—15.[2]蓝厚荣.单片机的PWM控制技术[J].工业控制计算机.2010,23(3):97—98[3]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社.2009.342—344[4]胡汉才.单片机原理及其接口技术[M](第2版).北京:清华大学出版社.2004.49—77.[5]胡全.51单片机的数码管动态显示技术[J].信息技术,2009,13:25—26[6]李钢,赵彦峰.1-Wire总线数字温度传感器DSI8B20原理及应用[J].现代电子技术,2005,28(21):77—79.[7]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):278—280.[8]王会明,侯加林.智能电风扇控制器的研制[J].电子与自动化,1998,5(4):25—26.[9]谭浩强.C程序设计[M](第三版).北京:清华大学出版社.2005.37—65.[10]孙号.Proteus软件在设计电子电路中的应用[J].仪表技术,2009,8:74—75[11]楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:第50页[12]王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J].IT技术,2006,20:10—11[13]丁建军,陈定方,周国柱.基于AT89C51的智能电风扇控制系统[J].湖北工学院学报,2003,18(2):60—63.[14]王会明,侯加林.智能电风扇控制器的研制[J].电子与自动化,1998,5(4):25—26.[15]刘进山.基于MCS-51电风扇智能调速器的设计[J].广州:电子质量,2004,10(10):71.[16]YUQihao,CHENGGuodong,NIUFujun.Theapplicationofauto-temperature-controlledventilationembankmentinQinghai--TibetRailway[J].ScienceinChinaSer.DEarthSciences,2004,1(47):168—176.[17]YLai,Y,Wang.Three—dimensionalnonlinearanalysisfortemperaturecharacteristicofventilatedembankmentinpermafrostregions[J].ColdRegionsScienceandTechnology,2004,38(2):165—184.[18]ChengGuodong.Linearityengineeringinpermafrostareas[J].JournalofGlaciologyandGeocryology(inChinese),2001,23(3):213—217.[19]BSchneier.AppliedCrytography:Algorithms,andSourceCodeinC[J].NewYork:JoneWiley&Sons.1994.301—307.[20]Intel:BenjaminJun,PaulKocher.ThelntelRandomNumberGenerator[J].WhitePaperPreparedforlntelCorporation,April22,l999:4—5.附录1:电路总图附图1电路总图附录2:程序代码#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;sbitkey1=P1^3;sbitkey2=P1^4;sbitdianji=P3^1;floatff;uinty3;ucharshi,ge,xiaoshu,sheding=20,gaonum,dinum;ucharcodedispcode[]={//段码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetablel[]={//带小数点的段码0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchardispbitcode[]={//位选0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchardispbuf[8]={0,0,0,0,0,0,0,0};voidDelay(uintnum)//延时函数{ while(--num);}voiddigitalshow(uchara4,uchara3,uchara2,uchara1,uchara0){ dispbuf[0]=a0; dispbuf[1]=a1; dispbuf[2]=a2; dispbuf[3]=a3; dispbuf[4]=a4; P2=0xff; P0=dispcode[dispbuf[0]]; P2=dispbitcode[5]; Delay(1); P2=0xff; P0=dispcode[dispbuf[1]]; P2=dispbitcode[4]; Delay(1); P2=0xff; P0=dispcode[dispbuf[2]]; P2=dispbitcode[2]; Delay(1); P2=0xff; P0=tablel[dispbuf[3]]; P2=dispbitcode[1]; Delay(1); P2=0xff; P0=dispcode[dispbuf[4]]; P2=dispbitcode[0]; Delay(1);}voiddmsec(uintcount){ uinti; //1ms延时 while(count--) { for(i=0;i<125;i++){} }}voidtmreset(void){ DQ=0; Delay(90); //精确延时大于480us DQ=1; Delay(4); //90,4可以小范围变化}voidtmpre(void){ while(DQ); while(~DQ); Delay(4);}bittmrbit(void){ uinti; bitdat; DQ=0; i++; //i++;大概1us DQ=1; i++; i++; dat=DQ; Delay(8); return(dat);}uchartmrbyte(v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考语文让作文语言靓丽起来
- 空调器智能传感与物联网技术融合考核试卷
- 煤制合成气的环境友好型生产考核试卷
- 硅藻土纤维原料制备技术研究考核试卷
- 电池界面工程考核试卷
- 旅行的初一下册语文作文
- 泡沫塑料在交通工程中的应用考核试卷
- 电视量子点显示技术解析考核试卷
- 畜牧业智能化养殖技术考核试卷
- 上海高三语文作文
- 18《井冈翠竹》公开课一等奖创新教学设计
- 《企业绩效评价标准值(2023年版)》
- 江汉区2023-2024学年下学期期中八年级数学试卷(含答案)
- 2025届高考地理二轮复习:常见的天气系统 提升练习题(含答案解析)
- 《客至》课件 统编版高二语文选择性必修下册
- CNAS-CL02-A004:2018 医学实验室质量和能力认可准则在临床免疫学检验领域的应用说明
- 大学生旧物回收创业计划书
- 新苏教版一年级数学下册第四单元《认识20~99》全部教案(共3课时)
- 手术患者转运交接课件
- 铁路基础知识考试题库单选题100道及答案
- 艺校对舞蹈学生受伤免责协议书
评论
0/150
提交评论