1、项目十 8路温度采集监控系统,计算机控制项目实战,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ h
2、ttp:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,项目十 8路温度采集监控系统,终极目标: 能利用AT89S52单片机及DS18B20单线数字传感器,通过C语言程序实现8路温度采集监控,完成单片机输入输出控制系统的设计、运行及调试。 促成目标: 了解DS18B20内部结构; 掌握DS18B20工作步骤; 掌握DS18B20的通讯协议; 会利用I/O口进行键盘、显示以及温度采集电路设计; 会利用ROM操作命令和存储器操
3、作命令实现温度采集。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/ww
4、w.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,DS18B20温度传感器,温度测量与控制技术在工业、农业、国防等行业有着广泛的应用。 DS18B20单线数字温度传感器因测量精度高电路简单,价格低廉而被广泛使用。 每片DS18B20 都有唯一的产品序列号并存储在内部ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个 DS18B20芯片,为测量系统的构建引入全新概念。,DS18B20温度传感器,温度测量与控制技术在工业、农业、国防等行业有
5、着广泛的应用。 DS18B20单线数字温度传感器因测量精度高电路简单,价格低廉而被广泛使用。 每片DS18B20 都有唯一的产品序列号并存储在内部ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个 DS18B20芯片,为测量系统的构建引入全新概念。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/
6、www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,DS18B20引脚功能,DS18B20通过一个单线接口发送或接收信息,因此在单片机和DS18B20之间仅需一条连接线(加上地线)。,http:/www.ort-
7、http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ ht
8、tp:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,DS18B20供电方式,寄生电源方式 是在信号线处于高电平期间把能量储存在内部寄生电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。 外部供电方式 外部供电方式是从VDD引脚接入一个外部电源。,DS18B20内部结构及功能,主要包括: 寄生电源、温度传感器、64位ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、存储与控制逻辑、8位循环冗余校验码(CRC)
9、产生器、配置寄存器等部分。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:
10、/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,64位光刻ROM,光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该 DS18B20的地址序列码。 64位光刻ROM的排列是: 开始8位(28H)是产品类型标号; 接着的48位是该DS18B20自身的序列号; 最后8位是前面56位的循环冗余校验码。 光刻ROM的作用是使每一个 DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。,温度传感器,完成对温度
11、的测量,以12位转化为例: 用16位符号扩展的二进制补码读数形式提供; 这是12位转化后得到的12位数据,存储在两个8比特的RAM中,二进制中的前面5位是符号位。 如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度; 如果温度小于0,这 5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/
12、http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,温度/数据转换关系,存储器,暂存存储器包含了8个连续字节 第一个字节的内容是温度
13、的低八位,第二个字节是温度的高八位。 第三个和第四个字节是TH、TL 的易失性拷贝,第五个字节是配置寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。 第六、七、八个字节用于内部计算。 第九个字节是冗余检验字节。 一个非易失性的可电擦除的EEPROM,后者存放高温度和低温度触发器TH、TL和配置寄存器。,配置寄存器,配置寄存器字节各位的意义如下: 低五位一直都是1。 TM用于设置DS18B20在工作模式还是在测试模式。出厂时该位被设置为0,用户不要去改动。 R1和R0用来设置分辨率,出厂时被设置为12位。,http:/www.ort- http:/ http:/ http:/ ht
14、tp:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http
15、:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,DS18B20通讯协议,通过单线总线端口访问DS18B20的协议主要包括 初始化; ROM操作命令; 存储器操作命令及执行/数据。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- htt
16、p:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,初始化,和DS18B20之间的任何通讯都需要以初始化序列开始。 初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的存在脉冲。 DS18B20初始化代码如下: void
17、Init_DS18B20(void) DQ = 1; /DQ复位Delay(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay(80); /精确延时大于480usDQ = 1; /拉高总线,释放总线Delay(14);Delay(20); ,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ww
18、w.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,ROM 操作命令,一旦总线控制器探测到一个存在脉冲,它就可以发出5个ROM命令中的任一个,所有ROM操作命令都8位长度。,Read ROM33h,这个命令允许总线控制
19、器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。 只有在总线上存在单只DS18B20的时候才能使用这个命令。如果总上有不止一个从机,当所有从机试图同时传送信号时就会发生数据冲突(漏极开路连在一起开成相与的效果)。,Match ROM55h,匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。 只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作命令。所有和64位ROM序列不匹配的从机都将等待复位脉冲。 这条命令在总线上有单个或多个器件时都可以使用。,Skip ROMCCh,这条命令允许总线控制器不用提供64位ROM编码就
20、使用存储器操作命令,在单点总线情况下用以节省时间。 例如:向DS18B20写一个dat=0xCC字节,跳过读序列号的操作,代码如下: void WriteOneChar(unsigned char dat) unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat ,Search ROMF0h,当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。 搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。,http:/www.ort- http:/ http:/ http:/ http:/ http:
21、/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/
22、http:/ http:/ http:/ http:/ http:/ http:/,Alarm SearchECh,这条命令和Search ROM相同,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。 报警条件定义为温度高于TH或低于TL。 只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/
23、 http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,存储器操作命令,Write Scratchpad4E 这个命令向
24、DS18B20的暂存器中写入数据,开始位置在地址2。 接下来写入的两个字节将被存到暂存器中的地址位置2和3。 可以在任何时刻发出复位命令来中止写入。,存储器操作命令,Read ScratchpadBEh 这个命令读取暂存器的内容。 读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。 如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。 例如:读取温度转换结果步骤如下: 发读取暂存器命令,代码与实现跳过读序列号操作代码一样;WriteOneChar(0xBE); 读取温度转换结果的低8位a=ReadOneChar(); 读取温度转换结果的高8位b=ReadOne
25、Char();,ReadOneChar()函数,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_7)dat|=0x80;Delay(4);return(dat); ,http:/www.ort- http:/ http:/ http:/ http:/ http:/www.light- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/www.zg- http:/www.skf- http:/www.nsk- http:/www.fag- http:/ http:/www.ntn- http:/ http:/ http:/ http:/ http:/ http:/www.xunchi- http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/ http:/,