ImageVerifierCode 换一换
格式:PPT , 页数:27 ,大小:326.85KB ,
文档编号:4290305      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4290305.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

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

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(51单片机与DS18B20解析课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

51单片机与DS18B20解析课件.ppt

1、DS18B20的管脚排列的管脚排列1.GND为电源为电源 地;地;2.DQ为数字信号输入输出端;为数字信号输入输出端;3.VDD为外接供电电源输入端为外接供电电源输入端(在寄生电源接线方式时接地,(在寄生电源接线方式时接地,寄生电源工作方式寄生电源工作方式(电源从(电源从IO口上获得)口上获得)注意:当温度高于注意:当温度高于 时,不能使用寄生电源,因为此时时,不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。数据传输误码率的增大。外接电源工作方式外接电源工作方式(因为我们开发板上P0

2、P3口均有上拉电阻 所以此处没有画出)配置寄存器与分辨率关系表温度的低八位数据 0温度的高八位数据 1高温阀值2低温阀值3保留4保留5计数剩余值6每度计数值7CRC校验8主机首先发出一个主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后微秒的低电平脉冲,然后释放总线变为高电平,并在随后的的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的做为从器件的DS18B2

3、0在一上电后就一直在检测总线上是否有在一上电后就一直在检测总线上是否有480960微秒的低微秒的低电平出现,如果有,在总线转为高电平后等待电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低微秒后将总线电平拉低60240微微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱,单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱,1-WIRE 器件将不响应主机,因此读写时序很重要。系统对器件将

4、不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必的各种操作必须按协议进行。根据须按协议进行。根据 DS18B20 的协议规定,微控制器控制的协议规定,微控制器控制 DS18B20 完成温度的转换完成温度的转换必须经过以下必须经过以下 4 个步骤个步骤:()每次读写前对()每次读写前对 DS18B20 进行复位初始化。复位要求主进行复位初始化。复位要求主 CPU 将数据线将数据线下拉下拉 500us,然后释放,然后释放,DS18B20 收到信号后等待收到信号后等待 16us60us 左右,然后发出左右,然后发出 60us240us 的存在低脉冲,主的存在低脉冲,主 CPU 收

5、到此信号后表示复位成功。收到此信号后表示复位成功。()发送一条()发送一条 ROM 指令指令DS18B20 的存储器指令集的存储器指令集 数据数据876543210含义CRC保留保留保留配置寄存器低温报警值高温报警值温度高位温度低位在这里说明一下,第二步跳过对在这里说明一下,第二步跳过对ROM操作的命令是在总线上只有一个器件时,操作的命令是在总线上只有一个器件时,为节省时间而简化的操作,若总线上不止一个器件,那么跳过为节省时间而简化的操作,若总线上不止一个器件,那么跳过ROM操作命令将操作命令将会使几器件同时响应,这样就会出现数据冲突。会使几器件同时响应,这样就会出现数据冲突。bit Init

6、_DS18B20(void)bit flag;/储存储存DS18B20是否存在的标志,是否存在的标志,flag=0,存在;,存在;flag=1,不存在,不存在 DQ=1;/先将数据线拉高先将数据线拉高 for(time=0;time2;time+);/略微延时约略微延时约6微秒微秒/再将数据线从高拉低,要求保持再将数据线从高拉低,要求保持480960usDQ=0;for(time=0;time200;time+);/略微延时约略微延时约600微秒微秒/以向以向DS18B20发出一持续发出一持续480960us的低电平复位脉冲的低电平复位脉冲 DQ=1;/释放数据线(将数据线拉高)释放数据线(将

7、数据线拉高)for(time=0;time10;time+);/延时约延时约30us(释放总线后需等待(释放总线后需等待1560us让让DS18B20输输出存在脉冲)出存在脉冲)flag=DQ;/让单片机检测是否输出了存在脉冲(让单片机检测是否输出了存在脉冲(DQ=0表示存在)表示存在)for(time=0;time200;time+);/延时足够长时间,等待存在脉冲输出完毕延时足够长时间,等待存在脉冲输出完毕return(flag);/返回检测成功标志返回检测成功标志 unsigned char ReadOneChar(void)unsigned char i=0;unsigned char

8、 dat;/储存读出的一个字节数据储存读出的一个字节数据for(i=0;i8;i+)DQ=1;/先将数据线拉高先将数据线拉高 _nop_();/等待一个机器周期等待一个机器周期 DQ=0;/单片机从单片机从DS18B20读书据时读书据时,将数据线从高拉低即启动读时序将数据线从高拉低即启动读时序 _nop_();/等待一个机器周期等待一个机器周期 DQ=1;/将数据线将数据线人为人为拉高拉高,为单片机检测为单片机检测DS18B20的输出电平作准备的输出电平作准备 for(time=0;time=1;if(DQ=1)dat|=0 x80;/如果读到的数据是如果读到的数据是1,则将,则将1存入存入d

9、atelsedat|=0 x00;/如果读到的数据是如果读到的数据是0,则将,则将0存入存入dat for(time=0;time8;time+);/延时延时3us,两个读时序之间必须有大于两个读时序之间必须有大于1us的恢复期的恢复期 return(dat);/返回读出的十六进制数据返回读出的十六进制数据unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat;/储存读出的一个字节数据储存读出的一个字节数据for(i=0;i8;i+)DQ=1;/先将数据线拉高先将数据线拉高 _nop_();/等待一个机器周期等待一个

10、机器周期 DQ=0;/单片机从单片机从DS18B20读书据时读书据时,将数据线从高拉低即启动读时序将数据线从高拉低即启动读时序 _nop_();/等待一个机器周期等待一个机器周期 DQ=1;/将数据线将数据线人为人为拉高拉高,为单片机检测为单片机检测DS18B20的输出电平作准备的输出电平作准备 for(time=0;time=1;if(DQ=1)dat|=0 x80;/如果读到的数据是如果读到的数据是1,则将,则将1存入存入datelsedat|=0 x00;/如果读到的数据是如果读到的数据是0,则将,则将0存入存入dat for(time=0;time8;time+);/延时延时3us,两

11、个读时序之间必须有大于两个读时序之间必须有大于1us的恢复期的恢复期 return(dat);/返回读出的十六进制数据返回读出的十六进制数据WriteOneChar(unsigned char dat)unsigned char i=0;for(i=0;i8;i+)DQ=1;/先将数据线拉高先将数据线拉高 _nop_();/等待一个机器周期等待一个机器周期 DQ=0;/将数据线从高拉低时即启动写时序将数据线从高拉低时即启动写时序 DQ=dat&0 x01;/利用与运算取出要写的某位二进制数据利用与运算取出要写的某位二进制数据,/并将其送到数据线上等待并将其送到数据线上等待DS18B20采样采样 for(time=0;time10;time+);/延时约延时约30us,DS18B20在拉低后的约在拉低后的约1560us期间从数据线上采样期间从数据线上采样 DQ=1;/释放数据线释放数据线 for(time=0;time=1;/将将dat中的各二进制位数据右移中的各二进制位数据右移1位位 for(time=0;time4;time+);/稍作延时稍作延时,给硬件一点反应时间给硬件一点反应时间

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|