室温控制系统设计-毕业设计_第1页
室温控制系统设计-毕业设计_第2页
室温控制系统设计-毕业设计_第3页
室温控制系统设计-毕业设计_第4页
室温控制系统设计-毕业设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

哈尔滨理工大学学士学位论文PAGEV室温控制系统设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。本文主要介绍了一个基于C8051F342单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与C8051F342结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词:单片机;温度传感器;数字温度计

DesignoftemperaturecontrolsystemAbstractWiththeprogressanddevelopmentofera,microcontrollertechnologyhasbecomepopularinourlifeinthework,thescientificresearchandvariousfields,hasbecomearelativelymaturetechnology.Thetemperaturemeasurementmethodanddeviceofthehighlightsisveryimportant.Posedbythesinglechiptemperaturesensorandtemperaturemeasurementsystemcanbewidelyappliedinmanyfields.ThearticlemainlyintroducedbasedontheC8051F342monolithicintegratedcircuit'stemperaturemeasurementsystem,describedtheusedigittemperaturesensorDS18B20developmenttemperaturemeasurementsystem'sprocessindetail,keytosensor'sundermonolithicintegratedcircuithardwareconnection,thesoftwareprogrammingaswellasthevariousmodulessystemflowhascarriedontheexhaustiveanalysis,11hasalsocarriedontheintroductiontovariouspartofelectriccircuits.Thissystemmayfacilitaterealizestemperaturegatheringandthedemonstration,andmayaccordingtoneedtoestablishtheboundwarningtemperaturewillfully,itusesquiteconveniently,hastheprecisiontobehigh,themeasuringrangewidth,thesensitivityarehigh,thevolumeissmall,thepowerlosslowstatusmerit,suitsinourdailylifeandtheindustry,theagriculturalproductiontemperaturesurvey,mayalsotreatasthetemperatureprocessingmoduletoinsertinothersystems,takesotherhostsystem'sauxiliaryexpansion.DS18B20andC8051F342unionrealizesthemostJantemperatureexaminationsystem,thissystemstructureissimple,antijammingability,suitsundertheadversecircumstancecarriesonthescenetemperaturesurvey,hasthewidespreadapplicationprospect.Keywords:microcontroller,temperaturesensor,temperaturemeasurementsystem目录TOC\o"1-3"\u摘要 IAbstract II第1章绪论 11.1选题的目的和意义 11.1.1选题的目的 11.1.2选题的意义 21.2国内外发展状况 21.3课题的主要研究内容 3第2章温度控制系统的总体方案 52.1设计的总体介绍 52.2设计的要求和指标 52.3系统方案的确定 52.4本章小结 7第3章系统硬件电路的设计 83.1系统的总设计 83.2主控元件的介绍 93.2.1C8051F342的介绍 93.2.2DS18B20的介绍 103.2.3DS18B20使用的注意事项 153.3单片机最小系统设计 163.4DS18B20与单片机接口电路的设计 163.5显示电路的设计 173.5.11602LCD液晶简介 173.6控制驱动电路 193.6.1风机、空调机驱动电路 193.6.2报警电路设计 193.7本章小结 20第4章系统程序的设计 214.1系统设计内容 214.1.1主程序 214.1.2读出温度子程序 224.1.3温度转换命令子程序 234.1.4计算温度子程序 244.1.5温度数据的计算处理方法 254.2源程序 254.2.1DS18B20的各条ROM命令 254.3本章小结 27第5章调试及性能分析 285.1系统的调试 285.2性能分析 295.3本章小结 29结论 30致谢 31参考文献 32附录A电路原理图 34附录B室温控制系统程序 36哈尔滨理工大学学士学位论文PAGE58第1章绪论1.1选题的目的和意义1.1.1选题的目的利用单片机C8051F342和温度传感器DS18B20设计一个室温控制系统,能够测量20~100℃之间的温度值,用LCD液晶屏直接显示,测量精度为0.1℃。单片机在测控领域中具有十分广泛的应用,它既可以直接处理电信号,也可以间接处理温度、湿度、压力等非电信号。由于该特点,因而被广泛应用于工业控制领域。另一方面,由于单片机的接口信号是数字信号,因此使用它来进行温度、湿度、压力等这类非电信号的信息处理,必须使用对应的传感器进行A/D或D/A转换,最后再传输给单片机进行最终的数据处理和显示。在测温领域,人们通常使用温度传感器,将温度信息转换为电流或电压进行输出,进而完成数据的处理和显示。本文正是基于温度传感器和单片机而构建的电路,进而完成温度的测量和显示。温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器模拟集成温度传感器智能集成温度传感器。目前使用最广的是智能温度传感器(亦称数字温度传感器),是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配于各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍了智能集成温度传感器DS18B20的结构特征及控制方法,并以此传感器为测温元件,C8051F342单片机为控制核心,构成的数字温度测量装置,并对其的工作原理及程序设计作了详细的介绍。1.1.2选题的意义随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,温度传感器DS18B20具有性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。又随着电子技术的发展,人们的生活日趋数字化,多功能的数字温度计可以给我们的生活带来很大的方便;支持“一线总线”接口的温度传感器简化了数字温度计的设计,降低了成本;以美国MAXIM/DALLAS半导体公司的单总线温度传感器DS18B20为核心,以Siliconlaboratories公司的C8051F342为控制器设计的DS18B20温度控制器结构简单、测温准确、具有一定控制功能的智能温度控制器[1]。本课题研究的重要意义在于生产过程中随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数,就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是数字温度传感器技术,在我国各领域已经应用的非常广泛可以说是渗透到社会的每一个领域,与人民的生活和环境的温度息息相关。1.2国内外发展状况国外对温室环境控制技术研究教早始于二十世纪七十年代,先是采用模拟似的组合仪表采集现场信息并进行指示,记录和控制。八十年代末出现了分布式控制系统。目前世界各国的温室控制技术发展很快一些国家在实现自动化的基础上正朝着完全自动化、无人化的方向发展。我国对于温室控制技术的研究较晚始于二十世纪八十年代,我国的工程技术人员在吸收发达国家温室控制技术的基础上,才掌握了人工气候室内微控制技术在技术上以单片机控制的单参数单回来系统居多尚无真正意义上的多参数综合控制系统,与发达国家相比存在较大差异。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大的差距。成熟的温控产品主要以“点位”控制及常规的PID控制器为主,它们只能适应一般温度系统控制,而用于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。随着我国经济的发展及加入WTO,我国政府及企业对此都非常重视,对相关企业资源进行了重组,相继建立了一些国家、企业的研发中心,开展创新性研究,使我国仪表工业得到了迅速的发展。单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳[2]。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统[3]。1.3课题的主要研究内容数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即A/D转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来[4],成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。本文是基于C8051F342单片机,采用数字温度传感器DS18B20,利用DS18B20不需要A/D转换,可直接进行温度采集显示,报警的数字温度计设计。包括传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。第2章温度控制系统的总体方案2.1设计的总体介绍温度监控系统能完成数据采集和处理、显示、串行通信、输出控制信号等多种功能。由数据采集、数据调理、单片机、控制等4个大的部分组成。该测控系统具有实时采集(检测温室温度)、实时处理(对监测到的温度值进行比较分析,决定下一步控制进程)、实时控制(根据处理的结果发出控制指令,指挥被控对象动作)的功能。主要硬件包括温度传感器,C8051F342单片机、LCD显示器等[5]。当温湿度值超过允许的误差范围,系统将发出报警,如果有必要,工作人员还可以根据实际的情况通过键盘或按钮来人工修改片内存储的预设值。通过对整个系统的核心单片机部分的设计,达到优化控制温湿度的目标。2.2设计的要求和指标本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:利用温度传感器(DS18B20)测量某一点环境温度测量范围为-55℃~+99℃,精度为±0.1℃用液晶进行实际温度值显示能够根据需要方便设定上下限报警温度2.3系统方案的确定该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案[6]。方案一采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成(热电偶的构成如图2-1),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D转换后[7],就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D转换电路,感温电路比较麻烦。图2-1热电偶电路图系统主要包括对A/D0809的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路,启动电路等。故现场输入硬件有手动复位键、A/D转换芯片,处理芯片为51芯片,执行机构有4位数码管、报警器等。系统框图如图2-2所示[8]:图2-2热电偶温差电路测温系统框图方案二采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输[9],由数字温度计DS18B20和微控制器C8051F342构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外C8051F342在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用C8051F342芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。2.4本章小结本章节提出了本设计的要求和实现指标,通过采用热电偶温差电路测温与数字温度芯片DS18B20测量温度,C8051F342主要控制两种方案的比较论证确立最终方案。并对总体方案进行了介绍。通过本章内容,可以对论文总体方案有一定的了解。第3章系统硬件电路的设计3.1系统的总设计本设计使用C8051F342单片机作为控制核心,采用四个温度传感器对各点温度进行检测,以液晶显示屏显示温度,通过风机,空调对系统进行控制:温度过高或者过低,蜂鸣器报警提示,风机空调进行温度调节。系统总体控制框图如下所示:图3-1系统的结构框图数字温度计的整体电路原理图如下所示图3-2数字温度计的整体电路原理图3.2主控元件的介绍3.2.1C8051F342的介绍选用Siliconlaboratories公司生产的C8051F342单片机作为主控芯片,该芯片的主要特点如下[10]。1.高速、流水线结构的8051兼容的微控制器内核(可达48MIPS)2.全速、非侵入式的在系统调试接口(片内)3.真正10位200ksps的单端/差分ADC,带模拟多路器4.精确校准的12MHz内部振荡器和4倍时钟乘法器5.多达64KB的片内FLASH存储器6.多达4352字节片内RAM(256+4KB)7.硬件实现的SMBus/I2C、增强型UART和增强型SPI串行接口8.4个通用的16位定时器9.具有5个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列(PCA)片内上电复位,VDD监视器和时钟丢失检测器10.多达40个端口I/O(容许5V输入)有片内上电复位、VDD监视器、电压调整器、看门狗定时器和时钟振荡器的C8051F342器件是真正能独立工作的片上系统。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗。在工业温度范围(-45℃到+85℃)内用2.7V-5.25V的电压工作。电源电压大于3.6V时,必须使用内部稳压器。C8051F342采用48脚TQFP封装或32脚LQFP封装。C8051F342的最高采样频率可达200Ksps,通过以上对所采集信号的频率范围进行分析,200K的采样频率完全满足设计要求。根据设计要求内弹道的持续时间最大可能为十几毫秒,设定的采样频率为50KHz,所以内弹道采样点数为1024。由于单片机内部的ADC为10bits,所以存储内弹道的Flash存储空间为2K。终点弹道采样频率和采样点数设计和内弹道一样,也需要2K的Flash存储空间。外弹道采样频率设定为1KHz,采样点数为1024,所需要的Flash存储空间也为2K。C8051F342内部的64K的Flash完全满足要求。单片机内部的XRAM是向Flash中写数据的桥梁,例如,所采集到的1024个点数的内弹道数据首先是全部存放在XRAM内部,然后再写入Flash。所以单片机内部4K的XRAM也完全符合课题的设计要求。这是选择C8051F342的主要原因。C8051F342的功能框图如图3-1所示。图3-3C8051F342功能框图(这个图没必要重画)3.2.2DS18B20的介绍Dallas的最新单线数字温度传感器DS18B20简称新的“一线器件”体积更小、使用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20测量温度范围为-55℃~+125℃,在-10~+85℃范围内,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便[11]。而且新一代产品更便宜,体积更小。其实物图如3-2图所示:图3-4DS18B20的实物管脚分布图(没必要重画)1.DS18B20引脚及特点:引脚功能说明:GND是地址信号;DQ是数据输入/输出引脚,开漏单总线接口引脚,当被用在寄生电源下,也可以向器件提供电源;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2.DS18B20功能特点:(1)采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。(2)每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件[12]。(3)低压供电,电源范围从3.0~5.5V,可以本地供电,也可以直接从数据线窃取电源(寄生电源方式)。(4)测温范围为-55℃~+125℃,在-10℃~+85℃范围内误差为±0.5℃。(5)可编辑数据为9~12位,转换12位温度时间为750ms(最大)。(6)用户可自设定报警上下限温度。(7)报警搜索命令可识别和寻址超过程序限定温度(温度报警条件)的器件。(8)DS18B20的分辨率由用户通过EEPROM设置为9~12位。(9)DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。(10)负电压特性,电源极性接反时,温度计不会因为发热而烧毁,只是不能正常工作。DS18B20采用3脚PR—35封装或8脚SOIC封装。2.DS18B20内部结构及功能64位激光ROM,每一个DS18B20包括一个唯一个64位长的ROM编码。存储器:DS18B20的存储器由一个高速暂存(便笺式)RAM和一个非易失性、电可擦除EEPROM组成,后者存贮高温度和低温度触发器TH和TL。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂存存贮器,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性EEPROM。这一过程确保了更改存贮器时数据的完整性。高速暂存RAM的结构为9字节的存储器,前2字节包含测得的温度信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时刷新。第5字节为配置寄存器,其内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节低5位一直为1;TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式,在DS18B20出厂时,该位被设置为0,用户不要去改动;R1和R0决定温度转换的精度位数,即用来设置分辨率,其定义方法见表3-1:表3-1温度数据转化与时间R1R0分辨率/位温度最大转换时间/ms00993.750110187.510113751112750由表3-1可见,DS18B20温度转换的时间较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。二进制温度图中,S表示符号位。当S=0时,表示测得的温度值为正值,可以直接将二进制转换为十进制;当S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值。表3-2DS18B20温度与表示值对应表温度二进制表示十六进制表示温度二进制表示十六进制表示+125000001111101000007D0H000000000000000000000H+8500000101010100000550H-0.51111111111111000FFF8H+25.062500000001100100010191H-10.1251111111001011110FF5EF+10.125000000001010001000A2H-25.06251111111001101111FE6FH+0.500000000000010000008H-551111110010010000FC90H在DS18B20完成温度变换之后,温度值与贮存在TH和TL内的触发值相比较。因为这些寄存器仅仅是8位,所以0.5℃位在比较时被忽略。TH或TL的最高比较位直接对应于16位温度寄存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DS18B20将对告警搜索命令做出响应。这允许并联接许多DS18B20,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并与存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理如图3-5所示,图中低温度系数振荡器的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数振荡器随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。预置预置斜率累加器低温度系数振荡器减法计数器1预置减到0温度寄存器计数比较器高温度系数振荡器减法计数器2减到0图3-6DS18B20测温原理图图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1和温度寄存器中,减法计数器和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,当减法计数器1的预置减到0时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,并重新开始对低温度系数振荡器产生的脉冲信号进行计数。如此循环,直到减法计数器2计数到0时,停止温度计数器值的累加,此时温度寄存器中的数值就是所测温度值。另外,DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读/写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲→发ROM功能命令→发存储器操作命令→处理数据。3.2.3DS18B20使用的注意事项DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:1.较小的硬件开销需要相对复杂的软件进行补偿,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采用汇编语言实现[16]。2.连接DS18B20的总线电缆是有长度限制的。主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。3.在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。3.3单片机最小系统设计单片机最小系统就是指能使单片机工作的最少的器件构成的系统。因为单片机已经包含了数据存储器、时钟电路和程序存储器,所以只要在其外部加上电源和复位电路就可以构成单片机最小系统。图3-7单片机最小系统(就是用Protel画的啊)3.4DS18B20与单片机接口电路的设计DS18B20可以采用两种供电方式:一种是采用电源供电方式,此时DS18B20的第1引脚接地,第2引脚作为信号线,第3引脚接电源;另外一种是寄生电源供电方式当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最长为500ms。采用寄生电源供电方式时,VDD和GND端接地。由于单线制只有一根线,因此发送接口必须是三态的[17]。图3-7单片机与温度传感器接口电路(就是用protel画的啊)3.5显示电路的设计3.5.11602LCD液晶简介1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能显示图形。1602LCD是指显示的内容为16×2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。1602LCD的特性如下:1.+5V电压,对比度可调。2.内含复位电路。3.提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。4.有80字节显示数据存储器DDRAM。5.内建有160个5×7点阵的字型的字符发生器CGROM。6.8个可由用户自定义的5×7的字符发生器CGROM。7.字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC和地线,如下表3-3所示:表3-3液晶1602引脚表引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整段4RSRS为寄存器选择,高电平1选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平1进行读操作,低电平0时进行写操作。6EE端为使能端,下降沿使用7DB0低4位三态、双向数据总线0位(最低位)8DB1低4位三态、双向数据总线1位9DB2低4位三态、双向数据总线2位10DB3低4位三态、双向数据总线3位11DB4低4位三态、双向数据总线4位12DB5低4位三态、双向数据总线5位13DB6低4位三态、双向数据总线6位14DB7低4位三态、双向数据总线7位(最高位)15BLA背光电源正极16BLK背光电源负极3.6控制驱动电路3.6.1风机、空调机驱动电路温度的控制是通过空调器与风机实现的。当条件适合时,打开进出口的风机,在温室内形成通风气流;如果风机调节达不到控制要求,则使用空调进行调温[18]。风机、空调机的控制是由单片机和光电耦合器驱动完成的。其驱动电路如图3-8所示。图中,发光二极管是用来指示设备运转情况的。当单片机输出端口为低电平时,LED指示灯亮,光耦通,控制信号导通。单片机只要改变光耦导通时间就可以控制电器的工作时间。应用光耦驱动设备避免了机械触点式继电器驱动的一些缺点。图3-8驱动电路3.6.2报警电路设计在微型计算机控制系统中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示和控制[19]。本设计采用蜂鸣音报警电路。蜂鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过C8051F342的1根口线经驱动器驱动蜂鸣音发声。压电式蜂鸣器约需10mA的驱动电流,可以使用TTL系列集成电路7406或7407低电平驱动,也可以用一个晶体三极管驱动。在图中,当输出高电平“1”时,晶体管导通,压电蜂鸣器两端获得约+5V电压而鸣叫;当输出低电平“0”时,三极管截止,蜂鸣器停止发声。图3-9是一个简单的使用三极管驱动的峰鸣音报警电路[20]图3-9三极管驱动的峰鸣音报警电路(就是用protel画的啊)3.7本章小结本章重点分析了室温控制系统的与硬件电路部分,其核心技术是对单片机的应用,通过单片实现对温度的检测与控制。对系统的总体结构和各单元电路的设计都做了细致的介绍。主控电路采用C8051F342,实现对系统基本功能的控制,DS18B20传感器检测温度,液晶显示器显示,报警电路的设置实现了对温度的实时检测与控制。第4章系统程序的设计4.1系统设计内容系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、测量序列号子程序、显示数据刷新子程序等。4.1.1主程序主程序主要功能是负责温度的实时显示、读出处理DS18B20的测量温度值。主程序流程图如图4-1所示:开始开始调用显示子程序显示当前四路温度初始化读取并显示序列号图4-1主程序流程图4.1.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。读出温度子程序流程图如图4-2所示:开始开始复位DS18B20发跳过ROM命令发出温度转换命令转换完毕复位DS18B20发匹配ROM命令发1个DS18B20序列号读温度值存入储存器指向下一个延时NY图4-2读出温度子程序流程图4.1.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图4-3所示:发DS18B20复位命令发DS18B20复位命令发跳过ROM命令发温度转换开始命令开始结束图4-3温度转换命令子程序流程图4.1.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。计算温度子程序流程图如图4-4所示:开始开始温度零下?温度值取补码置“-”标志位计算小数位温度BCD值计算小数位温计算小数位温度BCD值度BCD值结束置“+”标志NY图4-4计算温度子程序流程图4.1.5温度数据的计算处理方法从DS18B20读取出的二进制值必须转换成十进制值,才能用于字符的显示。DS18B20的转换精度为9~12位,为了提高精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为寄存器里的二进制值乘以0.0625,就是实际的十进制温度值。通过观察表4-1可以发现,一个十进制与二进制间有很明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一字节,这个字节的二进制化为十进制后,就是温度值的百、十、个位字节,所以二进制值范围是0~F,转换成十进制小数就是0.0625的倍数(0~15倍)。这样需要4位的数码管来表示小数部分。实际应用不必这么高的精度,采用1位数码管来显示小数,可以精确到0.1℃。4.2源程序DS18B20的各条ROM命令1.ReadROM[33H]。这条命令允许总线控制器独到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只要在总线上存在单只DS18B20时,才能使用该命令。如果总线上有不止一个从机,则当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起形成相“与”的效果)。2.MatchROM[55H].这是一条匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20.只有与64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作.所有与64位ROM序列不匹配的从机都将等待复位脉冲.这条命令在总线上有单个或多个器件时都可以使用.3.SkipROM[0CCH].这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间.如果总线上不止一个从机,则在SkipROM命令之后跟着发一条读命令.由于多个从机同时传送信号,所以总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)。4.SearchROM[0F0H]。当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少个器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。5.AlarmSearch[0ECH]。这条命令的流程与SearchROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况下,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。6.WriteScratchpad[4EH]。这条命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。7.ReadScratchapad[0BEH]。这条命令读取暂存器的内容。读取将从第一字节开始,一直进行下去,直到第九字节(CRC)读完。如果不想读完所有字节,则控制器可以在任何时间发出复位命令来中止读取。8.CopyScratchpad[48H]。这条命令把暂存器的内容拷贝到DS18B20的E²PROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E²PROM存储器,则DS18B20就会输出一个0;如果拷贝结束,则DS18B20输出1。如果使用寄生电源,则总线控制器必须在这条命令发出后立即启动强上拉,并最少保持10ms。9.ConvertT[44H]。这条命令启动一次温度转换而无需其他数据。温度转换命令被执行后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换,则DS18B20将在总线上输出0;如果温度转换成功,则输出1。如果使用寄生电源,则总线控制器必须在发出这条命令后立即启动强上拉,并保持500ms以上时间。10.RecallE²[0B8H]。这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0表示忙;1表示完成。11.ReadPowerSupply[0B4H]。若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式0:0表示寄生电源;1表示外部电源。4.3本章小结本章主要介绍了系统的软件设计,包括主程序的设计,读出温度子程序的设计,温度转换命令子程序的设计,计算温度子程序的设计。软件设计是单片机控制系统的重要组成部分,本系统的软件设计部分充分发挥了软件功能作用,增强了系统的控制精度,提高了系统的可靠性。哈尔滨理工大学学士学位论文结论该基于DS18B20的多点温度测量系统具有硬件结构简单、易于制作、价格低廉、测量值精确和易于操作等许多优点,但由于实验室条件所限,暂时只做四点的温度测量。但在实际应用中可根据具体情况进行更多点的扩展和对多点进行控制。随着现代信息技术的飞速发展和传统工业改造的逐步实现,基于DS18B20的多点温度测量系统已经广泛应用于控制、化工等诸多领域。总之,本次毕业设计顺利完成,基本达到了毕业设计的要求。本文在深入分析多点智能测温系统的工作原理基础上,完成了该系统设计和调试任务,并且系统的性能误差达到了任务书的要求,使之能达到现场运行水平。总结一个学期的论文工作,得到以下结论:1.针对现有测温系统的特点,提出了一套应用数字式温度传感器DS81B20组建温度测控网络新型方案,该方案的突出特点是系统的数字化、快速化及其经济实用性。2.以单总线为基本结构,采用ATMEL公司的C8051F342单片机为总线命令,实现与DSl8B20的总线接口,并提供具体电路设计。3.软件编程采用模块化、结构化设计,易于修改和维护。由于时间和精力的限制,对后续的研究还应在以下方面逐步完善:1.应用软件的完善。温度采集方面,一次命令全部单总线上的DS18B20进行温度转换,减少系统所需时间。2.进一步完善系统的可靠性。由于实际经验的欠缺,设计上难免有考虑不周之处。当某一个传感器出现故障时,虽然系统能发现该测温点故障,但是更换传感器时涉及到其序列号的修改和应用程序的修改,这些还需要在今后应用时加以完善。3.可以增加控制部分,以后在该部分进行PID算法控制,以提高控制精度。总之,本论文在新型数字温度测控系统方面做了一定的研究工作。该系统初步完成了温度测控方案的预定目标,为今后实现数字化与网络化的温度测控系统工程提供了一种参考。致谢在毕业设计的整个过程中,我遇到了许多意想不到的困难,如自己设计电路,焊接电路板,进行软件编译等等。不仅如此,很多从未遇见过的问题和现象困扰着我,比如在调试的过程中,时常出现问题,但每次经过仔细反复查找,终于可以将这些问题针对性的找到并进行合理的改正,确保其正常实现对应的功能,在自己处理难题的过程中,真正学到了很多新的知识。在这次毕业设计中,首先我要非常感谢我的指导老师张鹏老师。我的大学期间专业知识的基础很差,很多课本上的知识都没有弄明白,是张鹏老师亲自指导我帮我选择参考资料,带着我理清知识的脉络。在我对很多知识一片模糊的时候,帮我制定实施计划,解决技术上的难题,指导我该从何处下手。虽然张鹏老师有的时候对我很严厉,但正是因为这种严厉,督促我尽快地完成了毕业设计任务。非常感谢张鹏老师在我大学的最后学习阶段——毕业设计阶段给自己的指导,从最初的选题,到资料收集,到写作、修改,到论文定稿,他给了我耐心的指导和无私的帮助,在此我向他表示我诚挚的谢意。同时,感谢所有任课老师和所有同学在这四年来给自己的帮助和关爱,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。通过这一阶段的努力,毕业论文终于完成了,这意味着大学生活即将结束。在大学阶段,我在学习上和思想上都受益匪浅,这除了自身的努力外,与各位老师、同学和朋友的关系、支持和鼓励是分不开的。衷心的感谢在百忙之中评阅论文和参加答辩的各位专家、教授!参考文献[1]杜深慧,《温湿度检测装置的设计与实现》,华北电力大学,2004:13-19(书)[2]房国良,《远程通讯接日的硬件设计》,电了技术出版社,1997.6:45-48(书)[3]周立功等,《51单片机新技术》,北京航空航天大学出版社,2003:78-90(书)[4]张志勇等,《精通单片机》,北京航天航空大学出版社,2003:90-105(书)[5]房德君,胡希一同,《信号传感器非线性补偿的研究》,山东工程学院学报,1994:67-70(杂志)[6]吴春蕾,《粮库温湿度智能检测系统的研究》,河北工业大学,2006:02-04(杂志)[7]姜志海,《单片机原理及应用》,电子工业出版社,2005.7:230-234(书)[8]吴金戎,沈庆阳,郭庭吉编,《8051单片机实践与应用》,清华大学出版社,2002.7:345-347(书)[9]林伸茂,管继斌,白雁钧编,《8051单片机彻底研究实习篇》,人民邮电出版社,2004.4:87-89(书)[10]李玉峰编,《MCS-51系列单片机原理与接口技术》,人民邮电出版社,2004.9:99-105(书)[11]田立,田清等,《51单片机C语言程序设计》,人民邮局出版社,2007.3:88-89(书)[12]赖麒文,《8051单片机C语言彻底应用》科学出版社2002.3:81-84(书)[13]沙占友等,《智能化集成温度传感器原理与应用》机械工业出版社,2002.9:333-336(书)[14]李朝青,《PC机及单片机数据通信技术》,航空航天大学出版社,2000.1:276-285(书)[15]求是科技,《VisualC++串口通信技术与工程实践》(第二版),人民邮电出版社,2004.2:167-176(书)[16]王幸之,王雷等,《单片机应用系统抗干扰技术》,北京航空航天大学出版社,2000:178-186(书)[17]MAXIMNEWReleasesDataBook.volum1998:18-19(书)[18]omasC.Bartee.ComputerArchitectureandLogicDesign[J].McGraw-HillInc.1991.9:88-89[19]GJiangMZhang,XXie,SLi.ApplicationontemperaturecontrolofDS18B2[J].ControlEngineeringofChina,2003:77-79附录A电路原理图数字温度计的整体电路原理图附录B室温控制系统程序#include<c8051f340.h>#include<intrins.h>#include"F340_FlashPrimitives.h"#include"F340_FlashUtils.h"#include"lcd1602.h"#include"ds18b20.h"#include<stdio.h>unsignedchartemp[5];externcharxiaoshu_temp[5],zhen_temp[4];externbitflag;externbitdot_dis;uchards18b20_num1[8]={0xfd,0x00,0x00,0x00,0xb8,0xc5,0x45,0x28};uchards18b20_num2[8]={0x8e,0x00,0x00,0x00,0xb8,0xc5,0x30,0x28};uchards18b20_num3[8]={0xb9,0x00,0x00,0x00,0xb8,0xc5,0x31,0x28};uchards18b20_num4[8]={0xe0,0x00,0x00,0x00,0xb8,0xc5,0x32,0x28};voiddelay(unsignedinttime){ unsignedinti,j; for(i=0;i<time;i++) for(j=0;j<200;j++);} voidmain(void){ uchari; uchar*ds18b20_rom; char*str1="1:"; char*str2="2:"; char*str3="3:"; char*str4="4:"; serial_set(); Lcd_Init(); ClrScreen(); GotoXY(0,0); dot_dis=1; /*ds18b20_rom=read_rom(); //读序列号 for(i=0;i<8;i++) { ds18b20_num2[i]=*ds18b20_rom; ds18b20_rom++; } GotoXY(0,1); for(i=0;i<8;i++) //显示序列号 { print_char(ds18b20_num2[i]/16); print_char(ds18b20_num2[i]%16); } while(1);*/ while(1) { ds18b20_init(); ds18b20_writecommand(0xcc); ds18b20_writecommand(0x44); //转换 delay(500); match_rom(ds18b20_num1); //匹配第一路 ds18b20_writecommand(0xbe); //读 for(i=0;i<2;i++) { temp[i]=ds18b20_readdata(); } temperature_process(temp[0],temp[1]); Screen_home(); Print(str1); if(!flag)//正 { Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } else//负 { Print("-"); Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } Print(""); ds18b20_init(); ds18b20_writecommand(0xcc); ds18b20_writecommand(0x44); //转换 delay(500); match_rom(ds18b20_num2); //匹配第二路 ds18b20_writecommand(0xbe); //读 for(i=0;i<2;i++) { temp[i]=ds18b20_readdata(); } temperature_process(temp[0],temp[1]); GotoXY(9,0); Print(str2); if(!flag)//正 { Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } else//负 { Print("-"); Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } Print(""); ds18b20_init(); ds18b20_writecommand(0xcc); ds18b20_writecommand(0x44); //转换 delay(500); match_rom(ds18b20_num3); //匹配第三路 ds18b20_writecommand(0xbe); //读 for(i=0;i<2;i++) { temp[i]=ds18b20_readdata(); } temperature_process(temp[0],temp[1]); GotoXY(0,1); Print(str3); if(!flag)//正 { Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } else//负 { Print("-"); Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } Print(""); ds18b20_init(); ds18b20_writecommand(0xcc); ds18b20_writecommand(0x44); //转换 delay(500); match_rom(ds18b20_num4); //匹配第四路 ds18b20_writecommand(0xbe); //读 for(i=0;i<2;i++) { temp[i]=ds18b20_readdata(); } temperature_process(temp[0],temp[1]); GotoXY(9,1); Print(str4); if(!flag)//正 { Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } else//负 { Print("-"); Print(zhen_temp); if(dot_dis) Print("."); Print(xiaoshu_temp); } Print(""); //delay(100); } while(1); }“DS18B20.C”#include<reg51.h>#include<intrins.h>#include<math.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintvoidserial_set(void);voidprocess(unsignedchar,unsignedchar);charvolatilexiaoshu_temp[5],zhen_temp[4]; //bitflag;bitdot_dis=1;sbitDQ=P1^0;//sbitDQ=P2^3;externunsignedchartemp[5];/***************************************************************功能:延时600us ****参数:无 ***************************************************************/voiddelay600us(void){ uchari; for(i=0;i<255;i++);}/***************************************************************功能:延时60us *************************************************************/voiddelay60us(void){ uchari; for(i=0;i<20;i++);}/***************************************************************功能:延时240us*************************************************************/voiddelay240us(void){ uchari; for(i=0;i<80;i++);}/***************************************************************功能:延时18us *************************************************************//*voiddelay15us(void){ uchari; for(i=0;i<2;i++);}*//***************************************************************功能:复位脉冲 *************************************************************/bitresetpulse(void){ DQ=0; delay600us(); //延时500us DQ=1; delay60us(); //延时60us return(DQ); //读取P1.0的状态}/***************************************************************功能:ds18b20的初始化 *************************************************************/voidds18b20_init(void){ while(1) { if(!resetpulse()) //收到ds18b20的应答信号 { //printf("resetsuccessful!"); //delay240us(); //延时240us DQ=1; delay600us(); //延时240us break; } else resetpulse(); //否则再发复位信号 }}/***************************************************************功能:向ds18b20写命令 *************************************************************/voidds18b20_writecommand(ucharcommand){ uchari; for(i=0;i<8;i++) { if((command&0x01)==0) { DQ=0; //写0 delay60us(); //延时60us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); DQ=1; _nop_(); _nop_(); } else //写1 { DQ=0; _nop_(); _nop_(); //延时2us DQ=1; delay60us(); //延时60us _nop_(); _nop_(); _nop_(); _nop_(); } command=_cror_(command,1);//右移1位 }}/***************************************************************功能:读ds18b20数据 ****参数:返回读到的数据 ***************************************************************/uchards18b20_readdata(void){ ucharreaddata; uchari; for(i=0;i<8;i++) { DQ=0; _nop_(); _nop_(); _nop_(); DQ=1; //释放总线 //delay15us(); 注意不需要 if(DQ==0) //如果读到的是0 { readdata=readdata&0x7f; delay60us(); } else //读到的是1 { readdata=readdata|0x80; delay60us(); } if(i<7) readdata=_cror_(readdata,1); } returnreaddata;}/*****************************

温馨提示

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

评论

0/150

提交评论