采用ds18b20和at89c51单片机的远程温控系统设计本科学位论文_第1页
采用ds18b20和at89c51单片机的远程温控系统设计本科学位论文_第2页
采用ds18b20和at89c51单片机的远程温控系统设计本科学位论文_第3页
采用ds18b20和at89c51单片机的远程温控系统设计本科学位论文_第4页
采用ds18b20和at89c51单片机的远程温控系统设计本科学位论文_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

采用DS18B20和AT89C51单片机的远程温控系统设计1引言粮食温度检测是储备库中防止粮食霉烂、保质存放的重要环节。对于一个农业大国来讲,粮食生产、需求与储备量都很大。大量粮食在储备的过程中常因粮食湿度过大而升温发热,导致粮食大量腐烂变质,给国家带来巨大损失。所以粮仓监控系统中温度测量是整个系统的主要功能之一。本文介绍一种以单线数字温度传感器DS18B20为温度敏感元件的粮仓温控系统,系统以微型计算机为上位机,89C51单片机为检测分机,DS18B20数字温度传感器直接与分机连接,分机与测温主机通过RS-485总线网进行通信,系统所有操作通过菜单命令完成。本文主要围绕下位机数据采集部分进行论述,并结合粮仓监控系统,对DSl8B20的这种单总线技术及其在本系统中的具体应用进行了讨论。2系统硬件设计2.1系统的总体设计整个系统从结构上可分为三层:由微型计算机构成上位机——用户监控层,51单片机系统分别构成测温主机——控制层和分机——温度数据采集层。上位机通过串行口与测温主机交换数据。测温主机与多台分机采用主从分布式结构。系统组成结构如图1所示,测温主机与上位机通过RS-232总线连接,测温分机与主机通过RS-485总线连接。一台主机最多可管理64台分机,一台分机可以测试大约1000个温度点。本设计适用于中小型粮库。2.2温度数据采集模块的设计DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。可以在三根线上同时并联多个温度传感器,每台分机上可以连接多根电缆,每根电缆上可以并联几十个点,构成串行总线工作方式。由于18B20芯片送出的温度信号是数字信号,因此简化了A/D转换的设计,提高了测量效率和精度;并且芯片的ROM中存有其唯一标识码,即不存在相同标识码的DS18B20,特别适合与微处理芯片构成多点温度测控系统。每台测温分机的P0~P3口分别可接N个DS18B20传感器(N<40)。上位机控制每台分机工作,实现多点测温。采集到的温度数据通过RS-485通信总线连成的总线型网络进行传输,测温分机接收到DS18B20所传送的温度数据,并将这些数据进行简单的处理发往上位机。主程序实现对DS18B20的实时数据采集,将结果存贮于单片机的RAM区。中断服务程序实现测温分机与上位机的通信。测温分机按照上位机的命令来完成温度数据采集和发送工作。其先将采集的数据存放于外部存储器SRAM中,当收到上位机的上传数据命令时,由发送子程序将数据进行简单处理后通过串口TXD端送出。在测温主机的配合下,数据上传到上位机并在上位机的监控界面显示给用户。2.3RS-485总线在温控系统中的设计在系统中用51单片机构成主从分布式测控系统,具有价格低、控制功能强等许多特点。然而在应用中,测温主机与各粮仓相距较远,距离从几十米到几千米不等。对此远程粮仓,系统采用RS-485总线实现数据的远程传输。进行串行通信的主机与分机的RS-485接口电路如图2.3所示。该电路以MAX485芯片为核心器件进行半双工通信,具有通信功能强、可靠性高、程序设计简单等特点。图2典型RS-485(半双工)通信网在使用RS-485接口时,对于特定的传输线径,从发生器到负载,其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个长度主要是受信号失真及噪声等影响所限制。当数据信号速率降低到90Kbit/S以下时,假定最大允许的信号损失为6dBV时,则电缆长度被限制在1200M。实际上,在实用时是完全可以取得比它大的电缆长度。当使用不同线径的电缆时,取得的最大电缆长度是不相同的。例如:当数据信号速率为600Kbit/S时,采用24AWG电缆,计算可知最大电缆长度是200m,若采用19AWG,电缆则电缆长度将大于200m;若采用28AWG电缆,则电缆长度只能小于200m。RS-485总线是半双工方式,即总线上某一时刻不能同时出现发送和接收的情况。此方式用于多站互连时,可节省信号线,方便地实现RS-485的多点通信功能。考虑到中小型仓库地理位置特点,系统采用较低的接收、发送波特率,以换取更远距离的传送,此设计完全可以满足系统需求?/p>3软件设计3.1系统软件的工作流程DS18B20以单总线协议工作,测温分机首先发送复位脉冲命令,使信号线上所有的DS18B20芯片都被复位,接着发送ROM操作命令,使序列号编码匹配的DS18B20被激活进入接收内存访问命令状态;内存访问命令完成温度转换、温度读取等工作(单总线在ROM命令发送之前存储命令和控制命令不起作用)。DS18B20工作流程见图3所示。图3DS18B20工作流程图系统以ROM命令和存储器命令的形式对DS18B20操作。ROM操作命令均为8位,命令代码分别为:读ROM(0x33H)、匹配ROM(0x55H)、跳过ROM(0xCCH)、搜索ROM(0xF0H)和告警搜索(0xECH)命令;存储器操作命令为:写暂存存储器(0x4EH)、读暂存存储器(0xBEH)、复制暂存存储器(0x48H)、温度变换(0x44H)、重新调出EERAM(0xB8H)以及读电源供电方式(0xB4H)命令。其对时序及电特性参数要求较高,必须严格按照它的时序要求去操作。DS18B20的数据读写由测温分机来完成,包括初始化、读数据和写数据。系统软件采用模块化程序设计,主从式结构通信方式。规定总线上有一个测温主机和64台分机,分机地址唯一。初始化完成后各分机均处于监听状态,采用中断方式工作,测温分机接受上位机命令,向DS18B20发出地址匹配命令帧,进入等待状态,每一帧数据位都对应着不同意义,若地址匹配成功则进行响应分机,否则继续等待,直到等待超时而重发命令。温度采集模块负责数据的采集工作。当缓冲区有数据时产生中断,程序转向中断服务子程序入口,中断子程序如下:C程序voidSerialInterrupt()interrupt4//中断服务子程序{loop0:if(RI);SlaveNo=SBUF;RI=0;while(!RI);//等待下一个命令loop1:RI=0;SensorNo=SBUF;if(SlaveNo==0x81&SensorNo<0x80)//判别数据是否合法{while(1){Gettemp(SensorNo);if(RI)gotoloop1;}}elsegotoloop0;}//否则继续等待3.2DS18B20的时延及读写时序问题为保证DS18B20的严格I/O时序,需要作较精确的延时。在DS18B20的操作中,短时间延时是指10us以下的延时,在汇编语言下采用若干个NOP指令即可。因C51编译器提供了若干内部函数,(_nop_()函数为其中之一)其编译结果就是在对应位置嵌入一个nop汇编指令,所以短时间延时可利用_nop_()函数实现。较长时间延时指10us以上的延时。在DS18B20操作中,用到的较长时间延时有15us、90us、270us、540us等。因这些延时均为15us的整数倍,可编写一个Delayl5(n)函数,该函数可实现约15us×n的延时。DS18B20的初始化包括测温分机发送的复位脉冲和其向测温分机返回的存在脉冲。总线在开始时刻发出一个最短为480us的低电平复位脉冲,接着在该时刻释放总线并进入接收状态,DS18B20在接收到总线的电平上升沿,等待15—60us后在下一时刻发出60—240us时延的低电平存在脉冲信号,表明器件已接在总线上。时序如图4所示。图4初始化图当总线于该时刻从高电平拉至低电平时,就产生“写”的时间间隙。从该时刻开始15us之内,应将所需写的位送到总线上,DS18B20在该时刻后的15—45us期间内对总线采样,低电平写入0,高电平写入1。连续写两位之间的间隙应大于1us。写时序如图5所示。图5读写时序图起始时刻将总线从高电平拉至低电平,持续15us之后将总线释放,就产生读时间间隙。测温分机必须在该时刻之后的15us之内完成读总线状态,并在45us内释放总线,连续读两位之间的间隙应大于1us。读时序如图5所示。4总结本文论述了以DS18B20为传感器,AT89C51单片机为控制核心组成的远程粮仓温控系统。由于DS18B20采用数字单总线技术,使得系统电路简单,易于扩展,加上总线数字化,使得系统的抗干扰性能好,可靠性高,测温范围比较宽(-55~125℃),与传统的温控系统相比还具有较高的性价比。此外,系统的应用范围不仅仅局限于粮仓领域,稍作改动还可作为其它自控领域的解决方案,如烟叶烘烤箱控制系统等。本文作者创新观点:采用新型数字温度传感器DS18B20,并将其与51单片机、RS-485总线技术有机的结合在一起,组成抗干扰性能较强的温控系统。系统具有较高的性价比,已成功应用于许昌、尉氏等中型粮库中。该系统避免了因温度过高而导致大量粮食发霉变质所造成的损失,对于中型粮库可产生经济效益百万元以上,在粮食储藏技术领域内具有广阔的市场前景。用FPGA实现对DS18B20温度传感器控制l引言DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。FPGA可以将读出DS18B20的48位ID号和12位温度测量结果保存在内部寄存器中,微处理器可以随时快速地从FPGA寄存器中读取这些信息。一般在使用DS18B20时往往采用微处理器的I/O端口实现与该器件的通信,这种方法虽然比较容易和方便,但是,因为DS18B20的一线式串行总线对时序要求比较严格,因此,为了保证与DS18B20的通信可靠性,微处理器与DS18B20通信时需要采用关闭中断的办法,以防止操作时序被中断服务破坏。利用FPGA实现与。DS18B20通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。2ProASICplus系列FPGA简介ProASICplus系列FPGA是ACTEL公司推出的基于Flash开关编程技术的现场可编程门阵列,包括从7.5万门的APA075型到100万门的APAl000型,具有高密度、低功耗、非易失、含有嵌入式RAM及可重复编程等特点。因为ProASICplus系列FPGA基于Flash技术,利用Flash开关保存内部逻辑,因此不需要另外的器件。由于不需要上电配置过程,因此具备上电就立即工作的特点。不用配置器件,系统的保密性提高。笔者在电力监控的产品中利用APA150型FPGA实现了逻辑控制、A/D采样控制和FIFO存储等功能,并利用剩余的资源实现了DS18B20的通信功能。APA150在整个系统中充当协处理器,使主CPU从繁重的实时处理中解脱出来。3DS18B20简介3.1内部结构DS18B20的内部结构如图1所示,主要由以下几部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH(温度高)和TL(温度低)、配置寄存器、暂存寄存器(SCRATCHPAD)、存储器控制逻辑。DQ为数字信号输入/输出端。ROM中的64(8位产品家族编号、48位ID号、8位CRC)位序列号是出厂前刻好的,这64位序列号具有惟一性,每个DS18B20的64位序列号均不相同。8位CRC生成器可以完成通信时的校验。暂存寄存器有9个字节,包含温度测量结果、温度报警寄存器、CRC校验码等内容。3.2操作步骤对DS18B20的操作分为3个步骤:初始化、ROM命令和DS18B20功能命令。3.2.1初始化FPGA要与DS18B20通信,首先必须完成初始化。FPGA产生复位信号,DS18B20返回响应脉冲。3.2.2ROM命令该步骤完成FPGA与总线上的某一具体DS18B20建立联系。ROM命令有搜寻ROM(SEARCHROM)、读ROM(READROM)、匹配ROM(MATCHROM)、忽略ROM(SKIPROM)、报警查找等命令(ALARMSEARCH)。这里,FPGA只连接1个DS18B20,因此只使用读ROM命令,来读取DS18B20的48位ID号。3.2.3DS18B20功能命令FPGA在该步骤中完成温度转换(CONVERTT)、写暂存寄存器(WRITESCRATCHPAD)、读暂存寄存器(READSCRATCHPAD)、拷贝暂存寄存器(COPYSCRATCHPAD)、装载暂存器寄存器(RECALLE2)、读供电模式命令(READPOWERSUPPLY)。文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。3.3操作时序DS18B20的一线式操作时序如图2所示。从时序图中可以看出,对DS18B20的操作时序要求比较严格。利用FPGA可以实现这些操作时序。4FPGA与DS18B20的通信4.1DS18B20的操作模块FPGA需要完成DS18B20的初始化、读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。读取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性。以上操作反复进行,可以用状态机来实现。状态机的各种状态如下:RESET1:对DS18B20进行第一次复位,然后进入DELAY状态,等待800μs后,进入CMD33状态。CMD33:对DS18B20发出0×33命令,读取48位ID值。GET_ID:从DS18B20中读取48位ID值。RESET2:对DS18B20进行第二次复位,然后进入DELAY状态等待800μs后,进入CMDCC状态。CMDCC:向DS18B20发出忽略ROM命令,为进入下一状态作准备。CMD44:向DS18B20发出启动温度转换命令,然后进入DELAY状态等待900ms后进入下一状态。RESET3:对DS18B20进行第三次复位。CMDCC2:向DS18B20发出忽略ROM命令,为了进入下一状态作准备。GET_TEMP:从DS18B20中读取温度测量数值。DELAY:等待状态。WRITE_BIT:向DS18B20中写入数据位状态。READ_BIT:从DS18B20中读取数据位状态。在该状态中每读取1位数据,同时完成该数据位的CRC校验计算。所有数据都读取后,还要读取8位CRC校验位。这8位校验位也经过CRC校验计算,如果通信没有错误,总的CRC校验结果应该是0。这时可将通信正确的数据保存到id和temp_data寄存器中。设计中采用Verilog语言建立DS18B20操作模块”DS18B20_PROC”。在该模块中实现以上的状态机功能。该模块的定义为moduleDS18B20PROC(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。图3示出是该模块的仿真波形。从仿真波形可以看出,系统上电后的10ms左右,FPGA可以读出DS18B20的48位ID值,这样,主CPU在系统复位后很短的时间内就可以读取ID值,进行相应的处理。4.2FPGA与CPU的接口在FPGA中,要实现对DS18B20的通信处理,主模块要实现对DS18B20_PROC模块的调用及建立与CPU之间的接口。与CPU之间的接口通过建立若干寄存器实现。温度测量值和48位ID可以用4个16位寄存器保存。CPU通过读取这些寄存器可以获得温度测量数值和48位ID值。CPU、FPGA及DS18B20的连接原理如图4所示。5结束语在系统中,FPGA可以分担许多主处理器的工作,提高整体实时性,降低CPU处理的严格实时约束,从而降低CPU软件处理的难度。同时,由于ACTEL公司的ProASICplus系列FPGA的保密特性,可以增强产品知识产权的保护。本设计应用在电力监控产品中。测量出的装置内部温度用于电量测量精度补偿和报警,对保证产品测量精度和可靠运行具有重要意义。48位ID值用于产品的惟一编码标识和以太网MAC地址,便于产品生产、维护和管理。采用AT89C2051单片机的的温湿度控制系统设计目前,国内大中型库房在仓储管理中由于技术和资金上的原因,多数仅限于只对温度进行监测,当温度超标时进行强制通风和翻仓,即使如此,处理不及时或因设备人力条件有限仍会造成大量损失。实现库房储藏物的温升主要是由于湿度引起的,库房储藏物本身的水分过高或连续的高湿天气将导致储藏物新陈代谢加快而放出热量,放热引起的温升又使代谢进一步加剧以至发霉变质。这种恶性循环一旦形成很难进行有效控制。因此,库房在进行温度监测的同时,必须重视对空气湿度的检测,以利于提前采取有效措施控制库房储藏物升温而霉变。本文所介绍的温湿度控制系统以AT89C2051单片机为控制核心,结合传感器、通讯和数字电子电路技术,实现了温度和湿度检测与库房温度和湿度的有效控制,降低经济损失和劳动强度。系统总体结构应用户要求对若干个地理位置分散的库房的温湿度进行实时的监测与控制,为了适应对多个测控点的*与管理,经分析采用了分布式系统的控制方式,即在每个测控点配置能独立工作的从机,多个从机由1个上位机进行*管理,上下采用主从式*管理形式,系统总体结构如图1所示。系统的各个部分功能和关系如下:·主机为管理机,完成参数设置、数据存储、处理及管理功能。·从机为控制机,采用单片机2051,直接实现各个模块的控制功能,并能在主机关机的条件下实现所有的控制功能。·通讯接口实现RS232信号和RS485信号的转换,主机通过其向从机发送控制参数,从机将现场采集数据通过其传给主机。·数据采集实现对传感器及运行设备的检测。·控制器及其设备根据系统输出的信号对现场设备进行控制。·输入输出部分包括输入模块和输出模块,输入模块将采集的信号转换后输入到从机,输出模块将系统的控制信号输出到控制器及其设备。系统以温湿度*为核心,温湿度参数和设备运行状态由主机根据用户要求定时向从机查询,各控制模块的设置参数修改时,将新的参数发送到从机。主机可以对从机进行参数设置及控制,从机也可以独立工作。从机通过数据采集装置不间断地采集温湿度数据,根据控制模块的设置参数做出控制决策,驱动设备运行,并随时准备接受主机的指令,当受到询问时,将库房的各项数据编码通过串行通信方式传输到主机。主机接收到数据后,进行数据处理,在*界面上显示当前的状态信息,并将此信息实时地存储到数据库中,为用户维护和管理准备数据。对数据可以进行查询,也可以将一段时期的数据信息汇集成报表,报表包括各项统计数据,还可以将数据处理绘制成图形曲线,实现对数据的分析与管理。系统硬件设计控制系统的主机采用一般的PC(64M以上即可),就完全可以满足系统对数据处理、运行速度的要求。从机部分以2051单片机为核心,外接数据采集输入电路、输出电路、状态监测电路等部分组成。本系统对多个测控点进行*,1台主机与多台从机实现主从式通信,通过通讯接口机实现RS485标准总线通讯,系统的数据检测是由各类传感器来承担,图2所示为单片机控制平台1系统原理图。此控制平台主要实现现场数据采集,并将采集数据处理、存储、发送给主机。2051是控制平台的核心,温湿度数据的采集通过多路传感器获得,采集的信号经ADS1286实现转换。为有效控制多路传感器,在系统设计中使用4051实现扩展,使控制平台可以控制多路传感器,采集的数据存放于24LC04。在控制平台的驱动上,使用CMOS管1120提高2051的驱动能力,使控制平台每路可以控制多个传感器(主要是提高控制平台对18B20、温湿度采集器的驱动能力)。在与主机通讯时,为达到电平一致,控制平台通过RS485芯片实现2051的引脚RXD、TXD的TTL电平与RS485的引脚A、B的485电平之间的转换。把主机通过通讯接口送来的RS485标准电平转换为TTL电平传送给2051,把2051送出的TTL电平转换成RS485标准电平通过通讯接口传送给主机。图3所示为单片机控制平台2接口电路,主要实现对现场设备(现场设备主要指通用空调、加/除湿机等)的控制,并将设备状态情况发送给主机。该控制平台的主要部分如下:·2051单片机2051是控制平台的核心。·24LC16存储器扩展24LC16用于存放现场设备的状态数据。·遥控控制平台通过HS0038和红外发光管实现对现场设备的遥控。可根据现场设备的不同,选用HS0038或红外发光管遥控现场设备。·RS232通讯控制平台把80C196的串口引脚RXD、TXD和GND接到光电耦合电路,把80C196串行口输出的TTL电平转换为RS232标准电平,把其它微机送来的RS232标准电平转换为TTL电平给80C196,并实现RS232电平与TTL电平的隔离,在实现RS232电平与TTL电平转换的同时保护计算机串口。·RS485通讯控制平台通过RS485芯片实现2051的引脚RXD、TXD的TTL电平与RS485的引脚A、B的485电平之间的转换。把主机通过通讯接口机送来的RS485标准电平转换为TTL电平传送给2051,把2051送出的TTL电平转换成RS485标准电平通过通讯接口机传送给主机。系统软件设计软件系统由两个相对独立的上位机软件和下位机软件部分组成,采用基于Smith-Fuzzy控制器的粮库温湿度测控算法,上位机*软件模块结构图如图4所示。图4上位机软件模块结构图上位机*软件主要实现以下功能:·串行通信:完成上位机的通信配置,实现上位机与下位机之间通信。·数据显示:提供三维立体图、曲线走势图和表格三种方式显示。·数据存储:对实时数据(包括最大值、最小值、平均值)按用户要求存储到数据库的一张历史数据表中;也可导出数据到文件,以文本方式保存到一个文本文件中。·数据查询:允许用户根据情况对实时数据、历史数据进行查询或进行走势曲线分析。·数据打印:根据用户要求,以表格方式打印实时数据和历史数据,亦可打印走势曲线图。·异常报警:当实时温湿度数据超越设定的上下限温湿度数值时,报警铃响。·系统设置:为保证用户在任何情况下,都能良好地运行,允许用户对系统的测量时间间隔、温湿度上下限、存盘时间间隔、登录用户名、口令等参数进行设置。系统的下位机主控模块通过*模块、人机交互模块和通信模块来完成实时*与管理任务,并且所有工作又分解在报警处理、控制决策、信息显示、命令处理、参数设置和信息输出子模块来运行。下位机应用软件包括主程序、数据采集子程序、数据处理子程序、发送子程序和显示子程序等五个主要模块。结语库房温湿度控制系统,采用数字式的温度传感器和单片机,实现了对库房内温湿度的自动测量和调节,AT89C2051单片机因其指令系统丰富、小巧、低价、灵活易扩展等独特的优点,在所设计的库房温湿度控制系统中使整个系统的性价比得以大幅度的提高。本文所介绍的系统已广泛应用在粮库、食品库、蔬菜冷藏库、档案库等行业中,系统运行良好,稳定可靠,受到用户的一致好评。1引言单线数字温度传感器(例如DS18B20)因其体积小、系统结构简单等优点得到越来越广泛的应用。DS18B20是美国Dallas半导体公司研制的一款单总线可编程智能温度传感器。它将A/D转换器、寄存器、接口电路集成在一个芯片中,可以直接输出数字信号。与单片机的接口电路也很简单,具有控制功能强、传输距离远、抗干扰能力强等特点,非常适用于微型、低功耗的温度测量器件。2DS18B20的性能特点DS18B20在-10℃~+85℃范围内.可确保测量误差不超过±0.5℃;在-55℃~+125DS18B20内置64位经过激光修正的ROM.出厂前作为唯一的产品序号存入ROM中。构成大型温控系统时,允许在单总线上挂接多个DS18B20,理论上可挂接264个。DS18B20可分别设定各路温度的上、下限并写入RAM中.并能迅速识别出温度越限的器件。采用Dallas公司独特的“单总线(1-Wire)”专有技术,通过串行口(I/O)直接输出所测温度值。内含寄生电源。既可由单总线供电,亦可采用外部5V电源供电。3系统简介KJ05温度传感器系统包括:单总线DS18B20温度传感器。ATmega8单片机及其接口电路构成的温度数据采集模块;由数码管,键盘和遥控电路构成友好的人机界面;报警灯和报警蜂鸣器电路,以及标准的4mA~20mA电流输出模块。其结构框图如图1所示。图1系统结构框图4利用测温原理降低非线性误差首先.由于DS18B20的分辨率为9~12位可编程,为了得到较高精度的温度,可采用l2位模式,理论上最小温度分辨率为0.0625℃.但由于受各种因素影响,DS18B20测量温度的分辨率真实值只有0.5℃图2DSI8B20的内部结构框图图2中,高温度系数振荡器确定一个门控周期,然后在此门控周期内通过对低温度系数振荡器的时钟个数进行计数便可测量温度。在计数器和温度寄存器内均预置了对应于-55℃的初值,如果在门控周期结束前,计数器的值没有减到零,就表明当前测量温度高于-55利用下式可计算出高分辨率的温度值:T=temp_read-0.25+(count-per_degree-count_remain)/count_per_degree其中,temp_read:DS18B20中读出的温度读数;count_per_degree:每摄氏度的计数值;countremain:门控周期结束时计数器中的余数。为了提高温度分辨率,必须从DS18B20中读出count_per_degree和count_remain.这两个值存储在便笺RAM的第6、7个字节中。从DS18B20中读出count_per_degree和count_remain的C语言程序如下:voidreadtm{unsignedchartmp;reset();/*复位DS18B20*/sendcmd();/*发读DS18B20RAM命令*/templ=read_tmp();/*读温度低字节*/temph=read_tmp();/读温度高字节/tmp=read_tmp();tmp=read_tmp();tmp=read_tmp();Count_remain=read_tmp();Count_per_degree=read_tmp();}RS232接口转USB接口的通信方法摘要:USB通用串行总线是计算机外设接口的发展趋势,将逐渐取代PC机上的RS232协议串口,因此很多传统的RS232接口设备都将面临一个向USB接口转换的问题。本文以IC卡门禁考勤系统为例,提出一种方案,使传统的RS232接口转化为USB接口后直接通过USB总线接入PC,同时使IC卡门禁考勤设备增加了USB总线具有的热插拔、自动配置和智能电源管理等功能;着重剖析USB通信内核,探讨系统软硬件设计方案。关键词:USB终端人机接口设备(HID)列举引言USB作为一种新的PC机互连协议,使外设到计算机的连接更加高效、便利。这种接口适合于多种设备,不仅具有快速、即插即用、支持热插拔的特点,还能同时连接多达127个设备,解决了如资源冲突、中断请求(IRQs)和直接数据通道(DMAs)等问题。因此,越来越多的开发者欲在自己的产品中使用这种标准接口。而RS232是单个设备接入计算机时,常采用的一种接入方式,其硬件实现简单,因此在传统的设备中有很多采用了这种通信方式。一般的IC卡门禁考勤系统也使用RS232接口与PC机通信。如果将USB技术应用于IC卡门禁考勤系统与PC机之间的数据通信,这样,不仅能使IC卡门禁考勤设备具备USB通信的诸多优点,而且对PC机而言还可以节余1个RS232串口为其它通信所用。1USB系统概述USB规范描述了总线特性、协议定义、编程接口以及其它设计和构建系统时所要求的特性。USB是一种主从总线,工作时USB主机处于主模式,设备处于从模式。USB系统所需要的唯一的系统资源是,USB系统软件所使用的内存空间、USB主控制器所使用的内存地址空间(I/O地址空间)和中断请求(IRQ)线。USB设备可以是功能性的,如显示器、鼠标或者集线器之类。它们可以作低速或者高速设备实现。低速设备最大速率限制在1.5Mb/s,每一个设备有一些专有寄存器,也就是端点(endpoint)。在进行数据交换时,可以通过设备驱动间接访问它。每一个端点支持几种特殊的传输类型,并且有一个唯一的地址和传输方向。不同的是端点0仅用作控制传输,并且其传输可以是双向的。系统上电后,USB主机负责检测设备的连接与拆除、初始化设备的列举过程,并根据设备描述表安装设备驱动后自动重新配置系统,收集每个设备的状态信息。设备描述表标识了设备的属性、特征并描述了设备的通信要求。USB主机根据这些信息配置设备、查找驱动,并且与设备通信。典型的USB数据传输是由设备驱动开始的,当它需要与设备通信时,设备驱动提供内存缓冲区,用来存放设备收到或者即将发送的数据。USB驱动提供USB设备驱动和USB主控制器之间的接口,并将传输请求转化为USB事务,转化时需要与带宽要求及协议结构保持一致。某些传输是由大块数据构成的,这时需要先将它划分为几个事物再进行传输。具有相似功能的设备可以组成一类,这样便于分享共有的特性和使用共同的设备驱动程序。每个类可以定义其自己的描述符,如:HID类描述符和Report描述符。HID类是由人控制计算机系统的设备组成的,它定义了一个描述HID设备的结构,并且表明了设备的通信要求。HID设备描述符必须支持端点输入中断,固件也必须包括一个报告描述符,表明接收和发送数据的格式。在IC卡门禁考勤系统引入RS232到USB的接口转换模块后,从系统所具有的特性来看,应该属于HID设备。因此,两种特殊的HID类请求必须被支持:SetReport和GetReport。这些请求使设备能接收和发送一般的设备信息给主机。在没有中断输出终端时,SetReport是主机发送数据给HID设备的唯一方式。2系统要求为了实现IC卡门禁考勤系统中RS232-USB的接口转换,需要1台支持USB的主机,同时还要提供主机上用于与外设通信的驱动,一般由操作系统提供。此外,还需开发在主机上执行的客户端应用程序。在设备端,需要提供具有USB接口的主控制器芯片,以及编写主控制器上执行的USB通信代码和用于执行外设功能的相关代码。2.1主机要求主机必须能够通过设备驱动接收USB数据,并且使这些数据对处理这些请求的应用程序有效。在主机中必须有一个驱动负责处理USB传输、辨识设备、向USB设备收发数据;同时,还需要有一个设备驱动-虚拟化串行口,仿效真实的串口。这个驱动必须能够像真实的串口接收和发送USB数据。从应用的观点,设备驱动必须能收发数据,可以通过使用一个虚拟化的串口或通过转化为USB数据实现。微软提供了一个叫作USBPOS的设备驱动,它允许应用程序访问USB设备时,好像它们连接到标准串口上一样。系统大致结构方框图如图1所示。2.2设备要求在定义即将使用的微控制器时,必须说明一些通信要求,如:通信速率、频率、传输的数据量等。考虑到IC卡门禁考勤系统有效的通信速率,可以把转换器作为一个低速的设备使用,低速设备通信速度可以在10~100Kb/s的范围变化。考虑到传输的数据量和传输的频率,此系统中使用中断的传输类型。中断传输可以在2个方向进行,但不能同时进行,这种类型的传输要求在规定的时间里完成相当大数据量的传输任务。对于转换模块,它可以用于PC机的数据收发,操作系统提供了HID驱动,允许使用中断传输模式。对于低速设备的一个事务,中断传输最大的包容量是8字节,如果需要发送大量的数据,则必须把它分割为很多事务。转换模块要定义的另一个特性是所需端点数。如上所述,端点是微控制器在USB通信过程中所用来发送和接收数据的缓冲区。此系统中,该转换器定义了2个端点:一个端点(端点0)用来控制传输,另一个端点是中断输入端点,定义为发数据给PC机。根据以上要求,通过研究比较现有的微控制器,考虑到如内存空间、价格和开发包等因素,我们选用Cypress家族的一种8位RISC微控制器CY7C634XX/5XX。它使用哈佛总线结构,是对较高I/O要求的低速应用设备的低价解决方案。图2为IC卡门禁考勤系统USB通信实现硬件方框原理图。3软件设计和执行系统软件由6部分组成:定义描述符、设备检测和列举、端点中断服务程序、USB数据交换模块、串行口数据交换模块、USB/Serial模块接口。下面简要描述其中部分模块程序的功能和实现思想。3.1描述符定义描述符是数据结果或信息的格式化块,它可以使主机知道这个设备。每个描述符包含了这个设备整体的信息或者某个元素的信息。所有的USB外设必须响应对标准的USB描述符的请求。该系统中使用了1个接口和2个终端(控制和中断输入)。由于受Win98的限制还不能使用中断输出终端,因此为了解决这个问题,我们通过在端点0中使用SetReport传输PC机欲送往IC卡门禁考勤设备的数据。数据接收是在OutputReports中完成的。它根据送往IC卡门禁考勤设备最大的数据量,系统定义为16K个8位域。发送数据给主机是在输入报告中完成的,它是8K个8位域。3.2设备检测和列举当1个USB人机接口类(HID)设备第一次连接到总线,它将被总线供电但仍然非功能性等待1个总线复位。D-端的上拉电阻通知Hub连接上了新的设备,主机也同时知道了新连接的USB设备,并将它复位。紧跟输入包之后,主机发送1个配置包,从缺省地址0处读取设备描述符。读到描述符后,主机将分配一个新的地址给设备,并继续查询关于设备描述、配置描述、人机报告描述的信息,设备将开始对新分配的地址作出反应。根据从设备处返回的信息,主机知道了被设备支持的数据终端的数量,完成列举过程。列举结束后,Windows将把新的设备加入到控制面板的设备管理器中显示。为此,在微控制器中必须写入访问描述符的代码,这样便于对主机在列举设备时发送的请求作出有效的辨识和响应。在设备方面需要创建一个INF文件,使Windows能够辨识设备,并且为设备找到其驱动。由于操作系统提供了简单的INF文件,因此,开发中只需要编写写入到微控制器中的程序。3.3数据发送和接收过程发送数据到门禁考勤系统是通过控制端点0中使用SetReport来完成的。主机先向门禁考勤系统请求发送数据,设备响应请求后,主机便开始执行。当有数据到达设备的终端0时,将对设备产生一个中断。此时,相应的中断服务程序便将数据复制到数据缓冲区。一旦进入端点0的中断服务程序,所有的中断必须关闭,确保能够正确地复制数据。微处理器的数据缓冲区编程为可以接收64个字节,这个值是存放在设置包的包头请求信息中。从主机处接收到的最大包大小,是根据它将发送给门禁考勤系统的最大数据量来决定的。系统还使用了Put_command线程,通过1个I/O端口引脚,向门禁考勤系统串口发送数据。在执行此线程时,根据串口通信协议插入了起始位、停止位以及相应的延时。从门禁考勤系统接收数据的过程是利用端点1完成的。端点1配置为1个中断输入端点,当有1个起始位到达引脚时,GPIO中断必须打开,并关闭所有其它类型中断。设计中通过使用1个Get_Serial线程来收集I/O引脚发出的串行数据,并把它存入数据缓冲区。同时该线程负责检验接收到的起始位和停止位的正确性。当收到8个字节时,将接收缓冲区中的数据复制到终端1的缓冲区,并且允许微处理器响应中断输入请求。考虑到一般串行口的有效波特率的范围在300~19200bps,我们按处于最大波特率19200bps的情况来考虑,传输1个字符需要时间接近0.75ms;而1个输入中断大约每10ms送1个8字节的数据包,因此,设计1个128字节的快速数据缓冲区便可以保证不会丢失数据。RS232-USB接口转换模块用于改进我们的IC卡门禁考勤系统,使用效果良好。RS-232串口信号线接法一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍是以25芯的RS-232C为例。1、主要信号线定义:引脚1:保护地;引脚2:发送数据TXD;引脚3:接收数据RXD;引脚4:请求发送RTS;引脚5:清除发送CTS;引脚6:数据设备就绪DSR;引脚7:信号地;引脚8:数据载波检测DCD;引脚20:数据终端就绪DTR;2、电气特性:数据传输速率最大可到20Kbps,最大距离仅15m。注:看了微软的MSDN6.0,其WindowsAPI中关于串行通讯设备(不一定都是串口RS-232C或RS-422或RS-449)速率的设置,最大可支持到RS_256000,即256Kbps!也不知道到底是什么串行通讯设备?但不管怎样,一般主机和单片机的串口通讯大多都在9600bps,可以满足通讯需求。3、接口的典型应用:大多数计算机应用系统与智能单元之间只需使用3到5根信号线即可工作。这时,除了TXD、RXD以外,还需使用RTS、CTS、DCD、DTR、DSR等信号线。(当然,在程序中也需要对相应的信号线进行设置。)图最简单的RS232-C信号线接法以上接法,在设计程序时,直接进行数据的接收和发送就可以了,不需要对信号线的状态进行判断或设置。(如果应用的场合需要使用握手信号等,需要对相应的信号线的状态进行监测或设置。SPMC65P2404A在智能测温中的应用本文简要介绍了温度传感器DS18B20的特点,分析了智能测温的应用,设计了以凌阳SPMC65P2404A单片机为核心的温度采集系统。1.1引言智能温度传感器(亦称数字温度传感器)产生于20世纪90年代。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。目前,国际上已开发出多种智能温度传感器系列产品。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(cpu)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。1.2智能测温应用1.2.1智能测温在农业大棚温控系统中的应用温度的*和控制可以说是在现在农业最常用的技术,目前农村几乎每家都有离房屋一定距离的室外育秧棚,但大部分使用的是普通温度计,且温度计智能放在育秧棚内,棚内有露水,不易看清温度,需多次来回察看,很不方便,稍微不注意,便会出现温度偏高,秧苗坏死的情况。随着现在信息技术的飞速发展和传统工业的逐步改造的实现,能够独立工作的温度检测、显示及报警系统,迫切需求于现代农业技术。1.2.2智能测温在化学工业上的应用在化工领域中,经常需要检测和控制反应釜中的液体的温度,使之能够稳定在一定的范围之内。只有这样才能得到可靠的试验数据或者得到合格的产品,这就要求系统对温度的检测,具有足够的精度和真实性,控制要有足够的精度,并且尽可能具有较低的成本,这样的产品才具有真实价值。本智能测温恰具有这样的优势,由于其可直接输出数字量,不需要A/D转换,与单片机接口容易,成为原来传统使用的热电偶、热电阻理想的替代品。1.2.3智能测温在粮库温度监测系统中的应用保证粮库中储藏粮食的安全,一个十分重要的条件就是要求粮食储藏温度保持在18℃~20℃之间。对于出现不正常升温,要求能够迅速的监测到,并且报警,使工作人员可以马上采取措施降温,如打开通排风设备等。本智能测温系统,可以程序设定9~12位的分辨率,测量温度范围为-55℃~+125℃,在-10℃~+851.2.4智能测温在中央空调上的应用随着人们生活水平的提高,住房条件的改善,人们对空调的舒适性和空气品质的要求越来越高.分体式空调已不能满足人们的要求,户式中央空调得到了迅猛的发展.目前它的控制技术较多借鉴中央空调系统,靠设置机械温控开关来实现房间的恒温控制.这种控制方法,一方面操作不便,另一方面因温度波动范围大,影响人的舒适感,而且会造成一定的能量损耗.在我们设计的智能测温系统中,测量精度高,热惯性小,硬件连线简单,可靠性强。另外,只能测温系统还可广泛应用于火灾报警系统、土木工程、煤矿等农业和工业的各个行业,应用前景非常广泛。1.4SPMC65P2404A芯片简介1.5DS18B20单线数字温度传感器由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。DS18B20的性能特点:◆采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)◆测温范围为-55℃~~~+125℃,测量分辨率为◆内含64位经过激光修正的只读存储器ROM◆适配各种单片机或系统机◆用户可分别设定各路温度的上、下限◆内含寄生电源。DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图2所示。显示器是人类与应用设备沟通的重要界面,近年来,随着电子技术的飞速发展,液晶显示技术在实际生活中得到了广泛应用。液晶显示模块以其微功耗、体积小、显示内容丰富、模块化以及接口电路简单等诸多优点在科研、生产和产品设计等领域中发挥着越来越重要的作用。LM3033B系列液晶显示模块是深圳TOPWAY公司生产的中文显示模块中的一员。采用了台湾的ST7920控制芯片,并提供了中文字库,为中文显示开发方面带来了更多的方便。本文以LM3033B-0BR3为例介绍了12864点阵液晶显示模块的引脚、结构、功能,详述了与AT89S52单片机的硬件接口电路及有关软件编程方法。1LM3033B-0BR3特点及操作1.1字符显示每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:显示自定义字型其代码分别是0000H、0002H、0004H和0006H共4个,显示半宽ASCII码字符为02H~7FH,A1A0H~F7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如表1所示。表1字符显示的RAM地址与32个中文字符显示区域的对应关系、80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH9DH9EH9FH.2图形显示绘图显示RAM提供64x32个位元组的记忆空间(由扩充指令设定绘图RAM位址),在更改绘图RAM时,由扩充指令设定GDRAM位址先设置垂直位址,再设置水平位址(连续写入两个位元组的资料来完成垂直与水平的坐标位址),再写入两个8位的资料到绘图RAM,而位址计数器(AC)会自动加一,整个写入绘图RAM的步骤如下:a.关闭绘图显示功能(在写入绘图RAM期间,绘图显示必须关闭);b.先将垂直的位元组(Y)写入绘图RAM位址;c.再将水平的位元组(X)写入绘图RAM位址;d.将D15~D8写入到RAM中;e.将D7~D0写入到RAM中。单片机与RS232串口通信C51程序/*************************************************************************/#include"iom16v.h"#include<macros.h>#definebaud9600//波特率#definefosc8000000//晶振8MHZ/*************************初始化函数**********************/voidUSART_Init(void){/*设置波特率*///UBRR=51;//UBRRH=(unsignedchar)(baud>>8);//UBRRL=(unsignedchar)(baud);UBRRL=(fosc/16/baud-1)%256;UBRRH=(fosc/16/baud-1)/256;/*接收器和发送器使能*/UCSRB=(1<<RXEN)|(1<<TXEN);/*设置数据帧格式*/UCsrc="/blog/(1<";<URSEL)|(1<<USBS)|(3<<UCSZ0);//8个数据位,2个停止位}/********************数据发送函数(5~8位)*********************/voidUSAR

温馨提示

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

评论

0/150

提交评论