找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4271|回复: 5
收起左侧

DS1302和DS18B20的冲突问题?急用 谢谢

[复制链接]
ID:98557 发表于 2016-11-16 21:41 | 显示全部楼层 |阅读模式
30黑币
大家好,今天遇到了一个问题,希望大家帮忙解决一下,急用!!
当没有将温度传感器接入51单片机的时候,12864显示时间正常,当接入温度传感器的时候,12864上面显示时间就会变快,比如说两秒连着显示:当到第一秒的时候,显示了1之后就马上又显示2了。。

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

谢谢


回复

使用道具 举报

ID:123289 发表于 2016-11-17 01:24 | 显示全部楼层
这是你的程序资源分配不合理造成的,程序做A就顾不了B.
回复

使用道具 举报

ID:111634 发表于 2016-11-17 09:23 | 显示全部楼层
两个子程序配合有问题。
回复

使用道具 举报

ID:85726 发表于 2016-11-20 09:58 | 显示全部楼层
你可以把代码和原理图发给我,我可以帮你看看!
回复

使用道具 举报

ID:342895 发表于 2018-8-28 20:59 | 显示全部楼层
以前我遇到和你相似的问题,可能是ds1302和ds18b20使能冲突了,将ds1302程序里读取数据的那个函数里的使能位注释掉就没问题了,至少我是解决了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:768564 发表于 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;
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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