久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: ds1302和ds18b20發生沖突 [打印本頁]

作者: zeng152    時間: 2018-8-27 20:39
標題: ds1302和ds18b20發生沖突
最近寫了一個基于51單片機實現溫度和時間顯示之間的轉換,但是問題在于如果將溫度程序和時鐘程序分開寫,功能都能實現,但合在一起之后時間能顯示,但溫度在數碼管上只顯示0,這個問題困擾了我很久,一直未解決。

電子溫度表.rar

42.43 KB, 下載次數: 83


作者: HC6800-ES-V2.0    時間: 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{
        unsigned char n,dat,dat1;
        CE = 0;
        _nop_();

        SCLK = 0;
        _nop_();
        CE = 1;
        _nop_();

        for(n=0; n<8; n++)
        {
                DSIO = addr & 0x01;
                addr >>= 1;
                SCLK = 1;
                _nop_();
                SCLK = 0;
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)
        {
                dat1 = DSIO;
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;
                _nop_();
        }

//        CE = 0;
        _nop_();
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();

        return dat;        
}

紅色那一條語句,原來有,現在我將它去掉,就好了。其它的什么都不用改。

究其原因,可能是兩器件使能沖突。

作者: wc86110    時間: 2018-8-27 23:06
時鐘溫度計用液晶屏來顯示最好,如用八位數碼管得做交替顯示才行
作者: ahshmj    時間: 2018-8-28 09:17
DS18B20的溫度轉換時間較長,不可以讓程序在那里一直等待轉換結束,執行完轉換指令后去做其他事情,大約800ms以上在讀取時間值。
作者: zeng152    時間: 2018-8-28 20:42
謝謝大佬,以前這個問題困擾了我很久,非常感謝
作者: shockbee    時間: 2019-4-16 13:17
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

真的可以啦哈哈哈,謝謝啦樓主
作者: 習慣就好了    時間: 2019-4-16 16:11
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

我去,牛逼!大佬!!大佬!這個問題困擾了我4個小時。真心牛逼大佬。十分感謝!!!!!!!!!!!!
作者: 胡勝朋    時間: 2019-10-31 21:10
uchar Ds1302Read(uchar addr)
{
        uchar n,dat,dat1;
        RST = 0;
        _nop_();

        SCLK = 0;//先將SCLK置低電平。
        _nop_();
        RST = 1;//然后將RST(CE)置高電平。
        _nop_();

        for(n=0; n<8; n++)//開始傳送八位地址命令
        {
                DSIO = addr & 0x01;//數據從低位開始傳送
                addr >>= 1;
                SCLK = 1;//數據在上升沿時,DS1302讀取數據
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數據
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//讀取8位數據
        {
                dat1 = DSIO;//從最低位開始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數據
                _nop_();
        }

        RST = 0;
        _nop_();        //以下為DS1302復位的穩定時間,必須的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;       
}

作者: 胡勝朋    時間: 2019-10-31 21:12
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

uchar Ds1302Read(uchar addr)
{
        uchar n,dat,dat1;
        RST = 0;
        _nop_();

        SCLK = 0;//先將SCLK置低電平。
        _nop_();
        RST = 1;//然后將RST(CE)置高電平。
        _nop_();

        for(n=0; n<8; n++)//開始傳送八位地址命令
        {
                DSIO = addr & 0x01;//數據從低位開始傳送
                addr >>= 1;
                SCLK = 1;//數據在上升沿時,DS1302讀取數據
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數據
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//讀取8位數據
        {
                dat1 = DSIO;//從最低位開始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數據
                _nop_();
        }

        RST = 0;
        _nop_();        //以下為DS1302復位的穩定時間,必須的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;       
}
為啥我的不行
作者: simple1103    時間: 2020-5-20 14:39
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

為什么我注釋掉了CE還是不行

作者: hbu168    時間: 2020-5-26 09:02
厲害,這個問題處理了一天,在這里發現解決辦法,謝謝分享
作者: FB0    時間: 2020-7-22 18:09
simple1103 發表于 2020-5-20 14:39
為什么我注釋掉了CE還是不行

還有一個寫字節的函數也要注釋掉,這樣就行了。
作者: zy979    時間: 2020-7-28 12:55
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

大佬牛逼!!!
作者: k21992    時間: 2020-9-28 08:52
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

這個方法真可行,問題解決,謝謝
作者: lihanjunw    時間: 2021-3-17 22:40
困擾了一天,還是在這里找到了解決辦法,大佬nb
作者: jack——chen    時間: 2022-9-19 17:04
牛啊,解決了我的問題了,感謝
作者: 1239148896    時間: 2022-11-20 06:01
使能沖突是因為什么
作者: QYQX13    時間: 2023-6-21 23:26
很強,完美解決
作者: coody_sz    時間: 2023-6-23 16:58
兩個通信完全不同的東東,怎么會沖突?很奇怪。
作者: joyb    時間: 2023-7-20 17:51
也解決了我的大問題
作者: joyb    時間: 2023-10-22 09:00

由電路圖可知   ds18b20引腳  與   ds1302引腳  不沖突


由圖而知   當CS=0  DOUT=0     CS=1   DOUT為高阻狀態

由此而知   當p35=0  p37=0

所以  當ds1302時鐘芯片  和   溫度ds18b20  工作時

一旦將  p35=0  那么p37=0    則使然   ds1302  和   ds18b20沖突  



作者: JIM6669999    時間: 2023-12-3 22:09
HC6800-ES-V2.0 發表于 2018-8-27 20:39
這個問題,我已經不知道發過多少次了!!!!!
unsigned char Ds1302Read(unsigned char addr)
{

這段代碼是放在ds1302的庫函數還是主函數里面

作者: 紫金仙    時間: 2024-3-24 16:05
joyb 發表于 2023-10-22 09:00
由電路圖可知   ds18b20引腳  與   ds1302引腳  不沖突

牛!!!!
作者: qazou    時間: 2024-12-23 20:54
FB0 發表于 2020-7-22 18:09
還有一個寫字節的函數也要注釋掉,這樣就行了。

牛!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 91免费看片| 亚洲日本一区二区 | 人成精品 | 在线只有精品 | 天天爽网站 | 婷婷五月色综合香五月 | 91中文字幕在线观看 | 亚洲人成在线播放 | 成人三级视频 | 国产日产精品一区二区三区四区 | av免费网站在线观看 | 国产日韩精品在线 | 一级片子| 91日韩 | 国产精品永久 | 狠狠色狠狠色综合日日92 | 精品久久国产 | 夜夜操操操 | 精品国产一区二区三区久久久蜜月 | 国产精品日韩欧美一区二区三区 | 精品国产伦一区二区三区观看说明 | 久久国产精品-国产精品 | 在线国产一区 | 午夜久久久久 | 人成在线视频 | a黄视频 | 亚洲伊人精品酒店 | 日韩视频在线一区 | 成人在线小视频 | 亚洲午夜精品 | 范冰冰一级做a爰片久久毛片 | 91精品国产91久久综合桃花 | 日韩久久久久久 | 又黑又粗又长的欧美一区 | 久久噜噜噜精品国产亚洲综合 | 欧美aaaaa| 国产一区二区自拍 | 特级生活片 | 黄网址在线观看 | 欧美成人一区二区三区片免费 | 欧美国产视频 |