找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14873|回复: 27
收起左侧

ds18b20温度显示程序+Proteus仿真

  [复制链接]
ID:70481 发表于 2014-12-17 17:08 | 显示全部楼层 |阅读模式
230405f1x6x1aawpa1mmnr.jpg.thumb.jpg


源程序和仿真文件下载: 温度显示.rar (156.57 KB, 下载次数: 627)

评分

参与人数 1黑币 +5 收起 理由
ethan71 + 5 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:70481 发表于 2014-12-17 17:09 | 显示全部楼层
  1. #include "typedef.h"
  2. #include "device_init.h"
  3. #include "delay.h"

  4. /************************************************
  5. * 函数名称:ds18b20_reset
  6. * 输    入:
  7. * 输    出:
  8. * 功能描述:
  9. *************************************************/
  10. u8 ds18b20_reset(void)
  11. {
  12.         DQ_PIN = HIGH;
  13.         delay_16us(1);
  14.         DQ_PIN = LOW;
  15.         delay_16us(30);                //延时600us
  16.         DQ_PIN = HIGH;
  17.         delay_16us(5);                //延时80us
  18.         if(!DQ_PIN)
  19.         {
  20.                 delay_16us(30);        //延时420us
  21.                 return 1;
  22.         }
  23.         else
  24.                 return 0;
  25. }
  26. /************************************************
  27. * 函数名称:ds18b20_write_byte
  28. * 输    入:
  29. * 输    出:
  30. * 功能描述:
  31. *************************************************/
  32. void ds18b20_write_byte(u8 wByte)
  33. {
  34.         u8 i;

  35.         for(i=0; i<8; i++)
  36.         {
  37.                 DQ_PIN = LOW;
  38.                 NOP();
  39.                 NOP();
  40.                 NOP();
  41.                 NOP();
  42.                 NOP();
  43.                 NOP();
  44.                 NOP();
  45.                 DQ_PIN = wByte & 0x01;
  46.                 NOP();
  47.                 NOP();
  48.                 NOP();
  49.                 NOP();
  50.                 NOP();
  51.                 DQ_PIN = HIGH;
  52.                 NOP();
  53.                 NOP();
  54.                 NOP();
  55.                 wByte >>= 1;
  56.         }
  57. }
  58. /************************************************
  59. * 函数名称:ds18b20_read_byte
  60. * 输    入:
  61. * 输    出:
  62. * 功能描述:
  63. *************************************************/
  64. u8 ds18b20_read_byte(void)
  65. {
  66.         u8 rByte;
  67.         u8 i;

  68.         for(i=0; i<8; i++)
  69.         {
  70.                 DQ_PIN = LOW;
  71.                 NOP();
  72.                 NOP();
  73.                 rByte >>= 1;
  74.                 NOP();
  75.                 NOP();
  76.                 NOP();
  77.                 NOP();
  78.                 NOP();
  79.                 NOP();
  80.                 DQ_PIN = HIGH;
  81.                 NOP();
  82.                 NOP();
  83.                 NOP();
  84.                 NOP();
  85.                 NOP();
  86.                 NOP();
  87.                 NOP();
  88.                 if(DQ_PIN)
  89.                         rByte |= 0x80;
  90.                 NOP();
  91.                 NOP();
  92.                 NOP();
  93.                 NOP();
  94.                 NOP();
  95.                 NOP();
  96.                 NOP();
  97.         }
  98.         DQ_PIN = HIGH;
  99.         return rByte;
  100. }
  101. /************************************************
  102. * 函数名称:ds18b20_get_temp
  103. * 输    入:
  104. * 输    出:
  105. * 功能描述:
  106. *************************************************/
  107. u16 ds18b20_get_temp(void)
  108. {
  109.         u16 Temp;

  110.         if(ds18b20_reset() == 0)                        //复位
  111.                 return 0;
  112.         ds18b20_write_byte(0xcc);                        //忽略ROM
  113.         ds18b20_write_byte(0x44);                        //发送温度转化命令
  114.         delay_16us(30);
  115.         if(ds18b20_reset() == 0)                        //再次复位
  116.                 return 0;
  117.         ds18b20_write_byte(0xcc);                        //忽略ROM
  118.         ds18b20_write_byte(0xbe);

  119.         Temp = ds18b20_read_byte();
  120.         Temp |= ds18b20_read_byte() << 8;

  121.         return Temp;
  122. }
复制代码
回复

使用道具 举报

ID:77760 发表于 2015-4-24 16:18 | 显示全部楼层
谢谢分享,太好了正好需要。
回复

使用道具 举报

ID:92974 发表于 2015-10-20 00:51 | 显示全部楼层
顶一个,做得很好。
回复

使用道具 举报

ID:100777 发表于 2015-12-27 23:59 | 显示全部楼层
可以用2个2位数码管做吗?
QQ图片20151228000023.png
回复

使用道具 举报

ID:1 发表于 2015-12-28 00:29 | 显示全部楼层
steven33jan 发表于 2015-12-27 23:59
可以用2个2位数码管做吗?

当然可以,不过为什么会有这样的需求呢?
回复

使用道具 举报

ID:100777 发表于 2015-12-29 20:03 | 显示全部楼层
admin 发表于 2015-12-28 00:29
当然可以,不过为什么会有这样的需求呢?

那个程序要怎么改?
回复

使用道具 举报

ID:100777 发表于 2015-12-29 20:04 | 显示全部楼层
那么程序要怎么改?
回复

使用道具 举报

ID:102560 发表于 2016-1-9 22:12 | 显示全部楼层
大神大神  太需要你帮忙了  我们老师安排任务 利用PRUTUES实习单片机对DS18B20控制,测温。仿真。  跟您发的是一回事么  后天下午验收 能给点指导性意见不  非常感谢啊
回复

使用道具 举报

ID:115859 发表于 2016-4-22 09:15 | 显示全部楼层
感谢楼主 最近搞毕设正需要这个
回复

使用道具 举报

ID:122939 发表于 2016-5-24 18:37 | 显示全部楼层
请问这里的u8 ds18b20_reset(void)里的u8是指unsigned char形式的吗
回复

使用道具 举报

ID:127079 发表于 2016-6-17 11:44 | 显示全部楼层
正好这周设计做这个,先学习学习
回复

使用道具 举报

ID:103574 发表于 2016-10-26 17:56 | 显示全部楼层
为什么我仿真之后显示 -0.5°?
回复

使用道具 举报

ID:103574 发表于 2016-10-26 17:58 | 显示全部楼层
噢哦,突然弄懂了,谢谢楼主
回复

使用道具 举报

ID:141382 发表于 2016-11-2 22:44 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:93224 发表于 2017-2-11 11:52 | 显示全部楼层
大爱无疆
回复

使用道具 举报

ID:166150 发表于 2017-3-1 15:00 | 显示全部楼层
nice    666
回复

使用道具 举报

ID:194519 发表于 2017-5-2 18:43 | 显示全部楼层
赞赞赞
回复

使用道具 举报

ID:195701 发表于 2017-5-2 19:01 | 显示全部楼层
怎么查看温度电阻的是好的还是坏的
回复

使用道具 举报

ID:198912 发表于 2017-5-10 00:52 | 显示全部楼层
顶一个
回复

使用道具 举报

ID:204417 发表于 2017-5-24 18:40 | 显示全部楼层
不能下载好可惜啊
回复

使用道具 举报

ID:204417 发表于 2017-5-24 18:40 | 显示全部楼层
怎么获得黑币,下载不了啊
回复

使用道具 举报

ID:211375 发表于 2017-6-15 00:42 | 显示全部楼层
很好,刚好需要的仿真文件
回复

使用道具 举报

ID:421173 发表于 2018-11-19 10:18 | 显示全部楼层
用的什么软件编程的?版本是多少?
回复

使用道具 举报

ID:411550 发表于 2019-3-28 00:27 | 显示全部楼层
看一看学习一下
回复

使用道具 举报

ID:75899 发表于 2020-4-22 21:48 | 显示全部楼层
非常好的资料,学习下。
回复

使用道具 举报

ID:754376 发表于 2020-5-17 22:58 | 显示全部楼层
太及时了,急死我了,感谢感谢
回复

使用道具 举报

ID:833622 发表于 2020-10-23 15:17 | 显示全部楼层
谢谢分享,太好了正好需要。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表