找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2114|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+DS1302硬件與編程調(diào)試問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
代碼功能:持續(xù)從DS1302讀出“秒”數(shù)據(jù)并在數(shù)碼管上面顯示出來(lái),單片機(jī)是89c52。
現(xiàn)象:數(shù)碼管亂碼,(看起來(lái)能正常讀出,但是數(shù)碼管不該亮的段也亮了)
  數(shù)碼管相關(guān)函數(shù)單獨(dú)測(cè)試,顯示沒(méi)問(wèn)題?戳讼聞e人的程序,讀取完后會(huì)特意將數(shù)據(jù)線(xiàn)(ds1302 6腳)拉低,我這么改后,數(shù)碼管顯示就正常讀秒了。數(shù)據(jù)手冊(cè)上并沒(méi)有看到讀完后需要將數(shù)據(jù)線(xiàn)置0的操作。平時(shí)寫(xiě)這種時(shí)序都是照著數(shù)據(jù)手冊(cè)來(lái)的,出了這種問(wèn)題很難查出原因來(lái),這次還好有別人的程序作參考。另外我嘗試給數(shù)據(jù)線(xiàn)加上拉電阻,電阻的一端接上DS1302 6腳,另一端什么還什么都沒(méi)接時(shí),顯示就正常了,這是什么原理?嘗試拿一根導(dǎo)線(xiàn)一端碰ds1302 6腳,另一端懸空,也正常顯示了。
問(wèn)題1:造成亂碼的原因,是否是代碼寫(xiě)的有哪不對(duì)?為什么讀取完后將數(shù)據(jù)線(xiàn)(ds1302 6腳連到P3.4口上)拉低能解決亂碼
問(wèn)題2:僅僅是拿導(dǎo)體觸碰一下DS1302 6腳,也能解決亂碼,是啥原理?
問(wèn)題3:別人設(shè)計(jì)的電路ds1302 5,6,7腳會(huì)加上拉電阻,也用的89C52的P3口,P3口內(nèi)部自帶上拉,外加上拉的意義?通訊的數(shù)據(jù)線(xiàn)上加上拉電阻有啥作用?
還請(qǐng)各位不吝賜教。
  1. unsigned char Ds1302Read(unsigned char command)                        /*從總線(xiàn)上讀取數(shù)據(jù),低位在前*/
  2. {
  3.         unsigned char i;
  4.         unsigned char result=0x00;
  5.         command |= 0x01;                                        /*只宏定義了寫(xiě)的操作字,最低位寫(xiě)為1變?yōu)樽x操作字*/
  6.         CE=1;
  7.         for(i=0;i<8;i++)               
  8.         {
  9.                 IO = command & (0x01 << i);   /*從最低位依次取數(shù)據(jù)并放到數(shù)據(jù)線(xiàn)上*/
  10.                 SCLK=0;
  11.                 SCLK=1;
  12.         }
  13.         
  14.         for (i = 0; i<8; i++)                        /*從數(shù)據(jù)線(xiàn)上讀取*/
  15.         {
  16.                 result>>=1;
  17.                 SCLK=1;
  18.                 SCLK=0;
  19.                 if(IO)
  20.                 {
  21.                         result|=0x80;
  22.                 }
  23.         }
  24.         CE=0;
  25. //        IO=0; //??  問(wèn)題所在,不加這一句亂碼
  26.         return result;
  27. }
復(fù)制代碼




ds1302.rar

17.27 KB, 下載次數(shù): 2

keil工程

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:301191 發(fā)表于 2023-9-9 15:18 | 只看該作者
頂一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:332444 發(fā)表于 2023-9-10 08:08 | 只看該作者
可參我帖子里面1302荔枝,集成電路盡量不要長(zhǎng)引線(xiàn)用手感應(yīng)的信號(hào)去影響芯片正常運(yùn)行。
回復(fù)

使用道具 舉報(bào)

地板
ID:584814 發(fā)表于 2023-9-11 08:28 | 只看該作者
1、硬件待優(yōu)化,如拉電阻、基礎(chǔ)布線(xiàn)、備用電池等
2、硬件本身有暗病,世面上便宜的不好說(shuō)換個(gè)試試
3、軟件待優(yōu)化,一般無(wú)需但可借本壇里的程序試試
回復(fù)

使用道具 舉報(bào)

5#
ID:123289 發(fā)表于 2023-9-11 10:01 | 只看該作者
設(shè)你有6個(gè)LED數(shù)碼管。
1、設(shè)置6個(gè)變量L1-L6。
2、編寫(xiě)一個(gè)顯示程序,6個(gè)LED數(shù)碼管,分別從L1-L6中取數(shù)字顯示。保證此程序OK。
3、讀取時(shí)鐘數(shù)據(jù)。
4、將時(shí)鐘送入L1-L6。
這樣大功就告成了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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