- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
13.1.1 硬件电路设计 下图是DS18B20数字温度计的硬件电路。 13.1.2 基本功能 数字温度计的基本功能如下: 1.AT89C51每间隔1秒向DS18B20发送测量温度指令, 并读出当前环境温度; 2.在读出当前环境温度值后,用LCD1602显示温度转 换的结果; 3.LCD1602的第一行用于显示DS18B20的64位序列 号,第二行显示当前温度; 4.上图中,DS18B20上的两个按钮可以修改环境温 度,温度值的步进值在DS18B20的属性窗口中的 Granularity设置。 13.2 程序设计 13.2.1 程序代码设计 部分程序代码如下: 1、1Wiredrv.c /********************************************** 程序名称: 1-Wire总线驱动 时钟频率: 12MHz **********************************************/ sbit DQ=P3^4; // DS18B20接在AT89C51的P3.4脚 // 微秒级延迟,t=us*16+24 void delay(int us) { int s; for(s=0;sus;s++); } // 1-Wire总线初始化子程序 void busreset(void) { unsigned char n; DQ=0; delay(29); // 484us DQ=1; delay(3); // 72us n=DQ; delay(25); // 400us } // 读一个bit unsigned char readbit(void){ unsigned char i; DQ=0; DQ=1; for(i=0;i3;i++); return(DQ);} // 写一个bit void writebit(charbitval) { DQ=0; if(bitval==1)DQ=1; delay(5); DQ=1;} // 读一个字节 unsigned char readbyte(void) { unsigned char i,value=0; for(i=0;i8;i++) { if(readbit()) value|=0x01i; delay(6); } return(value); } // 写一个字节 void writebyte(char val) { unsigned char i,temp; for(i=0;i8;i++) { temp=vali; temp=0x01; writebit(temp); } delay(5); } 13.2.2 仿真结果 下图是Proteus软件仿真调试的结果,LCD1602的第一 行显示的是DS18B20的64位序列号,第二行显示的是当 前环境的温度,可以看到测量温度和设置温度是一致 的。 13.3 相关知识:DS18B20介绍和1-Wire总线接口 13.3.1 DS18B20的外观及功能 如上图所示,DQ为数字信号输入/输出端;GND为电源 地;VDD为外接供电电源输入端;温度测量范围为- 55℃~+125℃,可编程为9位~12位A/D转换精度,分辨 率可达0.0625℃,温度测量结果以16位数字量方式串行 输出; 多个DS18B20可以并联到同一数据线上,CPU只需 一根端口线就能与多个S18B20通信,以上特点使DS18B20 非常适用于远距离多点温度检测系统。 DS18B20内部结构如下图所示,主要由五部分组成: 电源控制单元,1-Wire接口单元,暂存器单元, EEPROM单元,温度传感器单元 。 13.3.2 DS18B20存储器结构 如图13-5所示,DS18B20存储空间由EEPROM和暂存器 两部分构成。EEPROM大小为3个字节,分别存放报警 温度上限、报警温度下限以及配置字这3个参数。 13.3.3 DS18B20的命令序列及操作时序 1. 命令序列 典型的单总线命令序列如下: 第一步:初始化; 基于单总线上的所有传输过程都是以初始化开始的,初始化过程 中由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲 使主机知道,总线上有从机设备,且准备就绪 。 第二步:ROM命令; 搜索ROM[0XF0]:该命令可以找出总线上所有从机设备,获得所 有从设备的64位ROM代码。 读ROM[0X33]:如果总线上只有一个从机设备,主机可以通过指 令读出从机的64位ROM代码,而无须执行搜索ROM命令;如果在多 从机系统中使用该指令,总线上会出现数据冲突。 匹配ROM[0X55],忽
原创力文档


文档评论(0)