




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、項(xiàng)目6 實(shí)時時鐘芯片DS1302的應(yīng)用實(shí)例,1,學(xué)習(xí)課件,6.1 項(xiàng)目任務(wù),在許多的單片機(jī)系統(tǒng)中,通常進(jìn)行一些與時間有關(guān)的 控制,這就需要使用實(shí)時時鐘。例如在測量控制系統(tǒng)中, 特別是長時間無人值守的測控系統(tǒng)中,經(jīng)常需要記錄某些 具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時間。在系統(tǒng)中采用實(shí)時 時鐘芯片能很好的解決這個問題,2,學(xué)習(xí)課件,實(shí)時時鐘(RTC)是一個由晶體控制精度的,向主系統(tǒng)提BCD碼表示的時間和日期的器件。主系統(tǒng)與RTC間的通信可通過并行口也可通過串行口,并行器件速度快但需較大的底板空間和較昂貴,串行器件體積較小且價格也相對便宜。 希望讀者在學(xué)完本節(jié)后,能完成相關(guān)的電路設(shè)計,并 掌握如下知識點(diǎn),
2、3,學(xué)習(xí)課件,掌握時鐘芯片DS1302的原理、特性及選擇; 51單片機(jī)和時鐘芯片DS1302的接口電路設(shè)計; 掌握時鐘芯片DS1302的C51程序設(shè)計,6.2 DS1302的結(jié)構(gòu)及工作原理,4,學(xué)習(xí)課件,DS1302 是美國DALLAS公司推出的一種高性能、低功 耗帶RAM的實(shí)時時鐘電路,它可以對年、月、日、周、 日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓 為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可 采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。 DS1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的RAM寄存 器,5,學(xué)習(xí)課件,下圖14-1示出DS1302的實(shí)物圖及
3、引腳排列,其中Vcc1 為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也 能保持時鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較 大者供電。當(dāng)Vcc2大于Vcc10.2V時,Vcc2給DS1302供電。 當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩,6.3 DS1302的引腳功能及內(nèi)部結(jié)構(gòu),DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但 增加了主電源/后背電源雙電源引腳,同時提供了對后背電 源進(jìn)行涓細(xì)電流充電的能力,6,學(xué)習(xí)課件,源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST
4、輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。 當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許 對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn),7,學(xué)習(xí)課件,行時,在Vcc2.5V之前,RST必須保持低電平。只有在 SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù) 輸入輸出端(雙向), SCLK始終是輸入端,圖6-1 DS1302的實(shí)物圖及引腳排列,8,學(xué)習(xí)課件,其內(nèi)部結(jié)構(gòu)如下圖6-2所示,圖6-2 DS1302內(nèi)部結(jié)構(gòu)圖,9,學(xué)習(xí)課件,6
5、.4 DS1302的寄存器和控制命令,10,學(xué)習(xí)課件,DS1302內(nèi)部主要寄存器功能如下表所示,11,學(xué)習(xí)課件,其中CH:時鐘停止位;為0時振蕩器工作;為1時振蕩器停止;AP=1時為下午模式,為0時上午模式DS1302的控制字節(jié)說明 1)DS1302的控制字節(jié)的最高有效位(位7)必須是邏 輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中:位6如 果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù) 據(jù);位5至位1指示操作單元的地址:最低有效位(位0)為0,12,學(xué)習(xí)課件,表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是 從最低位開始輸出。 2)在控制指令字輸入后的下一個SCLK時鐘的上升沿
6、 時數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同 樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降 沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位至高位7,13,學(xué)習(xí)課件,6.5 DS1302的讀寫時序,不僅要向寄存器寫入控制字。還需要讀取相應(yīng)寄存器 的數(shù)據(jù)。要想與DS1302通信,首先要先了解DS1302的控 制字。DS1302的控制字見5.4節(jié)內(nèi)容??刂谱值淖罡哂行?位(位7)必須是邏輯1,如果它為0。則不能把數(shù)據(jù)寫入到 DS1302中。位6:如果為0,則表示存取日歷時鐘數(shù)據(jù), 為1表示存取RAM數(shù)據(jù);位5至位1(A4A0):指示操作單 元的地址;位0(最低有效位):如為0。
7、表示要進(jìn)行寫操 作,為1表示進(jìn)行讀操作??刂谱挚偸菑淖畹臀婚_始輸出,14,學(xué)習(xí)課件,在控制字指令輸入后的下一個SCLK時鐘的上升沿時,數(shù) 據(jù)被寫入DS1302,數(shù)據(jù)輸入從最低位(0位)開始。 同樣,在緊跟8位的控制字指令后的下一個SCLK脈沖 的下降沿,讀出DS1302的數(shù)據(jù)。讀出的數(shù)據(jù)也是從最低位 到最高位。數(shù)據(jù)讀寫時序如下圖14-3所示。具體操作見驅(qū) 動程序,15,學(xué)習(xí)課件,圖6-3 DS1302數(shù)據(jù)讀寫時序圖,16,學(xué)習(xí)課件,6.6 DS1302的程序設(shè)計,1)DS1302和單片機(jī)連接示意圖如下,圖6-4 DS1302和單片機(jī)連接示意圖,17,學(xué)習(xí)課件,2)DS1302應(yīng)用程序設(shè)計流程圖
8、如下所示,圖6-5 DS1302應(yīng)用程序設(shè)計流程圖,18,學(xué)習(xí)課件,3)應(yīng)用程序清單如下: 程序用按鍵設(shè)置秒、分、時,用液晶LCD1602顯示設(shè) 置的時間。 /* 程序描述:以下程序?yàn)镈S1302的頭函數(shù)文件,在建立項(xiàng) 目的時候該部分要保存為DS1302.H。該頭文件中有對 DS1302基本的單字節(jié)讀寫函數(shù),取時間函數(shù),設(shè)置時間 函數(shù),在主函數(shù)中要調(diào)用這些函數(shù)。 * / #define uchar unsigned char /宏定義 sbit T_CLK = P10; /設(shè)置實(shí)時時鐘時鐘線引腳 / sbit T_IO = P11; /設(shè)置實(shí)時時鐘數(shù)據(jù)線引腳 / sbit T_RST = P1
9、2; /設(shè)置實(shí)時時鐘復(fù)位線引腳 / sbit ACC0=ACC0; /定義ACC的位,利用ACC操作速度最快,19,學(xué)習(xí)課件,sbit ACC7=ACC7; uchar time16; char counter3; uchar sec,min,hou,day,mon,yea; void Init1302(void); void v_W1302(uchar ucAddr, uchar ucDa); uchar uc_R1302(uchar ucAddr); void get_time(void); void set_time(void); /*往DS1302寫入1Byte數(shù)據(jù)*/ void v_
10、WTInputByte(uchar ucDa) uchar i; ACC= ucDa; for(i=8; i0; i-) T_IO = ACC0; /*相當(dāng)于匯編中的 RRC T_CLK = 1; T_CLK = 0; ACC =ACC 1; /*從DS1302讀取1Byte數(shù)據(jù)*,20,學(xué)習(xí)課件,uchar uc_RTOutputByte(void) uchar i; for(i=8; i0; i-) ACC = ACC1; /*相當(dāng)于匯編中的 RRC ACC7 = T_IO; T_CLK = 1; T_CLK = 0; return(ACC); /*往DS1302寫入數(shù)據(jù),先寫地址,后寫命
11、令/數(shù)據(jù)*/ void v_W1302(uchar ucAddr, uchar ucDa) T_RST = 0; T_CLK = 0; T_RST = 1; v_WTInputByte(ucAddr); /* 地址,命令 */ v_WTInputByte(ucDa); /* 寫1Byte數(shù)據(jù)*,21,學(xué)習(xí)課件,T_CLK = 1; T_RST =0; /*讀取DS1302某地址的數(shù)據(jù),先寫地址,后讀命令/數(shù)據(jù)*/ uchar uc_R1302(uchar ucAddr) uchar ucDa; T_RST = 0; T_CLK = 0; T_RST = 1; v_WTInputByte(ucA
12、ddr); /* 地址,命令 */ ucDa = uc_RTOutputByte(); /* 讀1Byte數(shù)據(jù) */ T_CLK = 1; T_RST = 0; return(ucDa); /*初始化DS1302*/ void Init1302(void) v_W1302(0 x8e,0 x00); /控制寫入WP=0 v_W1302(0 x90,0 xa5,22,學(xué)習(xí)課件,v_W1302(0 x80,0 x00); /秒 v_W1302(0 x82,0 x59); /分 v_W1302(0 x84,0 x10); /時 v_W1302(0 x86,0 x01); /日 v_W1302(0 x
13、88,0 x08); /月 v_W1302(0 x8a,0 x03); /星期 v_W1302(0 x8c,0 x07); /年 v_W1302(0 x8e,0 x80); /*取出時間并處理,以便送數(shù)碼管顯示*/ void get_time(void) uchar d; d=uc_R1302(0 x81); counter0=d/16*10+d%16; /十六進(jìn)制轉(zhuǎn)換為BCD碼 time10=d /十六進(jìn)制轉(zhuǎn)換為BCD碼,23,學(xué)習(xí)課件,time14=d 以上函數(shù)為DS1302.H文件,在主函數(shù)中要調(diào)用該函數(shù),24,學(xué)習(xí)課件,* 程序描述:該程序能通過和單片機(jī)連接的按鍵調(diào)整并設(shè)置DS1302
14、的時間,并能將 從DS1302中讀出的時間在六個七段數(shù)碼管上顯示,P0口驅(qū)動數(shù)碼管的各段,P2口 低六位連接到六個數(shù)碼管的公共端,數(shù)碼管為共陽。 */ #include #include #include DS1302.h #define uchar unsigned char #define uint unsigned int code seven_tab10 = 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90; code bit_select6 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf
15、; uint get_time_flag; uchar dot,flash,a,b,c,d; uchar year,month,day,hour,minute,second,week; uchar key1_state,key2_state,key3_state,key4_state,ttt; static uchar key1_flag=0;/定義靜態(tài)變量 sbit key1 = P30; /定義4個按鍵的端口 sbit key2 = P31; sbit key3 = P32; sbit key4 = P33; /*時間延遲函數(shù)*,25,學(xué)習(xí)課件,void delay(int delayti
16、me) while(delaytime-) _nop_(); void delayms(unsigned int delaytime) uint i,j; for( i = 0;i delaytime;i+ ) for(j = 0;j 120;j+); /*獲取按鍵狀態(tài)函數(shù)*/ uchar get_key() if(key1 = 0 ) key1 = 1; delayms(10); if(key1 = 0) key1_state = 1; /記憶key1按下的狀態(tài),26,學(xué)習(xí)課件,if(key1 = 1 if(key1_flag = 0,27,學(xué)習(xí)課件,get_time(); flash =
17、0 x80*dot; flash = flash|0 x7f; P0 = 0 xff; P2 = bit_selecti; if(i = 2 | i = 4) P0 = seven_tabtime1i,28,學(xué)習(xí)課件,PT0 = 0; ET0 = 1; TR0 = 1; EA = 1; /*單片機(jī)初始化函數(shù)*/ void Init_mcu(void) timer0_init(); Init1302(); key1_flag = 0; /*按鍵和時間設(shè)置函數(shù)*/ void key_setup() uchar i; i = get_key(); if(i = 3)/i=3;adjust secon
18、d ;調(diào)整秒 if(key2 = 0) key2 = 1; ; if(key2 = 0,29,學(xué)習(xí)課件,key2_state= 1; if(key2 = 1,30,學(xué)習(xí)課件,a = dot*0 xff; else a = 0; if(i = 2)/i=2;adjust the minute;調(diào)整分鐘 if(key2 = 0) key2 = 1; ; if(key2 = 0) key2_state= 1; if(key2 = 1 if(key3 = 0,31,學(xué)習(xí)課件,key3_state = 1; if(key3 = 1 adjust the hour;調(diào)整小時 if(key2 = 0),32,學(xué)習(xí)課件,key2 = 1; ; if(key2 = 0) key2_state= 1; if(key2 = 1,33,學(xué)習(xí)課件,if(counter2 23,34,學(xué)習(xí)課件,else c = 0; if(key4 = 0) key4 = 1; ; if(key4 = 0) key4_
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度礦山事故水池建設(shè)與安全生產(chǎn)保障合同
- 二零二五年度城市別墅購房定金合同
- 2025年度景觀施工項(xiàng)目安全監(jiān)理合同
- 2025年度電視劇劇本編排與制作合同
- 二零二五年度廣告?zhèn)髅絼趧?wù)派遣員工服務(wù)合同
- 酒店住宿意外事故責(zé)任免除與2025年度安全保障協(xié)議
- 二零二五年度老年贍養(yǎng)贍養(yǎng)金及醫(yī)療救助合同
- 辦公區(qū)域搬遷安排及流程梳理通知
- 關(guān)于銷售團(tuán)隊建設(shè)與管理的年度工作總結(jié)報告
- 美發(fā)店勞動合同協(xié)議書
- (完整版)施工現(xiàn)場質(zhì)量、安全生產(chǎn)管理體系
- 項(xiàng)目團(tuán)隊管理課件
- 幼兒文學(xué)PPT(學(xué)前教育高職)完整全套教學(xué)課件
- QGDW10571-2018大截面導(dǎo)線壓接工藝導(dǎo)則
- 《國家中藥飲片炮制規(guī)范》全文
- 心肌炎病人的護(hù)理
- 部編版四年級語文下冊第3單元大單元整體教學(xué)設(shè)計課件(教案配套)
- 合成纖維第五章干法紡絲
- GBZ/T(衛(wèi)生) 277-2016職業(yè)病危害評價通則
- GB/T 5267.3-2008緊固件熱浸鍍鋅層
- GB/T 3498-2008潤滑脂寬溫度范圍滴點(diǎn)測定法
評論
0/150
提交評論