DS18B20温度传感器不工作问题

全部回答5
默认 最新
  • 应该是ds18b20的转换时间问题吧,加步延时等等看
    0 点赞
  • 正好我以前写过ds18b20的程序,现在共享给你。 我的单片机频率是8m,如果你的频率不同,请自己计算后把延时参数修改一下就可以了。 ds1820温度传感器单线总线读时间片 read: push r24 in r24,sreg push r24 ldi r22,$ff clr r23 out portb,r22 ;升高单线总线 out ddrb,r22 ;b口为输出口 out portb,r23 ;拉低单线总线 ldi r24,$05 read1: dec r24 brne read1 ;延迟10个时钟周期(大约1.25微秒) out ddrb,r23 ;b口为输入口 ldi r24,$30 read2: dec r24 brne read2 ;延迟96个时钟周期(大约12微秒) in r21,pinb ;读单线总线 ldi r24,$c8 read3: dec r24 brne read3 ;延迟400个时钟周期(大约50微秒) pop r24 out sreg,r24 pop r24 ret ds1820温度传感器单线总线写0时间片 write0: push r24 in r24,sreg push r24 ldi r22,$ff clr r23 out portb,r22 ;升高单线总线 out ddrb,r22 ;b口为输出口 out portb,r23 ;拉低单线总线 clr r24 wr0j1: dec r24 dec r24 nop nop brne wr0j1 ;延迟640个时钟周期(大约80微秒) out portb,r22 ;升高单线总线 ldi r24,$07 wr0j2: dec r24 brne wr0j2 ;延迟14个时钟周期(大约1.75微秒) out ddrb,r23 ;b口为输入口 pop r24 out sreg,r24 pop r24 ret ds1820温度传感器单线总线写1时间片 write1: push r24 in r24,sreg push r24 ldi r22,$ff clr r23 out portb,r22 ;升高单线总线 out ddrb,r22 ;b口为输出口 out portb,r23 ;拉低单线总线 ldi r24,$07 wr1j1: dec r24 brne wr1j1 ;延迟14个时钟周期(大约1.75微秒) out portb,r22 ;升高单线总线 clr r24 wr1j2: dec r24 dec r24 nop nop brne wr1j2 ;延迟640个时钟周期(大约80微秒) out ddrb,r23 ;b口为输入口 pop r24 out sreg,r24 pop r24 ret
    0 点赞
  • 在程序里加上喂狗,看看是不是程序跑飞掉了。同样程序有的机器不跑,有的就会跑。
    0 点赞
  • 看看DS18B20电源接触是否有问题?可以先在转换温度(44h)后,加一条延时函数,大概延时720ms~1s。,若工作稳定的话,那么,应该是DS18B20电源的问题了
    0 点赞
  • 18b20转换需要时间同样需要电流,确保上拉电阻不能太大,一般4.7K
    0 点赞

没有更多内容了

返回顶部
产品求购 求购