标题: DS1302和DS18B20的冲突问题?急用 谢谢 [打印本页]

作者: 我是我啦啦啦    时间: 2016-11-16 21:41
标题: DS1302和DS18B20的冲突问题?急用 谢谢
大家好,今天遇到了一个问题,希望大家帮忙解决一下,急用!!
当没有将温度传感器接入51单片机的时候,12864显示时间正常,当接入温度传感器的时候,12864上面显示时间就会变快,比如说两秒连着显示:当到第一秒的时候,显示了1之后就马上又显示2了。。

但是测试多次,只要把温度传感器去掉,12864显示时间就正常了,只要加上去,时间显示就快了。。。

谢谢



作者: yzwzfyz    时间: 2016-11-17 01:24
这是你的程序资源分配不合理造成的,程序做A就顾不了B.
作者: zl2168    时间: 2016-11-17 09:23
两个子程序配合有问题。
作者: ning    时间: 2016-11-20 09:58
你可以把代码和原理图发给我,我可以帮你看看!
作者: zeng152    时间: 2018-8-28 20:59
以前我遇到和你相似的问题,可能是ds1302和ds18b20使能冲突了,将ds1302程序里读取数据的那个函数里的使能位注释掉就没问题了,至少我是解决了
作者: FENG12346    时间: 2020-12-18 12:55
我也遇到过,将ds1302的读函数改成这样就可以正常同时显示了
unsigned char DS1302_ReadData(unsigned char addr){
        unsigned char i,reval=0,temp;
        CE = 0;
        SCLK = 0;
        CE = 1;
        // 写寄存器地址
        for(i=0;i<8;i++){
                SCLK = 0;
                SDIO = addr & 0x01;
                addr >>= 1;
                SCLK = 1;                                                                                        // 上升沿读入数据
        }
        // 读数据
        for(i=0;i<8;i++){
                SCLK = 1;
                SCLK = 0;       
                temp = SDIO;
                reval = (temp<<7) | (reval>>1);        // 下降沿读出数据
        }
        CE = 0;
        SCLK = 1;
        SDIO = 0;
        SDIO = 1;
        CE = 1;
        reval = reval/16*10+(reval%16);
        return reval;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1