毕业论文基于stc89c52的温控系统设计_第1页
毕业论文基于stc89c52的温控系统设计_第2页
毕业论文基于stc89c52的温控系统设计_第3页
毕业论文基于stc89c52的温控系统设计_第4页
毕业论文基于stc89c52的温控系统设计_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

学士学位毕业设计(论文)基于STC89C52的温控系统设计学生姓名:学 号: 指导教师: 所在学院:专 业:中国大庆2012 年 5 月摘要本论文介绍了一种以STC公司的“89C52单片机”为主要控制元件,通过DALLAS公司的DS18S20温度传感器测温的新型数字温度计。主要包括硬件电路的设计和系统程序的设计。硬件电路主要包括主控制器、测温电路和显示电路等,主控制器采用“单片机STC89C52”,温度传感器采用美国DALLAS半导体公司生产的“DS18S20”,显示电路采用4位共阳极LED数码管以动态扫描法直读显示。系统程序主要包括主程序、读出温度子程序、温度处理子程序、报警子程序、报警温度值设定子程序、LED 显示子程序等。此外,还介绍了系统的测试。本数字温度计设计采用美国DALLAS半导体公司推出的一种智能温度传感器DS18S20作为检测元件,测温范围为-55125,最大分辨率可达0.0625。主控制器采用单片机STC89C52,其集成度高,片内资源丰富,接口模块包括SPI、SCI、A/D、PWM 等。显示电路采用4 位共阳极LED 数码管,从P0口输出段码,列扫描用P2口来实现。由于采用了改进型智能温度传感器DS18S20 作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。DS18S20 温度计还可以在高温报警、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。关键词:单片机 主控制器 温度传感器 数字温度ABSTRACTThis thesis introduces a sort of controller bases on the principle of MCU, a new type of digital thermometer bases on temperature sensor DS18S20. This thesis mainly contains hardware circuit design and system program design. Hardware circuit mainly contains master controller, temperature detection circuit and display circuit, etc. master controller usesSTC89C52; temperature sensor uses DS18S20, which is produced by DALLAS semiconductor company, USA. Display circuit uses 4 bit common cathode LED nixie tube; it can directly read the result by dynamic scanning. System program mainly contains main program, read temperature subprogram, temperature treatment subprogram, LED display subprogram etc. In addition, it also introduces system test. This digital thermometer design uses a sort of intelligent temperature sensor DS18S20,which is produced by DALLAS semiconductor company, USA ,as a detecting element, temperature measuring range is -55125,the maximum resolution is 0.0625.Master controller usesSTC89C52 MCU, it is highly integrated, its internal resource is plentiful, its interface module contains SPI, SCI, A/D, PWM etc. Display circuit uses 4 bit common cathode LED nixie tube, its segment code output from P0, its column scan is realized by P2. By reason of using second generation intelligent temperature sensor DS18S20 as detecting element, compared with traditional thermometer, this digital thermometer decreased external hardware circuit, has the feature of low cost and inaccessible. DS18S20 thermometer can also be used in high temperature alert, distant multipoint temperature detection, etc, and has a bright future development.Key words: MCU Master controller Temperature sensor Digital thermometer目录摘要IABSTRACTII目录III前言VI1 绪论11.1温度控制系统设计的背景11.2温度控制系统设计的意义11.3温度控制系统完成的功能22 系统设计32.1系统功能32.2系统框图32.3单片机的介绍32.4 DS18B20的介绍82.5 LED数码管143 硬件设计173.1方案选定173.2单片机最小系统电路183.3 DS18B20测温电路193.4报警电路203.5 四位数码管显示电路203.6报警温度设定按键电路213.7 ISP程序下载接口电路213.8控制电路设计224 软件设计244.1程序流程图244.2开机数码管显示设置244.3 DS18B20采集温度程序254.4读取温度程序274.5显示温度程序285 调试过程305.1数码管显示乱码305.2 按键处理问题305.3 DS18B20时序问题30结论31参考文献32致谢34附录35前言温度是生活及生产中最基本的物理量,它表征的是物体的冷热程度。它不仅在很多生产过程中起着重要作用,也与我们的日常生息息相关,所以对温度进行控制是非常有必要和有意义的。随着现代信息技术的飞速发展,智能化已是现代温度控制系统发展的主流方向。温度测控技术包括温度测量技术和温度控制技术两个方面。在温度的测量技术中,接触式测温发展较早,这种测量方法的优点是:简单、可靠、低廉,测量精度较高,一般能够测得真实温度;但由于检测元件热惯性的影响,响应时间较长,对热容量小的物体难以实现精确的测量,并且该方法不适宜于对腐蚀性介质测温,不能用于极高温测量,难于测量运动物体的温度。非接触式测温是通过对辐射能量的检测来实现温度测量的方法,其优点是不破坏被测温场,可以测量热容量小的物体,适于测量运动温度,还可以测量区域的温度分布,响应速度较快。但也存在测量误差较大、结构复杂、价格昂贵等缺点。因此,在实际的测量中,要根据具体的测量对象选择合适的测量方法,在满足测量精度要求的前提下尽量减少人力和物力的投入。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。本文从硬软件两个方面介绍了基“STC89C52单片机”温度测量及控制系统的设计。系统硬件由控制电路、温度采集电路、键盘和LED显示电路组成。软件设计从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。最终通过DS18B20采集温度并显示出来,由此对环境的温度进行有效检测与报警。基本上满足了温度检测与报警的要求,具有超调量小,采样值与设定值基本一致,操作简单等优点。本设计创新点在于采用数字式温度传感器DS18B20 作为感温元件, 占用单片机引脚少, 因而可以利用空余引脚通过软件模拟和温度显示。1 绪论1.1温度控制系统设计的背景测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用,特别是单片机技术的开发与应用,标志着计算机发展史上又一个新的里程碑。作为计算机两大发展方向之一的单片机,以面向对象的实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化。温度控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用温度控制系统可以对生产环境的温度进行有效控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。水温控制系统应用十分广阔。1.2温度控制系统设计的意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,温度控制的开发与人们工作生活息息相关。水是一种我们赖以生存的重要资源,无论是在工农业生产还是我们的日常生活处处离不开水。控制水的温度可以极大提高生产效率,节约资源,提升我们的生活质量。在水资源日益匮乏的今天,拥有并推广简易完善的水温控制系统对于我们社会的可持续发展,有着极大的实际意义。1.3温度控制系统完成的功能本器件以STC89C52单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入STC89C52,主控器能对各温度检测器通过LED进行显示。1、本机实现的功能:(1)利用温度传感器采集到当前的温度,通过STC89C52单片机进行控制,最后通过LED数码管以串行口传送数据实现温度显示。(2)可以通过按键任意设定一个恒定的温度。(3)将环境境数据与所设置的数据进行比较,当温度低于设定值时,开启加热设备,进行加热;当温度高于设定温度时,进行散热,从而实现对温度的自动控制。(4)当系统出现故障,超出控制温度范围时,自动蜂鸣报警。2、扩展功能:(1)具有通信能力,可接收其他数据设备发来的命令,或将结果传送到其他数据设备。(2)采用适当的控制方法实现当设定温度或环境温度突变时,减小系统的调节时间和超调量。(3)温度控制的静态误差。2 系统设计2.1系统功能本系统利用单片机采集温度,温度值精确到小数点一位,用4位数码管显示温度值,设置三个按键调整报警温度值,当温度超出所设定的上下限范围时,蜂鸣器开始报警。2.2系统框图单片机复位电路报警电路时钟振荡温度传感器LED显示蜂鸣器报警图1 总体设计方框图2.3单片机的介绍40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。STC89C52单片机是一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存。该器件采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C52指令集兼容。片内程序存储器允许重复在线编程,允许程序存储器在系统内通过SPI串行口改写或用同用的非易失性存储器改写。通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,STC89C52便成为一个高效的微型计算机。它的应用范围广,可用于解决复杂的控制问题,且成本较低。其结构框图如图2所示。图2 STC89C52结构框图图3 STC89C52此外,STC89C52设计和配置了震荡频率可为12MHZ并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。主要功能特性: 兼容mcs-51指令系统 4k可反复擦写(1000次)isp flash rom 32个双向i/o口 4.5-5.5v工作电压 2个16位可编程定时/计数器 时钟频率0-33mhz 全双工uart串行中断口线 128x8bit内部ram 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(wdt)电路 软件设置空闲和省电功能 灵活的isp字节和分页编程 双数据寄存器指针按照功能,STC89C52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O口、控制和复位等。1.多功能I/O口STC89C52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 P0.7,P1.0 P1.7,P2.0 P2.7,P3.0 P3.7,共32根I/O线。每根线可以单独用作输入或输出。P0端口,该口是一个8位漏极开路的双向I/O口。在作为输出口时,每根引脚可以带动8个TTL输入负载。当把“1”写入P0时,则它的引脚可用作高阻抗输入。当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P1口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在对Flash编程和程序校验时,P1口接收低8位地址。另外,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX),如表1所示。表1 P1口管脚复用功能端口引脚复用功能P1.0T2(定时器/计算器2的外部输入端)P1.1T2EX(定时器/计算器2的外部触发端和双向控制)P1.5MOSI(用于在线编程)P1.6MISO(用于在线编程)P1.7SCK(用于在线编程)-字体、格式不对 P2端口,该口是带有内部上拉电阻的8位双向I/O端口,P2口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P2口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器或16位的外部数据存储器时,P2口送出高8位地址,在访问8位地址的外部数据存储器时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。在对Flash编程和程序校验期间,P2口也接收高位地址或一些控制信号。 P3端口,该口是带有内部上拉电阻的8位双向I/O端口,P3口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。P3口作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在STC89C52中,同样P3口还用于一些复用功能,如表2所列。在对Flash编程和程序校验期间,P3口还接收一些控制信号。表2 P3端口引脚与复用功能表端口引脚复用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)2.RST复位输入端。在振荡器运行时,在此脚上出现两个机器周期的高电平将使其单片机复位。看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平。在SFR AUXR(地址8EH)寄存器中的DISRTO位可以用于屏蔽这种功能。DISRTO位的默认状态,是复位高电平输出功能使能。3.ALE/PROG地址锁存允许信号。在存取外部存储器时,这个输出信号用于锁存低字节地址。在对Flash存储器编程时,这条引脚用于输入编程脉冲PROG。一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。在需要时,可以把地址8EH中的SFR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被激活。在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。4.PSEN程序存储器允许信号。它用于读外部程序存储器。当STC89C52在执行来自外部存储器的指令时,每一个机器周期PSEN被激活2次。在对外部数据存储器的每次存取中,PSEN的2次激活会被跳过。5.EA/Vpp外部存取允许信号。为了确保单片机从地址为0000HFFFFH的外部程序存储器中读取代码,故要把EA接到GND端,即地端。但是,如果锁定位1被编程,则EA在复位时被锁存。当执行内部程序时,EA应接到Vcc在对Flash存储器编程时,这条引脚接收12V编程电压Vpp。6.XTAL1振荡器的反相放大器输入,内部时钟工作电路的输入。7.XTAL2振荡器的反相放大器输出。2.4 DS18B20的介绍2.4.1 DS18B20的介绍DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。TO92封装的DS18B20的引脚排列见图4,其引脚功能描述见表3。 图4 DS18B20 (底视图)表3 DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图5所示。I/OC64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd 图5 DS18B20内部结构64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图6所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRCTMR1RO1111 图6 DS18B20字节定义由表4可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表5是一部分温度值对应的二进制温度数据。表4 DS18B20温度转换时间表R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750表5 一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。2.4.2 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。2.4.3 DS18B20的控制方法DS18B20有六条控制命令,指令约定代码操作说明 CCH:跳过扫描温度传感芯片序列号44H: 启动DS18B20进行温度转换BEH :读度温度值DS18B20的复位时序 :图7 DS18B20复位时序图(1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点)(3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。DS18B20的读时序:对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。图8 DS18B20读时序过程(1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时15微秒。(5)将数据线拉高“1”。(6)延时15微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时30微秒。DS18B20的写时序:对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图9 DS18B20写时序过程(1) 数据线先置低电平“0”。(2) 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数据线拉高。DS18B20虽然有测温简单的特点,单在实际应用中应注意一下几点:(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20 操作部分最好采用C语言实现。(2) 在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20 超过8个时钟,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。(3) 连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。(4) 在DS18B20 测温程序设计中,向DS18B20 发出温度转换命令后,程序总要等待DS18B20 的返回信号,一旦某个DS18B20 接触不好或断线,当程序读该DS18B20 时,将没有返回信号,程序进入死循环。这一点在进行DS18B20 硬件连接和软件设计时也要给予一定的重视。2.5 LED数码管 2.5.1 LED数码管主要技术参数图10 数码管数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图数码管使用注意事项说明:(1)数码管表面不要用手触摸,不要用手去弄引角;(2)焊接温度:260度;焊接时间:5s2.5.2 LED数码管的引脚说明这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个LED分别与上面那个图中的ADP各段相对应,通过控制各个LED的亮灭来显示数字。图11 共阳数码管内部结构图12 共阴数码管内部结构对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为110脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。还有一种比较常用的是四位数码管,内部的4个数码管共用adp这8根数据线,为人们的使用提供了方便,因为里面有4个数码管,所以它有4个公共端,加上adp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为112脚,下图13中的数字与之一一对应。图13 位共阳数码管内部结构2.5.3数码管编码说明 4位数码管编码说明,如6表所示:表6 控制命令表P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0eddpcgbfa00010100028H111101011EBH20011001032H310100010A2H411100001E1H510100100A4H60010010024H711101010EAH80010000020H910100000A0HH0110000161HL001100013DH-11110111F7HC001111003CH3 硬件设计3.1方案选定由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。如图14:图14 热敏电阻进而考虑到用温度传感器,在设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。选定了温度传感器之后,再来考虑它的控制内核,因为数字温度计的设计并不复杂,单片机完全可以处理的了,DSP是比较高端的控制内核应用成本相对较高,所以选用单片机是即经济又实惠的选择。很容易看出,选用温度传感器和单片机的组合电路比较简单,软件设计也比较简单。故用此种方案。3.2单片机最小系统电路图15 单片机最小系统(1)单片机9脚接复位电路,可按复位按钮S1给单片机复位。(2)晶振采用12MHZ。(3)由于单片机只访问片内Flash ROM并执行内部程序存储器中的指令,因此单片机的31脚接高电平VCC。3.3 DS18B20测温电路图16 DS18B20电路DS18B20的1脚接地,2脚数据端接单片机的P3.4,3脚接VCC,为了确保DS18B20工作可靠,2脚要接10K的上拉电阻。3.4报警电路图17 蜂鸣器电路本系统中采用蜂鸣器报警,由于单片机输出电流较小,所以用三极管9013驱动蜂鸣器发出声音。3.5 四位数码管显示电路图18 数码管显示电路4位数码管为共阳管,由于单片机输出电流比较小,故用4个PNP型的三极管9012来驱动数码管。单片机输出低电平时三极管导通,使数码管的4各公共端1、4、5和12脚为高电平,此时数码管的数据端输入低电平后数码管被点亮,120欧电阻R12到R19为三极管的限流电阻。3.6报警温度设定按键电路图19 按键电路 报警温度用按键S2,S3,S4来设置,S2为调整键,按一次可调整报警上限温度值,按两次可调整报警下限温度值,按三次数码管恢复到正常温度显示。3.7 ISP程序下载接口电路图20 下载电路本系统采用STC89C52单片机,故可以采用ISP方式下载程序。3.8控制电路设计本系统采用8550三极管驱动继电器工作,来控制加热装置和制冷装置,当温度低于设定的下限时,单片机让控制加热装置的继电器动作,同时点亮绿色发光二极管,当温度高于设定的上限时。单片机让控制制冷装置的继电器动作,同时点亮红色发光二极管。电路原材料及仪表清单如表2和表3所示。图21控制电路图表7电路原材料清单序号名称型号单位数量备注1电阻1K支32电阻200支63传感器DS18B20支4电阻510支85电阻5.6K支1电阻4.7K支16电阻10K支47晶振12MHz支18普通电容33pF支29电解电容10uF/50V支110开关个111小按钮支4三极管8550支212三极管9012支4三极管9013支1蜂鸣器支数码管支单片机STC89C52支表8使用工具及仪表清单序号名称型号单位数量备注万用表块內热式电烙铁焊锡丝若干直流稳压电源台编程烧写器台导线若干4 软件设计4.1程序流程图开始初始化示化获取温度值与温度上下限比较报警转换并显示YESY发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节CR校验正确?移入温度暂存器结束NNY图22主程序流程图 图23读温度流程图4.2开机数码管显示设置/*显示开机初始化等待画面*/Disp_init() P2 = 0xfe; /显示-P0 = 0xbf;Delay(200);P0 = 0xef;Delay(200); P0 = 0xfb;Delay(200);P0 = 0xfe;Delay(200);P0 = 0xff; /关闭显示给单片机上电后,18B20读取温度值需要一定的时间,故上数码管显示一定时间的“-”。4.3 DS18B20采集温度程序#define DQ P3_4 /定义DS18B20总线I/O/*延时子程序*/void Delay_DS18B20(int num)while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void)unsigned char x=0;DQ = 1; /DQ复位Delay_DS18B20(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay_DS18B20(80); /精确延时,大于480usDQ = 1; /拉高总线Delay_DS18B20(14);x = DQ; /稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20(20);/*读一个字节*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; Delay_DS18B20(4);return(dat);/*写一个字节*/void WriteOneChar

温馨提示

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

评论

0/150

提交评论