《第8章 串行总线接口技术与C51编程.ppt》由会员分享,可在线阅读,更多相关《第8章 串行总线接口技术与C51编程.ppt(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机C 语言编程与实践第8章 串行总线接口技术与C51编程1.单线总线2.I2C 总线本章主要内容:单线总线1.单总线数字温度传感器DS18B20()DS18B20 的特性指标1)只需一根口线与MCU 连接,无需外围元件。2)由总线提供电源,或专线供电。3)测温范围为-55+125,测量精度为0.5。4)912 位二进制温度读数5)温度转换时间为200ms6)用户自行设定温度报警上下限,掉电后数据有效7)可识别并寻址系统中温度超限报警的DS18B20 芯片单线总线1.单总线数字温度传感器DS18B20()DS18B20 的电源及工作原理1)DS18B20 的供电方式DS18B20 有两种供电
2、方式,一种是外部供电,即从VDD 引脚加+5V 电源,GND 接地;另一种是寄生电源供电,DS18B20 直接从DQ总线上获得电源,当DQ为高电平时,向内部电容充电储存能量,当DQ为低电平时,由电容向内部电路供电。当使用寄生电源方式时VDD 引脚必须连接地,且DQ总线上必需提供足够的电流,以确保DS18B20 温度转换过程中有稳定的电源。单线总线1.单总线数字温度传感器DS18B20()DS18B20 的电源及工作原理2)DS18B20 的测温原理:DS18B20 通过内部温度寄存器接收一个受温度系数影响的振荡器输出的脉冲个数直接得到数字温度数据。温度转换命令执行后,发送读高速暂存器命令(BE
3、h)可将温度数据经单线总线读出,温度数据传输时,低位在先。当接收到温度转换命令44h 后,DS18B20 的内部数字化温度转换器将温度数据以二进制补码形式储存到16bit 快速暂存器中,有效数据位可编程设定为:9 位,10 位,11 位,12 位,分别对应四种温度分辨率:0.5 C,0.25 C,0.125 C,0.0625 C,有效数据最高位为符号位,可表示温度的正负值,高字节的其它高位扩展为符号位;有效数据的低四位表示温度的小数位。DS18B20 出厂时的默认状态为12 位。单线总线1.单总线数字温度传感器DS18B20()DS18B20的电源及工作原理3)温度与转换数据的关系:温 度数据
4、输出(二进制补码)数据输出(十六进制)+125 0000 0111 1101 0000 07D0h+85 0000 0101 0101 0000 0550h*+25.0625 0000 0001 1001 0001 0191h+10.125 0000 0000 1010 0010 00A2h+0.5 0000 0000 0000 1000 0008h0 0000 0000 0000 0000 0000h-0.5 1111 1111 1111 1000 FFF8h-10.125 1111 1111 0101 1110 FF5Eh-25.0625 1111 1110 0110 1111 FF6Fh
5、-55 1111 1100 1001 0000 FC90h单线总线1.单总线数字温度传感器DS18B20 4)报警信号的应用DS18B20 每次执行完温度转换后,温度值将与储存在TH 和TL 内的触发值相比较,如果温度测量的结果高于TH 或低于TL 会置位内部报警标志位。在联连接多片DS18B20 的应用系统中,主机发送报警搜索命令(ECh)时,有置位报警标志位的DS18B20 会响应总线主机发回标志位,其它没有置位报警标志位的DS18B20 保持沉默,便于主机立即识别DS18B20 并读取数据。16 位的温度寄存器与8 位TH 或TL 寄存器内容进行比较操作时,将忽略温度寄存器高字节,而TH
6、 或TL 的最高位对应温度数据的符号位。单线总线1.单总线数字温度传感器DS18B20(3)DS18B20 的内部结构DS18B20 由三个主要数字器件组成:64bit 闪速ROM、温度传感器、温度存储器。(高速暂存RAM 与)。单线总线1.单总线数字温度传感器DS18B20(3)DS18B20 的内部结构1)64bit 闪速ROM 的结构单线总线1.单总线数字温度传感器DS18B20(3)DS18B20 的内部结构2)DS18B20 结构配置寄存器Bits0-4 始终为“1”,Bit7 始终为“0”,Bit6bit5(R1R0)决定温度分辨率及对应的温度转换时间0 R1 R0 1 1 1 1
7、 1温度分辨率配置表R1 R0测温分辨率 最大温度转换时间0 09-bit 93.75ms0 110-bit 187.5ms1 011-bit 375ms 1 112-bit 750ms单线总线1.单总线数字温度传感器DS18B20(3)DS18B20 的内部结构3)存贮器DS18B20 的存储器由一个高速暂存器RAM和一个永久性电可擦除组成,后者存储高、低温度触发器TH、TL 和结构配置寄存器的内容。高速暂存器字 节温度低字节 LB0温度高字节 HB1温度触发高字节 TH 2温度触发低字节 TL3结构配置 CONFIG4保 留5保 留6保 留7循环冗余校验码(CRC)8单线总线1.单总线数字
8、温度传感器DS18B20(3)DS18B20 的内部结构4)循环冗余校验码CRC 产生DS18B20 内部64 位ROM 最高有效字节是循环冗余校验码CRC。主机可以读出64 位ROM 的前56 位计算出CRC 的值,并把它与存贮在DS18B20 内的CRC 值进行比较,以决定ROM 的数据是否已被主机正确地接收。计算CRC 的等效多项式函数为:CRC=X8+X5+X4+1单线总线1.单总线数字温度传感器DS18B20(4)DS18B20 的操作命令DS18B20 经单线接口协议进行存取操作的顺序是:初始化(发复位脉冲)ROM 功能命令操作存储器功能命令操作数据处理操作。1)初始化单线总线1.
9、单总线数字温度传感器DS18B20(4)DS18B20 的操作命令2)ROM 命令代码及功能 读ROM 命令33h:在单片DS18B20 系统应用中,用该命令读出其序列号、系列号和CRC;在总线上有多个DS18B20 的系统中用该命令,将发生冲突。匹配ROM 命令55h:多个DS18B20 在线应用时,总线主机在读取64 位ROM 信息后用该命令寻址指定的DS18B20,只有64 位ROM 顺序正确匹配的DS1820 才相应此后的存储器操作命令,其它不匹配的从属器件将等待复位脉冲。该命令在单片DS18B20 系统应用中也能用。单线总线1.单总线数字温度传感器DS18B20(4)DS18B20
10、的操作命令2)ROM 命令代码及功能 跳过ROM 命令CCh:在单片DS18B20 系统应用中,总线主机发送该命令后直接执行存储器操作,而不需要传输64 位ROM 信息,可以节省存取时间。在总线上有多个DS18B20 的系统中用该命令,将发生冲突。搜索ROM 命令F0h:系统初始化后,总线主机不知道总线上器件的数目和器件的64 位ROM 码,利用搜索ROM 命令可使总线主机采用消除处理法识别总线上所有从属器件的64 位ROM 码。报警搜索命令ECh:该命令与搜索ROM 命令的流程相同,只有前次温度测量时满足报警条件的DS18B20 才响应该命令。报警条件定义为温度高于TH 或低于TL 中的数值
11、,DS1820 上电时报警条件被置位。单线总线1.单总线数字温度传感器DS18B20(4)DS18B20 的操作命令3)存储器操作命令代码及其含义 温度转换命令44h:启动在线DS1280 进行温度转换。写高速暂存器命令4Eh:写入高速暂存器命令。从TH 寄存器开始连续写入三个字节,存储到高速暂存器的24 单元:TH、TL、CONFIG。三个字节都必须在复位操作之前写入。读高速暂存器命令BEh:读取高速暂存器命令。读操作从字节0 开始连续读出,低位在前,直到读完第九个字节。没有读完所有字节时,总线主机发送复位脉冲可终止读操作。单线总线1.单总线数字温度传感器DS18B20(4)DS18B20
12、的操作命令3)存储器操作命令代码及其含义 拷贝高速暂存器命令48h:将高速暂存器中TH、TL、CONFIG三个字节数值拷贝到EERAM 中,保存温度触发器和结构配置的内容不丢失。召回EEROM 命令B8h:将EERAM 中TH、TL 和CONFIG 的数值拷贝到高速暂存器相应单元中。读供电状态命令B4h:读出供电模式:“0”为寄生电源;“1”为外部电源。单线总线1.单总线数字温度传感器DS18B20(5)单线总线的读/写时隙1)写时隙单线总线1.单总线数字温度传感器DS18B20(5)单线总线的读/写时隙1)读时隙单线总线2.单片DS18B20温度检测应用设计(1)硬件电路设计单线总线2.单片
13、DS18B20温度检测应用设计(1)硬件电路设计单线总线2.单片DS18B20温度检测应用设计(1)系统应用程序#include#includeunsignedchartimecount;unsignedcharread_data9;unsignedchartempL;/*温度转换结果低字节*/unsignedchartempH;/*温度转换结果高字节*/sbitDQ=P17;bitsflag;单线总线2.单片DS18B20温度检测应用设计(1)系统应用程序/*/voidmain(void)while(reset_pulse();/*发送复位脉冲,确认DS18B20 存在*/write_comd_18b20(0 xcc);/*发送跳过ROM 命令*/write_comd_18b20(0 x4e);/*发送写高速暂存器命令*/write_comd_18b20(0 x75);/*发送写TH 字节*/write_comd_18b20(0 x18);/*发送写TL 字节*/write_comd_18b20(0 x3f);/*发送CONFIG 字节,分辨率0.25*/while(reset_pulse();/*发送复位脉冲,确认DS18B20 存在*/write_comd_18b20(0 xcc);/*发送跳过ROM 命令*/
限制150内