時鐘芯片DS及其應(yīng)用學(xué)習(xí)教案_第1頁
時鐘芯片DS及其應(yīng)用學(xué)習(xí)教案_第2頁
時鐘芯片DS及其應(yīng)用學(xué)習(xí)教案_第3頁
時鐘芯片DS及其應(yīng)用學(xué)習(xí)教案_第4頁
時鐘芯片DS及其應(yīng)用學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、會計學(xué)1時鐘時鐘(shzhng)芯片芯片DS及其應(yīng)用及其應(yīng)用第一頁,共34頁。l 時鐘計數(shù)功能,可以對秒、分鐘、小時、月、星期、年的時鐘計數(shù)功能,可以對秒、分鐘、小時、月、星期、年的計數(shù)。年計數(shù)可達(dá)到計數(shù)。年計數(shù)可達(dá)到 2100 年。年。l 有有 31*8 位的額外數(shù)據(jù)暫存寄存器位的額外數(shù)據(jù)暫存寄存器l 最少最少 I/O 引腳傳輸,通過三引腳引腳傳輸,通過三引腳SCLK,RST,IO控制控制l 工作電壓:工作電壓: 2.0-5.5Vl 工作電流小于工作電流小于 320 納安(納安( 2.0V )l 讀寫時鐘寄存器或內(nèi)部讀寫時鐘寄存器或內(nèi)部 RAM ( 31*8 位的額外數(shù)據(jù)暫存寄位的額外數(shù)據(jù)暫

2、存寄存)可以采用單字節(jié)模式和突發(fā)模式存)可以采用單字節(jié)模式和突發(fā)模式l 8-pin DIP 封裝或封裝或 8-pin SOICsl 兼容兼容 TTL ( 5.0V )l 可選的工業(yè)可選的工業(yè)(gngy)級別,工作溫度級別,工作溫度 -40 85 攝氏度攝氏度l 兼容兼容 DS1202 較較 DS1202 增加的功能:增加的功能:l 1. 可通過可通過 Vcc1 進(jìn)行涓流充電進(jìn)行涓流充電l 2. 雙重電源補(bǔ)給雙重電源補(bǔ)給l 3. 備用電源可采用電池或者超級電容備用電源可采用電池或者超級電容 (0.1F以上以上 ) ,可,可以用老式電腦主板上的以用老式電腦主板上的 3.6V 充電電池。充電電池。功

3、能功能(gngnng(gngnng) )介紹介紹第1頁/共34頁第二頁,共34頁。引腳分布引腳分布(fnb)(fnb)第2頁/共34頁第三頁,共34頁。引腳功能引腳功能(gngnng)(gngnng)VCC1 VCC1提供了在電池供電系統(tǒng)提供了在電池供電系統(tǒng)(n din x tn)的低功耗模式,的低功耗模式,以及低功耗電池備用。以及低功耗電池備用。VCC2 - VCC2是主電源,雙電源配置電源引腳。是主電源,雙電源配置電源引腳。VCC1連接連接到備份源在主電源的情況到備份源在主電源的情況(qngkung)下維持的時間和日期下維持的時間和日期。 當(dāng)當(dāng)VCC2 0;i-) DS1302_IO =

4、a & 0 x01;a = 1;DS1302_CLK=1;_nop_();DS1302_CLK=0;_nop_(); 函數(shù)函數(shù)(hnsh)功能功能:單片機(jī)向單片機(jī)向DS1302寫一個字節(jié)子程序?qū)懸粋€字節(jié)子程序IO=字節(jié)字節(jié)a的最低位的最低位字節(jié)右移字節(jié)右移1位位CLK=1,延時,延時CLK=0,延時,延時到到8次了?次了?結(jié)束結(jié)束第22頁/共34頁第二十三頁,共34頁。函數(shù)功能函數(shù)功能(gngnng):單片機(jī)從單片機(jī)從DS1302讀一個字節(jié)子程讀一個字節(jié)子程序序 uchar readbyte(void) uchar i,dat=0;for(i=8;i0;i-) dat = 1; if(

5、DS1302_IO)dat|=0 x80; DS1302_CLK=1; nop; DS1302_CLK=0;return dat; 經(jīng)過經(jīng)過 8 個時鐘周期的控制讀指令的輸入個時鐘周期的控制讀指令的輸入,控制指令串行輸入后,一個,控制指令串行輸入后,一個(y )字字節(jié)的數(shù)據(jù)將在下個節(jié)的數(shù)據(jù)將在下個 8 個時鐘周期的下降個時鐘周期的下降沿被輸出,注意沿被輸出,注意:先輸出字節(jié)的低位。先輸出字節(jié)的低位。第23頁/共34頁第二十四頁,共34頁。將上面的寫字節(jié)和讀字節(jié)放在一起將上面的寫字節(jié)和讀字節(jié)放在一起(yq)研研究究void sendbyte(uchar a) uchar i; for(i=8;i

6、0;i-) DS1302_IO = a & 0 x01;a = 1;DS1302_CLK=1;_nop_();DS1302_CLK=0;_nop_(); 讀一個讀一個(y )字節(jié)子程序字節(jié)子程序 uchar readbyte(void) uchar i,dat=0;for(i=8;i0;i-) dat = 1; if(DS1302_IO)dat|=0 x80; DS1302_CLK=1; nop; DS1302_CLK=0;return dat; 寫一個寫一個(y )字節(jié)子程序字節(jié)子程序這是一種方案這是一種方案在控制字節(jié)最后一位寫在控制字節(jié)最后一位寫完后的下降沿,第一個完后的下降沿,第

7、一個讀數(shù)據(jù)位就出現(xiàn)了讀數(shù)據(jù)位就出現(xiàn)了此句看上去此句看上去,在沒有先產(chǎn)生下降沿在沒有先產(chǎn)生下降沿的情況下就讀了數(shù)據(jù),其實在左的情況下就讀了數(shù)據(jù),其實在左邊已經(jīng)產(chǎn)生了第一個數(shù)據(jù)位邊已經(jīng)產(chǎn)生了第一個數(shù)據(jù)位第24頁/共34頁第二十五頁,共34頁。將上面的寫字節(jié)將上面的寫字節(jié)(z ji)和讀字節(jié)和讀字節(jié)(z ji)放在放在一起研究一起研究void sendbyte(uchar a) uchar i; for(i=8;i0;i-) DS1302_CLK=0; nop; DS1302_IO = a & 0 x01; a = 1; DS1302_CLK=1; nop; 讀一個讀一個(y )字節(jié)子程序字

8、節(jié)子程序 uchar readbyte(void) uchar i,dat=0; for(i=8;i0;i-) DS1302_CLK=1;nop;DS1302_CLK=0;dat=1;if(DS1302_IO) dat|=0 x80; return dat; 寫一個寫一個(y )字節(jié)子程序字節(jié)子程序這是另一種方案這是另一種方案這里是先產(chǎn)生數(shù)據(jù),再產(chǎn)生上升這里是先產(chǎn)生數(shù)據(jù),再產(chǎn)生上升沿的方式送數(shù)據(jù),最后沒有產(chǎn)生沿的方式送數(shù)據(jù),最后沒有產(chǎn)生下降沿。下降沿。這里要先產(chǎn)生下降沿,再讀數(shù)據(jù)這里要先產(chǎn)生下降沿,再讀數(shù)據(jù)第25頁/共34頁第二十六頁,共34頁。/*函數(shù)函數(shù)(hnsh)功能功能:寫寫DS130

9、2地址子程序地址子程序 向向address地址上寫入數(shù)據(jù)地址上寫入數(shù)據(jù)dat*/void write_DS1302(uchar address,uchar dat)DS1302_RST=0;nop;DS1302_CLK=0;nop;DS1302_RST=1;nop;sendbyte(address);nop;sendbyte(dat);nop;DS1302_RST=0;nop;DS1302_CLK=0;經(jīng)過經(jīng)過 8 個時鐘周期的控個時鐘周期的控制字節(jié)的輸入,一個字制字節(jié)的輸入,一個字節(jié)的輸入將在下節(jié)的輸入將在下 8 個時個時鐘周期的上升沿完成鐘周期的上升沿完成(wn chng),數(shù)據(jù)傳,數(shù)據(jù)傳

10、輸從字節(jié)最低位開始。輸從字節(jié)最低位開始。這這3句的目的是將句的目的是將CLK置置0,但是但是(dnsh)不不知道會不會產(chǎn)生下降沿而送錯數(shù)據(jù)知道會不會產(chǎn)生下降沿而送錯數(shù)據(jù),所以先所以先RST=0,停止所有數(shù)據(jù)傳送,高阻態(tài),停止所有數(shù)據(jù)傳送,高阻態(tài),等等CLK=0之后,再回復(fù)之后,再回復(fù)RST=1;第26頁/共34頁第二十七頁,共34頁。/*函數(shù)函數(shù)(hnsh)功能功能:讀讀DS1302地址子程序地址子程序 入口參數(shù)入口參數(shù):add出口參數(shù)出口參數(shù):readtimeR*/uchar read_DS1302(uchar address) uchar timer;DS1302_RST=0;delays

11、(2);DS1302_CLK=0;delays(2);DS1302_RST=1;nop;sendbyte(address); timer=readbyte();DS1302_RST=0;nop;DS1302_CLK=0;return timer;第27頁/共34頁第二十八頁,共34頁。/*函數(shù)功能函數(shù)功能:初始化初始化DS1302子程序子程序入口參數(shù)入口參數(shù):wr_data(全局變量全局變量)出口參數(shù)出口參數(shù):*/void DS1302_init() write_DS1302(0 x8e,0 x00); /關(guān)閉保護(hù)關(guān)閉保護(hù)(boh),bit7=0 write_DS1302(0 x8c,wr_d

12、ata0);/年年 write_DS1302(0 x88,wr_data1);/月月 write_DS1302(0 x86,wr_data2);/日日 write_DS1302(0 x8A,wr_data3);/星期星期 write_DS1302(0 x84,wr_data4);/時時 write_DS1302(0 x82,wr_data5);/分分 write_DS1302(0 x80,wr_data6);/秒秒 write_DS1302(0 x8e,0 x80); /開寫保護(hù)開寫保護(hù)(boh),bit7=1第28頁/共34頁第二十九頁,共34頁。void clock_start(void)

13、 uchar val; val = read_DS1302(0 x81); /讀秒寄存器讀秒寄存器 val &= 0 x7f; /秒寄存器最高位秒寄存器最高位0, 時鐘振蕩啟動時鐘振蕩啟動 write_DS1302(0 x8e,0 x00); /關(guān)寫保護(hù)關(guān)寫保護(hù) write_DS1302(0 x80,val); /寫回秒寄存器寫回秒寄存器 write_DS1302(0 x90,0 xa5); /1010使能涓電流充電使能涓電流充電,DS=01: 選擇選擇(xunz)一個二極管一個二極管,RS=01: R1=2k write_DS1302(0 x8e,0 x80); /開寫保護(hù)開寫保護(hù)

14、啟動振蕩器,啟動涓電流充電啟動振蕩器,啟動涓電流充電(chng din)(競賽可省競賽可省略略)(競賽競賽(jngsi)可省略可省略)可以省略的理由:可以省略的理由:1.由于秒寄存器是內(nèi)容由于秒寄存器是內(nèi)容0 x000 x59,顯然初始化時最高位也同時清零了;,顯然初始化時最高位也同時清零了;2.使用的電池,不充電,可以不對電池充電。使用的電池,不充電,可以不對電池充電。第29頁/共34頁第三十頁,共34頁。/*函數(shù)功能函數(shù)功能(gngnng):讀讀DS1302時間子程序時間子程序讀到數(shù)組讀到數(shù)組readtimeR中中*/void read_time(void)readtimeR0=read_

15、DS1302(0 x8d); /年年BCD碼碼readtimeR1=read_DS1302(0 x89); /月月BCD碼碼readtimeR2=read_DS1302(0 x87); /日日BCD碼碼readtimeR3=read_DS1302(0 x8b); /周周BCD碼碼readtimeR4=read_DS1302(0 x85); /時時BCD碼碼readtimeR5=read_DS1302(0 x83); /分分BCD碼碼readtimeR6=read_DS1302(0 x81); /秒秒BCD碼碼第30頁/共34頁第三十一頁,共34頁。送顯示送顯示(xinsh)的數(shù)據(jù)的數(shù)據(jù)處理方式

16、處理方式y(tǒng)ear_h = readtimeR04; /年十位年十位(sh wi)year_l = readtimeR0&0 x0f; /年個位年個位month_h = readtimeR14; /月十位月十位(sh wi)month_l = readtimeR1&0 x0f; /月個位月個位 date_h = readtimeR24; /日十位日十位(sh wi)date_l = readtimeR2&0 x0f; /日個位日個位 hour_h = readtimeR44; /時十位時十位(sh wi)hour_l = readtimeR4&0 x0f; /時個

17、位時個位minute_h = readtimeR54; /分十位分十位(sh wi)minute_l = readtimeR5&0 x0f; /分個位分個位 second_h = readtimeR64; /秒十位秒十位(sh wi)second_l = readtimeR6&0 x0f; /秒個位秒個位disTime0=hour_h;disTime1=hour_l;disTime3=minute_h;disTime4=minute_l;disTime6=second_h;disTime7=second_l;display(disTime);disDate0=year_h;di

18、sDate1=year_l;disDate3=month_h;disDate4=month_l;disDate6=date_h;disDate7=date_l;display(disDate)第31頁/共34頁第三十二頁,共34頁。作判斷作判斷(pndun)的數(shù)據(jù)的數(shù)據(jù)處理方式處理方式uchar sec,min,hour,dat,mon,year;sec= second_h *10+ second_l;min= minute_h*10+ minute_l ;year_h = readtimeR04; /年十位年十位(sh wi)year_l = readtimeR0&0 x0f; /年個位年個位month_h = readtimeR14; /月十位月十位(sh wi)month_l = readtimeR1&0 x0f; /月個位月個位 date_h = readtimeR24; /日十位日十位(sh wi)date_l = readtimeR2&0 x0f; /日個位日個位 hour_h = readtimeR44; /時十位時十位(sh wi)hour_l = readtimeR4&0 x0f; /時個位時個位minute_h = readtimeR54; /分十位分十位

溫馨提示

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

評論

0/150

提交評論