熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-2-11 11:24
正文摘要:把兩個(gè)程序合在一起溫度就只顯示00.00了,按鍵是設(shè)置時(shí)間的,這是主函數(shù),大家看看 void main() { unsigned char i; Int0Confi ... |
HC6800-ES-V2.0 發(fā)表于 2019-2-11 12:45 老哥,太感謝了,我也是被這個(gè)問題困惑了好久,按你的方法試了一下問題就解決了,感謝感謝。 |
|
溫度采集的部分,有問題 ~~~~~~~~~~ |
|
前面我回復(fù)過,因?yàn)橛衅渌搲逆溄樱瑳]有通過!今天直接給你結(jié)果: 同學(xué)們,我只需要修改一個(gè)地方就可以了!!!! 首先,要感謝你,試驗(yàn)出了正確的結(jié)果! 在你的結(jié)果基礎(chǔ)之上,我反復(fù)閱讀程序,注意到,你的紅色部分程序,其實(shí)就是1302的使能為高電平。 所以,最終的結(jié)果是: 在1302讀數(shù)據(jù)之后,將原程序中的使能為低電平去掉,就可以了。 即: 原程序: unsigned char Ds1302Read(unsigned char addr)//從DS1302讀單字節(jié)數(shù)據(jù) { unsigned char n,dat,dat1;//n為8位計(jì)數(shù),dat為最終返回的數(shù)據(jù) //dat1為接收的一位數(shù)據(jù) CE = 0; _nop_(); SCLK = 0;//先將SCLK置低電平。 _nop_(); CE = 1;//然后將CE置高電平。 _nop_(); for(n=0; n<8; n++)//開始傳送八位地址命令 { DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送 addr >>= 1; SCLK = 1;//數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù) _nop_(); SCLK = 0;//DS1302下降沿時(shí),放置數(shù)據(jù) _nop_(); } _nop_(); for(n=0; n<8; n++)//讀取8位數(shù)據(jù) { dat1 = DSIO;//從最低位開始接收 dat = (dat>>1) | (dat1<<7);//此處可以用595的方法判斷是0或是1 SCLK = 1; _nop_(); SCLK = 0;//DS1302下降沿時(shí),放置數(shù)據(jù) _nop_(); } // CE = 0; _nop_();//以下為DS1302復(fù)位的穩(wěn)定時(shí)間,必須的。 SCLK = 1; _nop_(); DSIO = 0; _nop_(); DSIO = 1; _nop_(); return dat; } 紅色那一條語句,原來有,現(xiàn)在我將它去掉,就好了。其它的什么都不用改。 究其原因,可能是兩器件使能沖突。 |
| 參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
|---|---|---|
|
| + 20 | 回帖助人的獎(jiǎng)勵(lì)! |
Powered by 單片機(jī)教程網(wǎng)