嵌入式爱好者

查看: 13607|回复: 25

DS18B20的问题

  [复制链接]
kang2010 该用户已被删除
发表于 2010-7-25 10:45:48 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-7-26 08:26:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

905

帖子

743

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2010-7-26 22:39:56 | 显示全部楼层
你用的是哪种开发板,看是不是时序的问题
回复 支持 反对

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-7-29 08:58:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

905

帖子

743

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2010-7-30 09:07:10 | 显示全部楼层
你是刚拿到的板子吗?在开发板的第三个分区中存储的硬件测试程序,你可以在boot菜单选择3,启动myapplication分区中的程序,其中有一项是测试温度传感器的,你可以用这个选项来测试一下是不是温感有问题
回复 支持 反对

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-7-30 09:54:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

905

帖子

743

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2010-7-30 22:23:17 | 显示全部楼层
你是不是擦除过,光盘上有镜像文件2440test.bin,下载到该分区,然后启动看看
回复 支持 反对

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-7-31 10:53:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-7-31 13:47:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

kang2010 该用户已被删除
 楼主| 发表于 2010-8-4 13:57:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

畅销请 该用户已被删除
发表于 2010-8-19 17:26:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

畅销请 该用户已被删除
发表于 2010-8-19 17:26:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

畅销请 该用户已被删除
发表于 2010-8-19 17:27:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

29

主题

9048

帖子

5593

积分

发表于 2010-8-20 09:16:40 | 显示全部楼层
是说的硬件测试程序吗?
回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

发表于 2010-8-20 14:02:30 | 显示全部楼层
用这个试试 这是我用MDK调试出来的
回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

发表于 2010-8-20 14:06:48 | 显示全部楼层
void dmsec (unsigned int t)       //精确延时函数  100约为1.317us
{   
        unsigned int i;
    unsigned int j;
    j=1*t;
    for(i = 0; i < j; i++);
}
         
void tmreset (void)       //18b20初始化
{                              
    unsigned int i;
        GPGCON&=0xfffffffc;    //设置寄存器对18b20进行写操作
        GPGCON|=0x01;
    GPGDAT&=0xfffe;     
        dmsec(45600);
          GPGCON&=0xfffffffc;
        while((GPGDAT&0x01)==0x00);
        dmsec(3000);
        while((GPGDAT&0x01)==0x01);
        //GPFDAT=0xef;     
        while((GPGDAT&0x01)==0x00);
        //GPFDAT=0xdf;           
}            



unsigned char tmrbyte (void)        //读一个字节函数
{   
     unsigned int j;              
         unsigned char i,u=0;      
               
         for (i=1;i<=8;i++)      
         {        
                  GPGCON&=0xfffffffc;
                 GPGCON|=0x01;            //GPG0设为输出
            GPGDAT&=0xfffe;
                  u >>= 1;
                  dmsec(400);
                  GPGDAT|=0X01;
            GPGCON&=0xfffffffc;     //设为输入口
            j=GPGDAT;
            if(j&0x01)  u |= 0x80;
            dmsec(12731);
            GPGCON|=0x01;
            GPGDAT|=0x01;
            dmsec(200);  
         }        
         return (u);      
  
}
         
void tmwbyte (unsigned char dat)     //写一个字节函数
{                       
         unsigned char j;      
         
         GPGCON&=0xfffffffc;
         GPGCON|=0x01;      
         for (j=1;j<=8;j++)      
         {
           GPGCON&=0xfffffffc;
           GPGCON|=0x01;
           GPGDAT&=0xfffe;     
           GPGDAT|= (dat & 0x01);  
           dmsec(1000);
           dmsec(3714);
           dat = dat >> 1;
           dmsec(100);      
        }        
}


void tmstart (void)         //发送ds1820 开始转换
  {                          
        tmreset();             //复位   
        dmsec(120);            //延时   
        tmwbyte(0xcc);         //跳过序列号命令   
        tmwbyte(0x44);         //发转换命令 44H,
  }         




void tmrtemp (void)       //读取温度
{                          
                unsigned char a,b;
                tmreset ();      //复位     
                dmsec (2000);     //延时     
                tmwbyte (0xcc);  //跳过序列号命令   
                tmwbyte (0xbe);  //发送读取命令     
                a = tmrbyte ();  //读取低位温度   
                b = tmrbyte ();  //读取高位温度           
               
                sdata = a/16+b*16;      //整数部分
               
                xiaoshu1 = (a&0x0f)*10/16;    //小数第一位
                xiaoshu2 = (a&0x0f)*100/16%10;//小数第二位
                xiaoshu=xiaoshu1*10+xiaoshu2; //小数两位
}
回复 支持 反对

使用道具 举报

29

主题

9048

帖子

5593

积分

发表于 2010-8-24 16:11:32 | 显示全部楼层
楼上两位 可以使用飞凌提供的硬件测试程序,测试程序中有温度的测试。
回复 支持 反对

使用道具 举报

datasheetmax 该用户已被删除
发表于 2010-9-16 16:03:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

7131

帖子

0

积分

发表于 2010-10-12 11:11:55 | 显示全部楼层
都解决没啊?
回复 支持 反对

使用道具 举报

1

主题

4

帖子

2

积分

发表于 2010-12-6 15:17:45 | 显示全部楼层
解决了未,我都卡这里两天了
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-25 08:46

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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