標題: 求教STC12C5A60S2單片機DS1302,DS18B20實現(xiàn)溫度顯示,DS1302讀寫問題 [打印本頁]

作者: birdzhyli    時間: 2021-3-23 20:48
標題: 求教STC12C5A60S2單片機DS1302,DS18B20實現(xiàn)溫度顯示,DS1302讀寫問題
目標:用STC12C5A60S2和LCD1602,DS1302,DS18B20實現(xiàn)時間,溫度顯示
現(xiàn)狀:溫度顯示已被完成
問題:DS1302讀寫問題,具體原因不明,在之前調(diào)試溫度模塊的時候已經(jīng)將delay和delayms兩個延時函數(shù)調(diào)整到調(diào)養(yǎng)5%之內(nèi)了,分別延時10us和ms

ds1302的SCLK,DSIO,RST分別接STC12C5A60S2的P26,P25,P24口
查手冊已知STC12C5A60S2的P2口內(nèi)置上拉電阻(中間手動加入上拉電阻,結果無變化)

萬年歷.zip

53.88 KB, 下載次數(shù): 16


作者: birdzhyli    時間: 2021-3-23 20:53
本帖最后由 birdzhyli 于 2021-3-23 20:56 編輯


通過顯示可以知道時間讀取肯定遇到問題,因為前面顯示的"Welcome  to  MCU"并沒有被完全覆蓋,本來應該是第一行顯示年月日星期幾的英文縮寫
具體是芯片初始化沒寫進去還是讀取失敗,或者兩者皆有問題,目前沒有頭緒
萬年歷.zip (53.88 KB, 下載次數(shù): 3)


作者: birdzhyli    時間: 2021-3-23 21:07

通過這個表可以知道,顯示的?是3f編碼,程序中對應代碼為
        *(disdate+2)=*(ttime+6)/16+0x30;
        *(disdate+3)=*(ttime+6)%16+0x30;

說明讀取完畢后數(shù)據(jù)變成0xFF,應該是初始化失敗,讀取操作使存儲數(shù)組值發(fā)化了變化

作者: 人人學會單片機    時間: 2021-3-23 22:54
http://www.torrancerestoration.com/bbs/dpj-200968-1.html 你可以參考我的貼子
作者: birdzhyli    時間: 2021-3-23 23:37
人人學會單片機 發(fā)表于 2021-3-23 22:54
http://www.torrancerestoration.com/bbs/dpj-200968-1.html 你可以參考我的貼子

謝謝回復,參考了,還是沒找到原因,代碼看了若干遍了,就是找不出錯誤原因,求助大佬
作者: birdzhyli    時間: 2021-3-23 23:57
問題找到了,此處有大字的臥槽65535個
上面圖中那3條橙色線,加上排線,太長了。。。。。。。。。。。。。。。。
我去掉了排線,直接接在芯片旁邊,顯示正常了
作者: birdzhyli    時間: 2021-3-24 00:31
太晚了,具體情況明天再分析一下
作者: birdzhyli    時間: 2021-3-24 08:00
調(diào)來調(diào)去,還是把最開始仿真成功的程序復制過來,把端口對應一下,就成功了。
走了很多彎路,目前只能定性為線路過長了.大神們有沒有什么更好的原因?


上面箭頭指的是原來位置,橙色線加了10cm的排線
下面箭頭是現(xiàn)在直插的位置。
問題雖然算是解決了,但原因不理解,DS1302不是串口通信么?通信距離不應該是這么點點吧
萬年歷.zip (54.24 KB, 下載次數(shù): 8) 這個代碼是目前正常運行的了,時間顯示溫度顯示都是正確的了


作者: birdzhyli    時間: 2021-3-24 08:08
橙色線0.4歐,排線0.5歐
這種坑以后怎么規(guī)避?插線的問題無法避免啊,總不能設計一個就直接刷PCB板啊
比小白還白的單片機小白求大神解惑




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1