• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机使用DS18B20温度传感器

莫雨毛毛 2018-04-06 浏览量:1256
用单片机显示温度,用STC89C52RC显示没有问题,但是想用STC12C5A60S2,直接下程序进去显示乱码,这是什么原因,可以的话希望大神能提供一下STC12C5A60S2用18B20的驱动程序。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • DS18B20是时序单总线,其延时要求很严格,STC89C52的时钟跟STC12的时钟频率不一样,STC89C52的延时是通过for循环实现的,是指就是执行一定的浪费时间的语句,由于两者时钟频率不一样所以你的DS18B20可能都没初始化成功
    • 发布于 2018-04-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :稳定电压范围和温度范围不一样,1N5352B:8.7V-200V -50°C ~ 150°C ,1N5352BG:3.3 V -200 V,-65°C ~ 200°C,能不能替代具体要看用户的使用场景 回复

其他答案 数量:16
  • 显示是不是用1602?用1602显示52的延时和12延时不一样,相差5倍。
    • 发布于2018-04-06
    • 举报
    • 评论 1
    • 0
    • 0
莫雨毛毛 回复了 Obligation :用的是数码管 回复

  • DS18B20对于时序有一定要求。你先确定指令周期是不是一样
    • 发布于2018-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为STC12C5A60S2的执行速度更快,直接使用STC89C52RC的程序需要修改延时,将延时适当的放大一些
    • 发布于2018-04-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :XMP-04V-R 红色 XMP-04V 默认白色 回复

  • ds18b20采用单总线通信,更换单片机不能进行简单的直接移植,要详细检查延时的问题
    • 发布于2018-04-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :353631060 Molex 请参考。 回复

  • 如楼主的描述,是通讯时序的问题,两种单片机的时钟频率不一样,可以试着将12C5A的时钟频率调整到和C52的一致,这是最简单的方式了。

    • 发布于2018-04-06
    • 举报
    • 评论 2
    • 0
    • 0
莫雨毛毛 回复了 赤心木zqw :请问一下这个怎么调整? 回复
电子老工程师 回复了  :配套端子:440134-1。 回复

  • 通信的时序不正确,因为STC12和89C51的时钟频率不同,输出的I2C信号频率也不同
    • 发布于2018-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查时序吧,更换前的片子和更换后的片子在主频上不一样,那么对于DS18B20需要的延时就不一样,需要一定修改。
    • 发布于2018-04-07
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :原厂规格书没有丝印说明。物料丝印参考型号少了一个“J”,封装引脚没有符合。问一下采购供应商。 回复

  • 显示乱码肯定不是18b20的问题,18b20程序不对最多导致读取的数据是错的,乱码是显示程序有bug
    • 发布于2018-04-07
    • 举报
    • 评论 2
    • 0
    • 0
电子老工程师 回复了  :B3M-6009-J,非原厂标准型号,没有查到关于尾缀J的资料 回复
电子老工程师 回复了  :B3M-6009-J 非原厂型号,型号错误。 回复

  • ds18b20 是单总线协议,原来的代码拿过来用,延时需要调整,保证时序不变。1602显示对时序要求不高,显示乱码,应该是初始化完成了,显示时发送的数据有问题,活着时发送的问题,或者是数据的问题。可以让屏幕显示abcdefg,看看正常么,调试好了屏幕在调试ds18b20。
    • 发布于2018-04-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 肯定是时序出了问题,你主要是确认一下时钟频率是否满足了时序要求
    • 发布于2018-04-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能是通信时序的问题,移植时,你看看时钟频率是否一致,不一致需要修改代码
    • 发布于2018-04-09
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :规格书封装为SO16 回复

  • 这两种单片机工作主频不一致,导致18B20程序在两种单片机之间不通用,所以需要移植,移植时注意时序就行。主要工作就是把延时函数修改正确即可。
    • 发布于2018-04-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 时序出错了  51和12的频率有区别  特别是12的有些指令是12 T的  你调整一下你的延时函数  适当的增加 
    • 发布于2018-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 两个芯片的主频是不一样的,对应的定时器或是延时函数要进行修改,否则时序是错的
    • 发布于2018-04-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是时序问题,检查下时序设置。两个片子主频不一样的,直接使用肯定不行
    • 发布于2018-04-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 网上有51单片机驱动DS18B20的代码。18B20对引脚推挽还是开漏,上啦还是下拉并不是很关心,主要是通信时序的问题,时序一定要正确,单片机才能驱动18B20.

    • 发布于2018-04-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机使用DS18B20温度传感器