基于Proteus仿真实例DS18B20.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
? DS18B20之Proteus仿真使用 分类:? 传感器? AVR与C2010-05-22 12:20?886人阅读? 评论(0)? \o 收藏 收藏? \o 举报 举报 对于数字单线温度传感器DS18B20可谓是久仰大名,但是一直都没有认真的去弄过。曾经看过网络上流传的中文PDF文档,感到其对时序要求比较严格,其他倒无所谓。这几天感到有必要把曾经弄过的以及没有弄过但是比较常用的传感器写个范例,以便于以后的工作。就从这个18B20开始了。结果。。。。第一天没搞定!第二天。。。。又没搞定!这下怒了,虽说不是什么高手,但是搞个温度传感器都要2天那还了得!于是在周末决定好好研究一下。 先来看18B20的时序。-----K,竟然不能插入图片! 好吧,口述。 一般要求DS18B20数据总线使用4.7K左右的电阻上拉,所以在MCU或者DS18B20没有强制将总线拉低的情况下,总线应该是高电平的。复位的要求是持续拉低总线480us以上(小于960us),然后释放总线。对于AVR之类的有数据方向存储器的MCU,将数据方向设置为输入即可。这个时候总线应该会被上拉电阻拉高。然后静静等待,如果DS18B20正常,那它应该会在15-60us之后将总线拉低60-240us。我对这两个数据感到非常的不爽。MCU什么时候采样电平最合适呢?只能在MCU释放总线60us后,才能保证此时DS18B20如果存在肯定是将总线拉低的,但是也不能再后了,因为DS18B20将总线拉低最短只有60us。万一DS18B20在MCU释放总线后15us后就拉低了总线,且又仅拉低60us。。。。。留给MCU采样的时间只有15us了!郁闷!这里要注意一条C的语句可能执行N多个机器周期,所以还要注意指令执行时间,如果你的MCU时钟比较慢,那就等死吧。恩 还有,从释放总线开始到开始执行其他操作这段时间最短也要480us。(其实我没这么干也成功了) 写时序: DS18B20以下降沿开始表示一次操作开始。无论读写都是如此。 写操作有写“1”与写“0”(二进制就是好啊)。如果是写“1”,要遵循先拉低总线至少1us然后再释放总线,或者输出高。这里延时1us其实是非常短的时间,你的指令执行周期可能都超过这个1us,所以未必需要显式的延时。注意,拉高后还要延时60us,因为读写周期最少都要60us。写“0”就简单点了,拉低直接延时60us就OK。 读时序: 读也要先将总线拉低至少1us然后再释放,交给DS18B20来操作,如果DS18B20要输出“1”,就会将总线拉高(其实是上拉电阻的功劳)如果是输出“0”,就会将总线拉低。MCU要做的就是在释放总线之后15us内采样总线电平。在Proteus中,奇怪了。通过示波器发现DS18B20对总线的控制时间都在60us以上,所以MCU采样总线可以在60us以内完成。不知道事实是不是如此了。 好了,基本的读写操作搞定之后,DS18B20也就算是被驯服了。 来个测试,要想知道自己的复位、读写时序有没有真正搞定就写个程序来读写DS18B20内部的RAM好了。 内部RAM有9个字节,其中第一个与第二个分别存储了当前的温度的低字节与高字节。默认的这两个字节内容分别是0x50,0x05。试试看能不能读出来喽。 小例子奉上。 ? [c-sharp:showcolumns]? \o view plain view plain \o copy copy ·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150 //?18b20数字温度传感器使用?? //?element.zhou?? //?2010.5.16?? //?8MHz?? #includeavr/io.h?? #includeutil/delay.h?? ? #define?uchar?unsigned?char?? #define?uint??unsigned?int?? #define?delay1us????asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);asm(nop);?? #define?delay2us????delay1us;delay1us;?? #define?delay5us????delay2us;delay2us;delay1us;?? #define?delay15us???{delay5us;delay5us;delay5us;}?? #de

文档评论(0)

我思故我在 + 关注
实名认证
文档贡献者

部分用户下载打不开,可能是因为word版本过低,用wps打开,然后另存为一个新的,就可以用word打开了

1亿VIP精品文档

相关文档