ds1302數(shù)碼管顯示應(yīng)用_第1頁(yè)
ds1302數(shù)碼管顯示應(yīng)用_第2頁(yè)
ds1302數(shù)碼管顯示應(yīng)用_第3頁(yè)
ds1302數(shù)碼管顯示應(yīng)用_第4頁(yè)
ds1302數(shù)碼管顯示應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、DS1302應(yīng)用剛學(xué)單片機(jī),好多好奇,所以想做個(gè)簡(jiǎn)單的時(shí)鐘。下面是PROTEUS仿真電路和電路圖,簡(jiǎn)單易懂。文筆不好,說(shuō)了多余。下面是程序。#include#include#include#defineuintunsignedint#defineucharunsignedchar#defineBCDTUAN(str)(str/10*16+str%10)/定義宏,將要寫入DS1302的時(shí)間轉(zhuǎn)化為BCD碼#defineWrite_Sec0 x80#defineWrite_Min0 x82#defineWrite_Hou0 x84#defineWrite_Dat0 x86#defineWrite_M

2、on0 x88#defineWrite_day0 x8a#defineWrite_Yea0 x8c#defineWrite_WP0 x8e/寫保護(hù)位#defineWrite_TCR0 x90#defineRead_Sec0 x81#defineRead_Min0 x83#defineRead_Hou0 x85#defineRead_Dat0 x87#defineRead_Mon0 x89#defineRead_Day0 x8b#defineRead_Yea0 x8d#defineCLK_BurstW0 xbf/時(shí)鐘突發(fā)模式寫#defineCLK_BurstR0 xbf/時(shí)鐘突發(fā)模式讀#defi

3、neWrite_RAM_Begin0 xc0/RAM第一個(gè)字節(jié)寫指令#defineRead_RAM_Begin0 xc1/RAM第一個(gè)字節(jié)讀指令#defineRAM_BurstW0 xfe/突發(fā)模式寫RAM#defineRAM_BurstR0 xff/突發(fā)模式讀RAMsbit_74hc154_A=P10;sbit_74hc154_B=P11;sbit_74hc154_C=P12;sbit_74hc154_D=P13;sbitCE=P16;sbitSCLK=P15;sbitIO=P14;ucharcodescan4=0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,

4、0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1;ucharscanbuff=0,0,0,0,0,0,0,0,0,0,0,0;ucharcodedispdate=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;voidWriteDS1302(void);/向DS1302寫入時(shí)間。voidReadDS1302(void);/讀取DS1302中的年,月,日,星期幾,小時(shí),分鐘和秒.voidSendCmd

5、(unsignedcharcmd);/傳送地址voiddelayus(unsignedchartt);voiddelay(ucharz)ucharx,y;for(x=z;x0;x-)for(y=120;y0;y-);void_74hc154(uchark)/位掃描設(shè)定_74hc154_A=scank0;_74hc154_B=scank1;_74hc154_C=scank2;_74hc154_D=scank3;voidmain()uchari;while(1)WriteDS1302();ReadDS1302();for(i=0;i12;i+)_74hc154(i);/位掃描P0=dispdate

6、scanbuffi;/數(shù)據(jù)送P0口delay(10);voidWriteDS1302(void)WriteByte(Write_Yea,BCDTUAN(13);/寫13年/讀取DS1302中的年,月,日,星期幾,小時(shí),分鐘和秒.voidReadDS1302(void)unsignedcharbuff;/將讀取的數(shù)據(jù)送入緩存數(shù)組,住輸出數(shù)據(jù)為16進(jìn)制buff=ReadByte(Read_Yea);/年scanbuff10=buff/16;/十位scanbuff11=buff%16;/個(gè)位buff=ReadByte(Read_Mon);/月scanbuff6=buff/16;/十位scanbuff

7、7=buff%16;/個(gè)位buff=ReadByte(Read_Dat);/日scanbuff8=buff/16;/十位scanbuff9=buff%16;/個(gè)位buff=ReadByte(Read_Hou);/時(shí)scanbuff0=buff/16;/十位scanbuff1=buff%16;/個(gè)位buff=ReadByte(Read_Min);/分scanbuff2=buff/16;/十位scanbuff3=buff%16;/個(gè)位buff=ReadByte(Read_Sec);/秒scanbuff4=buff/16;/十位scanbuff5=buff%16;/個(gè)位/讀取地址RCmd的時(shí)間/數(shù)據(jù)

8、unsignedcharReadByte(unsignedcharRCmd)unsignedcharvalu=0 x00,temp;CE=0;/初使化SCLK=0;/初使化,并為riseedge做準(zhǔn)備CE=1;/初使化,傳輸開(kāi)始。TheSCLKmustbelowwhenCEisdriventohighlevel.SendCmd(RCmd);/傳送地址for(temp=0;temp=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(1);SCLK=1;delayus(1);CE=0;/結(jié)束傳輸returnvalu;/向WCmd地址寫入時(shí)間/數(shù)據(jù)若寫入時(shí)間,則時(shí)間用#def

9、ineBCD(time)(time/10*16+time%10)處理.voidWriteByte(unsignedcharWCmd,unsignedcharvalu)unsignedchartemp;CE=0;SCLK=0;/初使化,并為riseedge做準(zhǔn)備CE=1;/初使化,傳輸開(kāi)始。SendCmd(WCmd);for(temp=0;temp=1;CE=0;/結(jié)束傳輸/突發(fā)模式讀RAMnum個(gè)字節(jié)voidBurstRead_CLK(unsignedchar*ptr)unsignedchartemp,temp2,valu;CE=0;SCLK=0;CE=1;SendCmd(RAM_BurstR

10、);/突發(fā)模式讀取CLK開(kāi)始for(temp2=0;temp28;temp2+)for(temp=0;temp=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(2);SCLK=1;delayus(2);*ptr=valu;ptr+;CE=0;/結(jié)束突發(fā)模式讀voidBurstRead_RAM(unsignedchar*ptr,unsignedcharnum)unsignedchartemp1,temp2,valu;CE=0;SCLK=0;CE=1;SendCmd(CLK_BurstR);/突發(fā)模式讀取CLK開(kāi)始for(temp2=0;temp2num;temp2+)f

11、or(temp1=0;temp1=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(2);SCLK=1;delayus(2);*ptr=valu;ptr+;CE=0;/結(jié)束突發(fā)模式讀/突發(fā)模式寫RAMvoidBurstWrite_RAM(unsignedcharData)unsignedcharsize=sizeof(Data),temp1,temp2,valu;if(size31)size=31;CE=0;SCLK=0;CE=1;SendCmd(RAM_BurstW);for(temp2=0;temp2size;temp2+)valu=Datatemp2;for(te

12、mp1=0;temp1=1;CE=0;voidBurstWrite_CLK(unsignedcharTime)unsignedcharsize=sizeof(Time),temp1,temp2,valu;if(size8)size=8;CE=0;SCLK=0;CE=1;SendCmd(CLK_BurstW);for(temp2=0;temp2size;temp2+)valu=Timetemp2;for(temp1=0;temp1=1;CE=0;/傳送指令voidSendCmd(unsignedcharcmd)unsignedchartemp;for(temp=0;temp=1;voiddelayus(unsignedchartt)/tt=2,延時(shí)為2ustt-;這個(gè)是ds1302.h頭文件內(nèi)容,建個(gè)txt文檔將下面內(nèi)容復(fù)制進(jìn)去,改后綴為.h即可添加了#ifndefDS1302_H#defineDS1302_HexternunsignedcharReadByte(unsignedcharRCmd);externvoidWriteByte(unsignedcharWCmd,unsignedch

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論