3、显示环境温度的电子万年历.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS18B20引脚功能 DS18B20电路 DS18B20存储器 DS18B20存储器 DS18B20的访问协议 DS18B20时序图 DS18B20时序图 DS18B20时序图 DS18B20子程序 DS18B20子程序 DS18B20子程序 主程序示例 * * DS18B20引脚功能 DS18B20电路 DS18B20寄存器 DS18B20的访问协议 DS18B20时序图 DS18B20子程序编写 DS18B20实现时钟程序 显示温度的电子万年历 内容 Single Chip Microcomputer CRC 保留 保留 保留 配置 TL/用户字节2 TH/用户字节1 温度高8位 温度低8位 8 7 6 5 4 3 2 1 0 暂存器 字节 E2RAM TL/用户字节2 配置 TH/用户字节1 温度信息的存储: 低8位 高8位 温度 二进制数据 十六进制 数据 初始化 ROM操作命令 存储器操作命令 执行/数据 报警搜索:0xEC 搜索ROM:0xF0 跳过ROM:0xCC 匹配ROM:0x55 读ROM:0x33 …… …… 启动温度转换:0x44 读存储器:0xBE 写存储器:0x4E 数据发送接收时,低位在前,高位在后 初始化时序: 单片机首先输出低电平 然后输出高电平 然后读取18B20的IO口的数据,若为低电平则复位成功 写时序: 写0:单片机输出低电平保持60us至120us,然后变高电平保持1us以上 写1:单片机输出低电平保持1us至15us,然后变高电平 读时序: 读数据位:单片机输出低电平保持1us以上,然后在15us之内读取IO口的数据,若为0则数据位为0,为1则数据位为1 u8 Ds18b20_Init(void) { u8 time; TempIO = 0; for(time=0;time230;time++);//延时692us TempIO = 1; for(time=0;time30;time++);//92us if(TempIO == 0) { for(time=0;time230;time++);//延时692us return 1; } else return 0; } 初始化操作: 写操作: void Ds18b20_Write(u8 dat) { u8 time,i; for(i=0;i8;i++) { if((dat0x01)==0) { TempIO = 0; for(time=0;time30;time++);//92us TempIO = 1; } else { TempIO = 0; TempIO = 0; //消耗1us TempIO = 1; for(time=0;time30;time++);//92us } dat = dat1; } } 读操作: u8 Ds18b20_Read(void) { u8 i,time,dat=0;//dat应初始化为0 for(i=0;i8;i++) { TempIO = 0; TempIO = 0; //消耗1us TempIO = 1; if(TempIO == 1) { dat = (dat|(1i)); } for(time=0;time30;time++);//92us } return dat; } main() { u8 data1,data2,i; while(1) { while(Ds18b20_Init() == 0); Ds18b20_Write(0xCC); Ds18b20_Write(0x44); for(i=0;i50;i++)//等待温度转换结束,同时显示温度值 { Display((data2*256+data1)*10/16); } while(Ds18b20_Init() == 0); Ds18b20_Write(0xCC); Ds18b20_Write(0xBE); data1 = Ds18b20_Read(); data2 = Ds18b20_Read(); } } * * *

文档评论(0)

wuhuaiyu002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档