ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:475.79KB ,
资源ID:4682372      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4682372.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ds18b20转十进制数.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ds18b20转十进制数.docx

1、ds18b20转十进制数DS18B20温度转换一、初始化1、步骤:1)、有总线控制器发出复位脉冲 2)、从机发出存在脉冲。(存在脉冲让总线知道DS15B20在总线上已准备好操作、一旦总线控制器探测到一个存在脉冲,就可以发出ROM命令)2、初始化过程“复位”和“存在”脉冲3、过程:送 1 复位送 0 拉低(800us)送 1 产生一个上升沿(50us)检测低电平检测高电平4、程序:init_1820()/1820初始化 unsigned char a,b,c; p23=1;/复位 p23=0;/拉低800us for(b=2;b0;b-) for(a=200;a0;a-); p23=1;/产生一

2、个上升沿, 进入等待应答状态 for(b=1;b0;b-)/延时50us for(a=25;a0;a-); while(p23=1); while(p23=0);/检测到应答脉冲 二、写Ds18b20的数据读写是通过时间间隙处理和命令来确认信息交换1、步骤:1)主机把数据从逻辑高电平拉到低电平,写时间间隙开始(写时间间隙必须最少持续60us,包括两个写周期至少1us的恢复时间。) 2)I/O线电平拉低后,DS18B20在一个15us到60us的时候对I/O线采样。如果线上为高电平,就是写1,如果线上是低电平,就是写02、写时序图:1) 写0:先把数据线拉低15us,然后在至少保持15us的低电

3、平,进行写0(数据线必须被拉至逻辑低电平且至少保持30us),然后必须拉高恢复(至少1us,不用考虑)。2) 写1:数据线必须被拉至逻辑低电平(至少1us,不用考虑)然后在从开始的15us内(也就是14us内)拉至到电平,3、程序写0:write0()/写0 uchar a,b; DQ=0;/拉低 for(a=6;a0;a-);/拉低15us for(a=21;a0;a-); /送入0至少45us,DS1820采样,(其实15us就行) /总共拉低至少60us/或for(b=15;b0;b-)/60us /for(a=2;a0;a-); DQ=1;/拉高恢复(至少1us) _nop_(); 写

4、1:write1()/写1 DQ=0;/拉低(至少1us) _nop_(); DQ=1;/15us之内送入高电平(其实不用非得15us之内) _nop_(); 三、读1、步骤:1)主机把数据线从高电平拉至低电平时,产生读时间片2)数据线必须保持低电平至少1us,读1820输出的数据在读时间片后的15us内有效(在读之前必须停止送低电平(也就是送高电平)低电平1us后直接拉高等待读数据)3)读时间片的最短持续时间为60us,各个读时间片之间要有最短为1us的恢复时间2、读时序3、程序uchar ds1820rd()/读数据 uchar a,b,i,dat = 0,dat1 = 0; for (i

5、=8;i0;i-) DQ = 0; /给脉冲信号延时1us _nop_(); DQ = 1; /给脉冲信号 准备读数据 if(DQ)/读 判为1为0 dat|=0x01; else dat&=0xfe; dat=_cror_(dat,1); for(b=3;b0;b-)/延时60us for(a=8;a0;a-); return(dat); 四、温度准换流程1、ROM操作命令Skip ROM(“跳过”ROM)CCh在单点总线系统中此命令通过允许总线主机不提供64位ROM编码而访问存储器操作节省时间。(在多于一个的从属器件责不可以使用该命令。)2、存储器操作命令Convert T44h启动温度变

6、换这条命令启动一次温度转换而无需其他数据。温度转换命令被执行后DS1820白痴等待转换状态。Read ScratchpadBEh读暂存存储器这个命令读取暂存器的内容。读取从字0开始,一直进行下去,直到第9(字节8,CRC)字节读完四、流程初始化10 800us1 50us检测0检测1nopnop写指令a=数&0x01a=0 写00 60us1 nopa=1 写1 0 nop 1 nop左移 数 循环8次nopnop读数据0nop1nop读 为1 a|=0x01 为0 a&=0xfe左移a60us循环8次主函数初始化写指令0xcc写指令0x44初始化写指令0xcc写指令0xbea=读数据b=读数

7、据b=8t=b|at=t*0.0625显示t五、源程序/*DS18B20温度显示温度传感器 DQ接p1.1数码管 (用164串口) */#include#include#define uchar unsigned char #define uint unsigned int sbit DQ=P11;uchar tab=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;init_1820()/1820初始化 unsigned char a,b,c; DQ=1;/复位 DQ=0;/拉低800us for(c=1;c0;c-)/延时800us for

8、(b=2;b0;b-) for(a=197;a0;a-); DQ=1;/产生一个上升沿, 进入等待应答状态 for(b=1;b0;b-)/延时50us for(a=22;a0;a-); while(DQ=1); while(DQ=0);/检测到应答脉冲 _nop_(); _nop_();write0()/写0 uchar a,b; DQ=0;/拉低 for(a=6;a0;a-);/拉低15us for(a=21;a0;a-); /送入0至少45us,DS1820采样,(其实15us就行) /总共拉低至少60us DQ=1;/拉高恢复(至少1us) _nop_(); write1()/写1 DQ

9、=0; _nop_(); DQ=1; _nop_(); wr18b20(uchar k)/写指令 uchar i,b; for(i=0;i0;i-) DQ = 0; /给脉冲信号0 _nop_(); DQ = 1; /给脉冲信号1 if(DQ)/读 判为1为0 dat|=0x01; else dat&=0xfe; dat=_cror_(dat,1); for(b=3;b0;b-)/60us for(a=8;a0;a-); return(dat); teml()/温度转换子程序 uint b,t,a; init_1820();/初始化 wr18b20(0xcc);/写入跳过序列号命令字 Skip

10、 Rom wr18b20(0x44);/写入温度转换命令字 Convert T init_1820(); wr18b20(0xcc);/写入跳过序列号命令字 Skip Rom wr18b20(0xbe);/写入读取数据令字 Read Scratchpad a=ds1820rd();/读低8位 b=ds1820rd();/读高8位 t=b; t=8;/高八位左移 t=t|a;/高低八位组合 t=t*0.0625;/转换温度值 return(t);display(uint c)/显示子程序 SBUF=tabc%10; while(TI=0); TI=0; SBUF=tabc/10%10; while(TI=0); TI=0; SBUF=tabc/100%10; while(TI=0); TI=0;main() uint b; while(1) b=teml(); display(b);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2