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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(ds18b20 51单片机测温 自我总结+源程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ds18b20 51单片机测温 自我总结+源程序.docx

1、ds18b20 51单片机测温 自我总结+源程序DS18B20总结复位时序/* - 功能描述:DS18B20复位 - 隶属模块:DS18B20模块 - 函数属性:内部 - 参数说明:无 - 返回说明:返回值为0说明复位成功,否则失败 - 注:初始化是正确操作DS18B20是重要一步,必须复位成功 */unsigned char DS18B20_Reset() unsigned char x=0; DQ=1; /DQ拉高 DQ=0; /单片机将DQ拉低 delay(1800);/延时 480us960us DQ=1; /DQ拉高 /以上是由单片机产生“复位脉冲” delay(100); /延时1

2、5us60us x=DQ; /DS18B20产生“存在脉冲” /检测DQ 如果为低,说明复位成功,DS18B20存在 /如果为高,说明复位失败,DS18B20损坏或不存在 while(!DQ); /直到DQ为高 return x; /返回复位结果写时序/* - 功能描述:向DS18B20写入一个位(DS18B20的写时间片) - 隶属模块:DS18B20模块 - 函数属性:内部 - 参数说明:bdat:要写入的值,非0为1 - 返回说明:无 - 注:DS18B20的写时间片对时间的要求较为严格。因此将此代码移植到其它 CPU或场合时要注意延时函数 */void DS18B20_WriteSlo

3、t(unsigned char bdat) DQ=1; /将数据线置为高电平 delay(10); /两次写时间片间隔大于1us DQ=0; /开始一个写时间片 delay(10); /写时间片的低电平保持1us以上 DQ=bdat; delay(180); /写时间片开始15us后DS18B20对数据线进行采样 /写时间片最短60us DQ=1; /* - 功能描述:向DS18B20写入一个字节 - 隶属模块:DS18B20模块 - 函数属性:内部 - 参数说明:dat:将要向DS18B20写入字节 - 返回说明:无 - 注:此函数调用写时间片来实现字节的写入 */void DS18B20_

4、WriteByte(unsigned char dat) unsigned char i=0; for(i=0;i8;i+) /调用8次写时间片实现写入字节(8个位) DS18B20_WriteSlot(dat&(1i); 读时序/* - 功能描述:从DS18B20读取一个位(DS18B20的读时间片) - 隶属模块:DS18B20模块 - 函数属性:内部 - 参数说明:无 - 返回说明:读到的值,1或0 - 注:DS18B20的读时间片对时间的要求较为严格。因此将此代码移植到其它 CPU或场合时要注意延时函数 */unsigned char DS18B20_ReadSlot() unsign

5、ed char bdat=0; DQ=1; /将数据线置为高电平 delay(10); /两次读时间片间隔大于1us DQ=0; /开始一个读时间片 delay(10); /读时间片的低电平保持1us以上 DQ=1; /开始读取数据线状态 delay(20); /读时间片开始后15us内主机对数据线进行采样 bdat=DQ; delay(160);/读时间片最短60us return bdat; /* - 功能描述:从DS18B20读取一个字节 - 隶属模块:DS18B20模块 - 函数属性:内部 - 参数说明:无 - 返回说明:从DS18B20读到的字节 - 注:此函数调用读时间片来实现字节

6、的读取 */unsigned char DS18B20_ReadByte() unsigned char i=0,dat=0; for(i=0;i8;i+)/调用8次读时间片实现字节读取(8个位) dat|=(DS18B20_ReadSlot()i); return(dat);64位ROM编码/DS18B20 ROM指令#define Read_ROM 0x33 /读取ROM#define Match_ROM 0x55 /匹配ROM#define Skip_ROM 0xcc /跳过ROM#define Search_ROM 0xf0 /搜索ROM#define Alarm_ROM 0xec /

7、报警搜索 /DS18B20 暂存器指令#define Write_Scratchpad 0x4e /写暂存器#define Read_Scratchpad 0xbe /读暂存器#define Copy_Scratchpad 0x48 /拷贝暂存器#define Convert_T 0x44 /启动温度转换#define Recall_E2 0xb8 /重读E2#define Read_Power_Supply 0xb4 /读取供电方式/* - 功能描述:设置DS18B20的精度 - 隶属模块:DS18B20模块 - 函数属性:外部,供用户使用 - 参数说明:res:精度值 0:9位 1:10位

8、 2:11位 3:12位 - 返回说明:无 - 注:精度越低,可读的小数位数越少,比如在12位的精度下,可分辨温度 为0.0625,即可读小数位数为4位,而如果是10位的精度,则可分辨 温度为0.25,可读小数位数只有2位。 */void DS18B20_SetResolution(unsigned char res) while(DS18B20_Reset(); /复位,通信前必须复位 DS18B20_WriteByte(Write_Scratchpad); /写暂存器指令 DS18B20_WriteByte(0xff); /此值被写入TH DS18B20_WriteByte(0xff);

9、/此值被写入TL DS18B20_WriteByte(0x1f|(res5); /设置精度 0 res1-0 11111/* - 功能描述:从DS18B20中读取温度 - 隶属模块:DS18B20模块 - 函数属性:外部,供用户使用 - 参数说明:无 - 返回说明:由于返回的温度是浮点数(即小数),为了方便返回的值将为原 值的10000倍,即精确到小数点后2位,用户需要对返回值除以 10000得到实际的温度值 - 注:无 */long DS18B20_ReadTemperature() long t=0; while(DS18B20_Reset(); /复位,通信前必须复位 DS18B20_W

10、riteByte(Skip_ROM); /如果总线上只有一个DS18B20,则可跳过ROM操作 DS18B20_WriteByte(Convert_T); /启动温度转换 while(!DS18B20_ReadSlot(); /启动温度转换后要进行读忙,912位精度温度转换所需的 /最长时间分别为93.75ms、187.5ms、375ms、750ms /如果不读忙而紧接着进行后面的操作,将在首次上电时可能导致85现象 /因为读到的不是温度值,而是初始值0x0550,即85 while(DS18B20_Reset(); /温度转换后DS18B20处于空闲状态,要进行通信,需要重新复位 DS18B

11、20_WriteByte(Skip_ROM); /跳过ROM操作 DS18B20_WriteByte(Read_Scratchpad); /读取暂存器(共可读9个寄存器,前两个就是温度) t=DS18B20_ReadByte(); t|=(unsigned int)DS18B20_ReadByte()8; /将读到的两个字节进行整合 return t*625; /将结果乘以分辨温度0.0625 /扩大10000倍进行输出,不用浮点,同样可以保留4位小数精度 主函数 运行环境:STC51 1T单片机 22.1184M晶振 程序说明:此程序设置DS18B20精度为10位,不停的读取温度 值,并将温

12、度值的整数部分输出在P2 IO上 注:DS18B20相关教程请参见 振南的疯狂单片机(51)基础外围篇 之 DS18B20 一集 */void main() DS18B20_SetResolution(1); /设置DS18B20的精度为10位 while(1) P2=(DS18B20_ReadTemperature()/10000); /读取温度值,并将整数部分输出在P2上 while(1);DELAY 函数- 功能描述:延时函数 - 隶属模块:公开函数模块 - 函数属性:外部,用户可调用 - 参数说明:time:time值决定了延时的时间长短 - 返回说明:无 - 注:晶振为22.1184M 1T 在STC51单片机上延时的实际时间约为 time*0.4us */void delay(unsigned int time) while(time-);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1