|
非常郁闷!
关于加上拉电阻,我也测试过在DS18B20的2脚加一个4.7K电阻到电源,无果.
关于这个时序,查到的是:
复位,拉低后延时480us-960us,再拉高,再延时15-60us,再读,如果为低则复位成功.
几近崩溃.
后来疯狂的大范围的调整延时时间,居然看见LED灯亮了!!!!!
电路未动,程序改为:
- #include
- sbit DQ = P1^7; //定义DS18B20数据线.
- sbit LED = P1^0; //定义LED
- void delay2us(unsigned char t)
- {
- while(--t)
- ;
- }
- void main(void)
- {
- bit x;
- DQ = 0;
- delay2us(250);
- delay2us(250);
- delay2us(250);
- DQ = 1;
- delay2us(100);
- x = DQ;
- delay2us(150);
- while(1)
- {
- LED = x;
- }
- }
复制代码
LED灯点亮了!不易啊!再不亮就准备放弃了.
在Keil里调试看了看延时时间,拉低后延时1500微秒左右,再拉高,延时时间为200微秒左右.
这个数值与资料说的出入如此之大,是怎么回事呢?
LED灯亮了后,将我从崩溃边缘拉回来了,但,还是不明白,是资料错误?我的器件特殊? |
|