打印
[技术问答]

M054LBN

[复制链接]
1512|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
426tingting3099|  楼主 | 2015-3-30 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁有M054LBN单片机DS18B20的程序啊
沙发
598330983| | 2015-3-30 21:50 | 只看该作者
楼主发帖发重复了吗?

使用特权

评论回复
板凳
598330983| | 2015-3-30 21:51 | 只看该作者
建议根据时序图自己写一个,关键是延时写对就行了,顺序不容易搞错

使用特权

评论回复
地板
426tingting3099|  楼主 | 2015-3-31 10:38 | 只看该作者
598330983 发表于 2015-3-30 21:51
建议根据时序图自己写一个,关键是延时写对就行了,顺序不容易搞错

结果就是不对
//================================================================
void DS18b20_Rest(void)
{
    //_GPIO_ENABLE_DIGITAL_PATH(P3, 4);
        _GPIO_SET_PIN_MODE(P3, 4, GPIO_PMD_OUTPUT);
        P34 = 1;
    SYS_SysTickDelay(2);
        P34 = 0;
    SYS_SysTickDelay(750);
        P34 = 1;
    SYS_SysTickDelay(15);   
}
//================================================================
uchar DS18B20_Check(void)
{
    uchar rety = 0;
   
    //_GPIO_ENABLE_DIGITAL_PATH(P3, 4);
        _GPIO_SET_PIN_MODE(P3, 4, GPIO_PMD_INPUT);
    while(P34&&rety<200)
    {
        rety++;
        SYS_SysTickDelay(1);        
    };
    if(rety>=200)
        return 1;
    else
        rety = 0;
    while(P34&&rety<240)
    {
        rety++;
        SYS_SysTickDelay(1);         
    };
    if(rety>=240)
        return 1;
    return 0;
        
}
//================================================================
void Write_One_Byte(uchar dat)
{
        uchar i = 0;
    uchar whicebit;
   
    //_GPIO_ENABLE_DIGITAL_PATH(P3, 4);
        _GPIO_SET_PIN_MODE(P3, 4, GPIO_PMD_OUTPUT);
        for(i=0;i<8;i++)
    {
        whicebit = dat&0x01;
                dat>>=1;
        if(whicebit)
        {
            P34 = 0;
            SYS_SysTickDelay(2);
            P34 = 1;               
            SYS_SysTickDelay(60);
        }
        else
        {
            P34 = 0;
            SYS_SysTickDelay(60);
            P34 = 1;               
            SYS_SysTickDelay(2);
        }
    }
    P34 = 1;
}
//=====================================================================
uchar Read_One_Bit()                                 
{
        uchar dat = 0;

    //_GPIO_ENABLE_DIGITAL_PATH(P3, 4);
        _GPIO_SET_PIN_MODE(P3, 4, GPIO_PMD_OUTPUT);
    P34 = 1;                  
    SYS_SysTickDelay(2);
    P34 = 0;
    SYS_SysTickDelay(2);
    P34 = 1;
   
    //_GPIO_ENABLE_DIGITAL_PATH(P3, 4);
        _GPIO_SET_PIN_MODE(P3, 4, GPIO_PMD_INPUT);   
    SYS_SysTickDelay(12);
    if(P34)              
        dat = 1;
    else
        dat = 0;
    SYS_SysTickDelay(60);
    return (dat);
}
//================================================================
uchar DS18B20_Read_Byte(void)
{
    uchar i,j,dat;
    dat = 0;
    for (i=0;i<8;i++)
    {
        j=Read_One_Bit();
        dat=(j<<i)|dat;
    }
    return dat;
}
//===============================================================
void DS18B20_Star_Com(void)
{
    DS18b20_Rest();
    DS18B20_Check();
        Write_One_Byte(0xcc);
        Write_One_Byte(0x44);   
}
//===============================================================
void DS18B20_Read_Com(void)
{
    DS18b20_Rest();
    DS18B20_Check();
        Write_One_Byte(0xcc);
        Write_One_Byte(0xbe);   
}
//===============================================================
void Get_Tmp(void)
{
        float temp_map;   
        uchar temp_l,temp_h,flag;
   
    DS18B20_Star_Com();
    DS18B20_Read_Com();
   
        temp_l = DS18B20_Read_Byte();
        temp_h = DS18B20_Read_Byte();
//    if(temp_h>7)
//    {
//        temp_h = ~temp_h;
//        temp_l = ~temp_l;
//        flag = 0;
//    }
//    else
//        flag = 1;
        temp = temp_h;
        temp = temp<<8;
        temp = temp|temp_l;
        temp_map=temp*0.0625;                                                     
        temp = (uint)(temp_map*10+5);
                              
    TX1_buf[0] = temp/256;
    TX1_buf[1] = temp%256;
}

使用特权

评论回复
5
426tingting3099|  楼主 | 2015-4-1 14:33 | 只看该作者
问题解决了

使用特权

评论回复
6
mintspring| | 2015-4-1 22:55 | 只看该作者
楼主是什么问题(O_O)?

使用特权

评论回复
7
mintspring| | 2015-4-1 22:56 | 只看该作者
说一说,最终的打出来,大家学习一下

使用特权

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

本版积分规则

6

主题

21

帖子

0

粉丝