《温度采集系统》PPT课件.ppt
基于单片机的温度采集系统的设计,导 师:王伟专 业:电子信息工程,论文框架,研究背景硬件设计软件设计结论,1,2,3,4,研究背景,随着社会的发展,科学技术的进步同时也带动了测量技术的发展,现代控制设备不同于以前,它们在性能和结构发生了翻天覆地的变化。我们已经进入了高速发展的信息时代,测量技术是当今社会的主流,广泛地深入到应用工程的各个领域。温度采集器是可以通过温度传感器与单片机组合使用能测试温度的仪器,该系统结构简单,抗干扰能力强,适合恶劣环境下进行现场温度测量,有广泛的应用前景。多路无线温度采集系统可被广泛应用于温度测量或相应的可转换为温度量或供电故障监控的工业、农业、环保、服务业、安全监控等工程中,例如:城市路灯故障检测和供电线路防盗监视、城市居民小区供热检测、大型仓库温度检测、工业生产测控、农业生产温度测控、环保工程、故障监控工程等。考虑到许多工业环境中对多点温度进行监控,一般需要测量几十个点以上。本文设计多路无线温度监控系统。,硬件设计,2.1 设计的基本方案 温度采集器电路设计总体方框图如图2-1所示,控制器采用单片机STC89C52RC,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。,硬件设计,2.2 硬件部分的选择 单片芯片:采用STC89C52单片机。STC89C52单片机是低功耗,高可靠的单片机,是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。温度传感器:DS18B20测温传感器使用二极管结电压变化的数值来转化成温度的变化,在将随被测温度变化的电压或电流采集过来,进行AD转换后就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来。显示:采用传统的四位共阴数码管显示。数码管具有低压低耗能、寿命长、对外界环境要求低等特点,而且其精度比较高。采用BCD编码方式显示数字,程序编译简单,价格较低。,硬件设计,本设计主要由单片机、温度采集器、LED数码管显示等部分组成。温度采集器用来采集温度并将数据转换成单片机可以识别的数据,然后再四位数码管上显示出测量到的温度。,2.3 总体电路设计,软件部分,3.1 主程序流程图,主程序的功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图,软件部分,3.2 DS18B20温度传感器运行时序 软件设计关键在于DS18B20的使用,DS18B20属于单线式器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议,来对读写数据提出严格的时序要求,而AT89C51单片机并不支持单线传输,因此必须采用软件的方法来模拟单线的协议时序,操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。当DS18B20接收到温度转换命令后,开始启动转换,转换完成后的温度值就以16位符号扩展的二进制补码形式存储在高速暂存存储器的第1、2自己。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625/LSB表示、当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制:当符号位S=1时,表示测得的温度为负值,要先将补码变成原码,再计算十进制数值。,软件部分,(1)初始化 单总线的所有处理均从初始化开始,初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可以进行读写操作(2)ROM操作命令 总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一(3)存储器操作命令如下表,软件设计,(4)时序 主机使用时间隙来读写DS18B20的数据位和写命令字的位初始化 时序见上图,主机总线to时刻发送一复位脉冲(最短为480us的低电平信号),接着在t1时刻释放总线进入接收状态。DS18B20在检测到总线的上升沿后等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us)。如上图中虚线所示。,软件设计,写时间隙 当主机总线t0时刻从高位至低电平时,就产生写时间隙见上图,从t0时刻开始15us之内应将所需写的位送到总线上,DS18B20在t0后15-60us间对总线采样。若低电平,写入的位是0.见4-3图,若高电平写入位是1见4-4图。连续写2位间的间隙应大于1us。读时间隙 见下图,主机总线t0时刻从高拉至低电平时,总线只须保持低电平1us,之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效,t2距t0为15us。也就是说t2时刻前主机必须完成读位,并在t0后的60us-120us内释放总线,读位子程序(读得的位到C中),软件设计,DS18B20读写程序:ReadTemperature(void)uchar a=0;uchar b=0;ulint t=0;float tt=0;Init_DS18B20();WriteOneChar(0 xCC);/跳过读序号列号的操作WriteOneChar(0 x44);/启动温度转换Init_DS18B20();WriteOneChar(0 xCC);/跳过读序号列号的操作WriteOneChar(0 xBE);/读取温度寄存器等(共可读9个寄存器)前两个就是温度,软件设计,a=ReadOneChar();b=ReadOneChar();t=b;t=2048)t=0 xffff;dis_buf3=11;tt=t*0.0625;/数值转换t=tt*10;/放大10倍,使显示时可显示小数点后一位return(t);,结论,最后附上我们的实物图,也是我们这学期的成果。,谢谢大家!,