找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機(jī)+DS1302時(shí)鐘芯片程序讀數(shù)據(jù)一直是29

查看數(shù): 2541 | 評論數(shù): 8 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2021-12-5 21:09

正文摘要:

    DS1302時(shí)鐘芯片,按照手冊寫的呀!為什么在單片機(jī)開發(fā)板上一直2081-29-29  29:29:29 ,我是用的LCD1602作為顯示器,程序燒寫進(jìn)去以后一直是這樣。其中的LCD1602顯示程序沒有問題,可以不 ...

回復(fù)

ID:584814 發(fā)表于 2021-12-8 15:34
定型的板子,板載的時(shí)鐘芯片肯定不會(huì)有什么沒上拉之類的問題。
從現(xiàn)象上看,是讀取時(shí)鐘數(shù)據(jù)不正常。
可以用試驗(yàn)板所配的原代碼跑一下,正常后再根據(jù)自己需要修改。
還有個(gè)惡心的問題,就是當(dāng)備用電池沒電、芯片是仿的沒仿好的情況下,必須先寫時(shí)鐘數(shù)據(jù)然后讀取才能正常,換句話說如果你不先寫個(gè)邏輯正確的數(shù)據(jù)就不會(huì)出正常的結(jié)果(一般會(huì)走時(shí)但亂走,也有不走的)。
另:記得有些這種板上時(shí)鐘有個(gè)跳線(比如圖中黃色的那個(gè)切換板載模塊用的),如果不按要求做就相當(dāng)于沒接上時(shí)鐘模塊
ID:401564 發(fā)表于 2021-12-6 23:36
如果是普中的板子,有可能是P3.4或者P3.5或者P3.6沒有上拉電阻
你看一下原理圖,認(rèn)真看一下
ID:624769 發(fā)表于 2021-12-6 15:37
天賦異稟 發(fā)表于 2021-12-5 23:04
那就是讀的程序有問題了,但是0x81是存儲(chǔ)秒的地址呀,就算讀取 錯(cuò)誤也不應(yīng)該返回一個(gè)原地址呀

你DS1302 的讀寫代碼寫得非!把悺,很抱歉,我看不明白。

建議是,你直接用串口,依次 發(fā)送 0x81  0x83   0x91 這些,讓單片機(jī) 傳送到 DS1302 后回傳給串口,有助于你分析。  然后, 利用串口  發(fā)送比如  0x80 0x00, 讓單片機(jī)轉(zhuǎn)發(fā)給DS1302讓DS1302跑起來后, 再用 0x81 讀一下看看效果,是否會(huì)數(shù)據(jù)變化,通過這些綜合判斷一下,是啥問題,或者下載一個(gè)中規(guī)中矩的DS1302的代碼,嘗試一下讀寫看看。
ID:988270 發(fā)表于 2021-12-5 23:04
188610329 發(fā)表于 2021-12-5 22:58
你讀秒的時(shí)候, 往 DS1302 發(fā)出去的就是 0x81 吧? 所以你最后讀出來 0x81, 說明,你壓根沒完成讀取,讀 ...

那就是讀的程序有問題了,但是0x81是存儲(chǔ)秒的地址呀,就算讀取 錯(cuò)誤也不應(yīng)該返回一個(gè)原地址呀
ID:988270 發(fā)表于 2021-12-5 23:02
天賦異稟 發(fā)表于 2021-12-5 22:31
剛用串口測試了一下,讀出來數(shù)據(jù)是81,在秒的位置讀出來的一直是81,因?yàn)镈S1302輸出的是BCD碼,所以轉(zhuǎn)換 ...

我剛又用串口工具測試了一下,下面的程序當(dāng)我給出P3_5=1,串口接收到的數(shù)據(jù)是01 01 01 00 00 00這樣一直循環(huán),但如果是P3_0接口就沒有問題,這是硬件出問題了嗎?還是設(shè)置的問題?
[code]#include <REGX52.H>
ID:624769 發(fā)表于 2021-12-5 22:58
天賦異稟 發(fā)表于 2021-12-5 22:31
剛用串口測試了一下,讀出來數(shù)據(jù)是81,在秒的位置讀出來的一直是81,因?yàn)镈S1302輸出的是BCD碼,所以轉(zhuǎn)換 ...

你讀秒的時(shí)候, 往 DS1302 發(fā)出去的就是 0x81 吧? 所以你最后讀出來 0x81, 說明,你壓根沒完成讀取,讀的,就是你發(fā)的,
ID:988270 發(fā)表于 2021-12-5 22:31
188610329 發(fā)表于 2021-12-5 22:04
你太依賴顯示屏了,

你先用串口,把從DS1302中讀取出來的值原封不動(dòng)的發(fā)出來, 串口助手 直接原封不動(dòng)的 ...

剛用串口測試了一下,讀出來數(shù)據(jù)是81,在秒的位置讀出來的一直是81,因?yàn)镈S1302輸出的是BCD碼,所以轉(zhuǎn)換一下,其實(shí)是129,剛好對應(yīng)上LCD顯示的29
ID:624769 發(fā)表于 2021-12-5 22:04
你太依賴顯示屏了,

你先用串口,把從DS1302中讀取出來的值原封不動(dòng)的發(fā)出來, 串口助手 直接原封不動(dòng)的 HEX接收, HEX顯示,看看到底是什么值,然后分析是什么問題, 你這29都是轉(zhuǎn)碼以后的值了,要從源頭分析。
幾個(gè)參考值,秒為默認(rèn)上電后是 0x80, 寫保護(hù)位默認(rèn)上電后是 0x00, 充電設(shè)置位,默認(rèn)上電后是 0x5C, 別急著寫數(shù)據(jù),先讀數(shù)據(jù),看看對不對了,再驗(yàn)證其他的。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表