打印
[AVR单片机]

ting13写得18b20问题

[复制链接]
1932|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
xmrforever|  楼主 | 2009-11-18 10:31 | 只看该作者
void delay(unsigned int x)  //5us
{
    while(x)
    {
       x--;
    }
}

void port_init(void) //端口定义
{
    PORTB = 0x03;
    DDRB  = 0x17;
}

void init_1820(void)
{
    DS18B20_SET;   
    DS18B20_CRL;
//    delay(1000);    //480us以上
    delay(200);
    DS18B20_SET;
    DDRB&=~(1<<PB4);
    delay(10);     //15~60us
    while(PINB&(1<<PB4))
    {  
           ;
    }
    DDRB|=(1<<PB4);
    DS18B20_SET;
    delay(15);   //60~240us
}

void write_1820(unsigned char x)
{   
    unsigned char m;
    for(m=0;m<8;m++)
    {
         DS18B20_CRL;
         if(x&(1<<m))    //写数据,从低位开始
             DS18B20_SET;
         else
             DS18B20_CRL;
         delay(4);   //15~60us
         DS18B20_SET;
    }
    DS18B20_SET;
}

unsigned char read_1820(void)
{     
    unsigned char temp,k,n;
    temp=0;
    for(n=0;n<8;n++)
    {
        DS18B20_CRL;
      //  delay(2);      
        DS18B20_SET;
      //delay(3);     
        DDRB&=~(1<<PB4);
        k=(PINB&(1<<PB4));    //读数据,从低位开始
        if(k)
            temp|=(1<<n);
        else
            temp&=~(1<<n);
        delay(3); //60~120us     
        DDRB|=(1<<PB4);
   }
   return (temp);
}

signed int readTempDS18B20()
{
        unsigned char temh=0,teml=0,zorf=0;
    unsigned int val=0;
    init_1820();        //复位18b20
    write_1820(0xcc);   // 发出转换命令
    write_1820(0x44);
    delay(8);
        init_1820();
    write_1820(0xcc);  //发出读命令
    write_1820(0xbe);
    teml=read_1820();  //读数据
    temh=read_1820();
    zorf=(temh>>3)&0x1F;
    if(zorf)
        {
                teml^=0xff;
                temh^=0xff;
                teml += 1;
            val=(temh<<8)|teml;
            val>>=4;// val/=16;
                temp_ok = 0-val;        
    }
        else
        {
            val=(temh<<8)|teml;
            val>>=4;// val/=16;       
                temp_ok = val;         
    }
        return temp_ok;
}
程序我发上来 ,大家 帮我看看啊

使用特权

评论回复
板凳
xmrforever|  楼主 | 2009-11-19 18:07 | 只看该作者
问题解决了,我要结贴,来个拿分的人吧

使用特权

评论回复
地板
suoma| | 2009-11-19 20:23 | 只看该作者
不会吧,咋解决的?

使用特权

评论回复
5
wangwo| | 2009-11-19 21:05 | 只看该作者
我也来拿分:lol

使用特权

评论回复
6
xmrforever|  楼主 | 2009-11-21 14:32 | 只看该作者
熔丝位没有烧,呵呵

使用特权

评论回复
7
Karlshen| | 2009-11-21 23:00 | 只看该作者
看看哈,最后的解决貌似和提问差别很大

使用特权

评论回复
8
lotus007| | 2013-4-15 11:09 | 只看该作者
ting13替代IC伟诠 WT51F104  

WT51F104-SOP8---TING13.JPG (58.98 KB )

1

1

WT51F104_DataSheet_CHN_V1.05(0612).pdf

1.34 MB

2

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:忍一忍就过去了

27

主题

177

帖子

0

粉丝