IO口實(shí)時(shí)時(shí)鐘芯片DS1302的應(yīng)用實(shí)例行業(yè)信息_第1頁
IO口實(shí)時(shí)時(shí)鐘芯片DS1302的應(yīng)用實(shí)例行業(yè)信息_第2頁
IO口實(shí)時(shí)時(shí)鐘芯片DS1302的應(yīng)用實(shí)例行業(yè)信息_第3頁
IO口實(shí)時(shí)時(shí)鐘芯片DS1302的應(yīng)用實(shí)例行業(yè)信息_第4頁
IO口實(shí)時(shí)時(shí)鐘芯片DS1302的應(yīng)用實(shí)例行業(yè)信息_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 項(xiàng)目6 實(shí)時(shí)時(shí)鐘芯片實(shí)時(shí)時(shí)鐘芯片ds1302ds1302的應(yīng)用實(shí)例的應(yīng)用實(shí)例 1學(xué)習(xí)課件6.1 6.1 項(xiàng)目任務(wù)項(xiàng)目任務(wù)在許多的單片機(jī)系統(tǒng)中,通常進(jìn)行一些與時(shí)間有關(guān)的控制,這就需要使用實(shí)時(shí)時(shí)鐘。例如在測量控制系統(tǒng)中,特別是長時(shí)間無人值守的測控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時(shí)間。在系統(tǒng)中采用實(shí)時(shí)時(shí)鐘芯片能很好的解決這個(gè)問題。2學(xué)習(xí)課件 實(shí)時(shí)時(shí)鐘(rtc)是一個(gè)由晶體控制精度的,向主系統(tǒng)提bcd碼表示的時(shí)間和日期的器件。主系統(tǒng)與rtc間的通信可通過并行口也可通過串行口,并行器件速度快但需較大的底板空間和較昂貴,串行器件體積較小且價(jià)格也相對便宜。 希望讀者在學(xué)完本節(jié)后,能完成

2、相關(guān)的電路設(shè)計(jì),并 掌握如下知識點(diǎn):3學(xué)習(xí)課件掌握時(shí)鐘芯片ds1302的原理、特性及選擇;51單片機(jī)和時(shí)鐘芯片ds1302的接口電路設(shè)計(jì);掌握時(shí)鐘芯片ds1302的c51程序設(shè)計(jì)。6.2 ds13026.2 ds1302的結(jié)構(gòu)及工作原理的結(jié)構(gòu)及工作原理4學(xué)習(xí)課件 ds1302 是美國dallas公司推出的一種高性能、低功耗帶ram的實(shí)時(shí)時(shí)鐘電路,它可以對年、月、日、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或ram數(shù)據(jù)。ds1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的ram寄存器。5學(xué)

3、習(xí)課件 下圖14-1示出ds1302的實(shí)物圖及引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc10.2v時(shí),vcc2給ds1302供電。當(dāng)vcc2小于vcc1時(shí),ds1302由vcc1供電。x1和x2是振蕩6.3 ds13026.3 ds1302的引腳功能及內(nèi)部結(jié)構(gòu)的引腳功能及內(nèi)部結(jié)構(gòu) ds1302是ds1202的升級產(chǎn)品,與ds1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。 6學(xué)習(xí)課件源,外接32.768khz晶振。rst是

4、復(fù)位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。 當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對ds1302進(jìn)行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)7學(xué)習(xí)課件行時(shí),在vcc2.5v之前,rst必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向), sclk始終是輸入端。 圖圖6-1 ds1302的實(shí)物圖及引腳排列的實(shí)物圖及引腳排列8學(xué)習(xí)課件其內(nèi)

5、部結(jié)構(gòu)如下圖其內(nèi)部結(jié)構(gòu)如下圖6-26-2所示所示圖圖6-2 ds1302內(nèi)部結(jié)構(gòu)圖內(nèi)部結(jié)構(gòu)圖9學(xué)習(xí)課件6.4 ds13026.4 ds1302的寄存器和控制命令的寄存器和控制命令日歷、 時(shí)鐘寄存器及其控制字對照表 寄存器名稱 765432101ram/ck a4 a3a2a1a0rd/w 秒寄存器 10000001/0 分寄存器 10000011/0 時(shí)寄存器 10000101/0 日寄存器 10000111/0 月寄存器 10001001/0 周寄存器 10001011/0 年寄存器 10001101/0 寫保護(hù)寄存器 10001111/0 慢充電寄存器 10010001/0 時(shí)鐘突發(fā)秒寄存

6、器 10111111/0 10學(xué)習(xí)課件ds1302ds1302內(nèi)部主要寄存器功能如下表所示內(nèi)部主要寄存器功能如下表所示ds1302內(nèi)部主要寄存器功能表 名稱命令字 取值范圍 各位內(nèi)容讀寫76543210秒寄存器 80h 81h00-59 ch 10sec sec 分寄存器 82h 83h00-59 0 10min min 時(shí)寄存器 84h 85h1-12或0-23 12/24 0a/p hr hr 日寄存器 86h 87h1-28,29,30,31 0010date date 月寄存器 88h 89h1-12 00010m month 周寄存器 8ah 8bh1-7 00000day 年寄存器

7、 8ch 8dh0-99 10year year 11學(xué)習(xí)課件 其中ch:時(shí)鐘停止位;為0時(shí)振蕩器工作;為1時(shí)振蕩器停止;ap=1時(shí)為下午模式,為0時(shí)上午模式ds1302的控制字節(jié)說明 1)ds1302的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到ds1302中:位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址:最低有效位(位0)為012學(xué)習(xí)課件表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。 2)在控制指令字輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊

8、跟8位的控制指令字后的下一個(gè)sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位至高位7。13學(xué)習(xí)課件6.5 ds13026.5 ds1302的讀寫時(shí)序的讀寫時(shí)序 不僅要向寄存器寫入控制字。還需要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與ds1302通信,首先要先了解ds1302的控制字。ds1302的控制字見5.4節(jié)內(nèi)容??刂谱值淖罡哂行?位7)必須是邏輯1,如果它為0。則不能把數(shù)據(jù)寫入到ds1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1(a4a0):指示操作單元的地址;位0(最低有效位):如為0。表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作。控制字總是從最低

9、位開始輸出。14學(xué)習(xí)課件在控制字指令輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從最低位(0位)開始。 同樣,在緊跟8位的控制字指令后的下一個(gè)sclk脈沖的下降沿,讀出ds1302的數(shù)據(jù)。讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時(shí)序如下圖14-3所示。具體操作見驅(qū)動程序。15學(xué)習(xí)課件圖圖6-3 ds13026-3 ds1302數(shù)據(jù)讀寫時(shí)序圖數(shù)據(jù)讀寫時(shí)序圖16學(xué)習(xí)課件6.6 ds13026.6 ds1302的程序設(shè)計(jì)的程序設(shè)計(jì) 1)ds1302和單片機(jī)連接示意圖如下圖圖6-4 ds13026-4 ds1302和單片機(jī)連接示意圖和單片機(jī)連接示意圖17學(xué)習(xí)課件2)ds130

10、2應(yīng)用程序設(shè)計(jì)流程圖如下所示:圖圖6-5 ds13026-5 ds1302應(yīng)用程序設(shè)計(jì)流程圖應(yīng)用程序設(shè)計(jì)流程圖 18學(xué)習(xí)課件3)應(yīng)用程序清單如下: 程序用按鍵設(shè)置秒、分、時(shí),用液晶lcd1602顯示設(shè)置的時(shí)間。/*程序描述程序描述:以下程序?yàn)閐s1302的頭函數(shù)文件,在建立項(xiàng)目的時(shí)候該部分要保存為ds1302.h。該頭文件中有對ds1302基本的單字節(jié)讀寫函數(shù),取時(shí)間函數(shù),設(shè)置時(shí)間函數(shù),在主函數(shù)中要調(diào)用這些函數(shù)。 * /#define uchar unsigned char /宏定義sbit t_clk = p10; /設(shè)置實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 /sbit t_io = p11; /設(shè)置實(shí)時(shí)時(shí)鐘

11、數(shù)據(jù)線引腳 /sbit t_rst = p12; /設(shè)置實(shí)時(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ù)*

12、/ void v_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)于匯編中的 rrcacc7 = t_io;t_clk = 1; t_clk = 0; return(acc); /*往ds1302寫入數(shù)據(jù),先寫地址,后寫命令

13、/數(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(ucaddr); /* 地址,命令 */

14、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=0v_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); /時(shí)v_w1302(0 x86,0 x01); /日v_w1302(0 x88,0 x08); /月v_w1302(0 x8a,0 x

15、03); /星期v_w1302(0 x8c,0 x07); /年 v_w1302(0 x8e,0 x80);/*取出時(shí)間并處理,以便送數(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&0 x0f;time11=(d4)&0 x0f;d=uc_r1302(0 x83);counter1=d/16*10+d%16; /十六進(jìn)制轉(zhuǎn)換為bcd碼time12=d&0 x0f;time13=(d4)&0 x0f;d=uc_r1302

16、(0 x85);counter2=d/16*10+d%16; /十六進(jìn)制轉(zhuǎn)換為bcd碼23學(xué)習(xí)課件time14=d&0 x0f;time15=(d4)&0 x0f;void set_time(void)v_w1302(0 x8e,0 x00);v_w1302(0 x80,0 x80);v_w1302(0 x82,min);v_w1302(0 x84,hou);v_w1302(0 x86,day);v_w1302(0 x88,mon);v_w1302(0 x8c,yea);v_w1302(0 x80,0 x00);v_w1302(0 x8e,0 x80);以上函數(shù)為ds1302.

17、h文件,在主函數(shù)中要調(diào)用該函數(shù)24學(xué)習(xí)課件/*程序描述程序描述:該程序能通過和單片機(jī)連接的按鍵調(diào)整并設(shè)置ds1302的時(shí)間,并能將從ds1302中讀出的時(shí)間在六個(gè)七段數(shù)碼管上顯示,p0口驅(qū)動數(shù)碼管的各段,p2口低六位連接到六個(gè)數(shù)碼管的公共端,數(shù)碼管為共陽。*/#include #include #include ds1302.h#define uchar unsigned char#define uint unsigned intcode seven_tab10 = 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;code

18、 bit_select6 = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf;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個(gè)按鍵的端口sbit key2 = p31;sbit key3 = p32; sbit key4 = p33

19、;/*時(shí)間延遲函數(shù)*/25學(xué)習(xí)課件void delay(int delaytime)while(delaytime-) _nop_();void delayms(unsigned int delaytime)uint i,j;for( i = 0;i delaytime;i+ )for(j = 0;j = 60) counter0 = 0; if(key3 = 0 ) key3 = 1; ;if(key3 = 0)key3_state = 1; if(key3 = 1 & key3_state = 1) key3_state = 0;counter0-; if(counter0 = 6

20、0) counter1 = 0; if(key3 = 0 ) key3 = 1; ;if(key3 = 0)31學(xué)習(xí)課件key3_state = 1; if(key3 = 1 & key3_state = 1) key3_state = 0;counter1-; if(counter1 23 & d = 0) counter2 = 0;if(counter2 12 & d = 1) counter2 = 1; if(key3 = 0) key3 = 1; ;if(key3 = 0)key3_state = 1; if(key3 = 1 & key3_state

21、= 1) key3_state = 0;counter2-; if(counter2 0 & d = 0) counter2 = 23;if(counter2 1 & d = 1) counter2 = 12; c = dot*0 xff;34學(xué)習(xí)課件else c = 0;if(key4 = 0) key4 = 1; ; if(key4 = 0) key4_state = 1; if(key4 = 1 & key4_state = 1) d = !d;key4_state = 0;/*顯示函數(shù)*/void display()uchar i;p0 = 0 xff;p2 = bit_select0;p0 = a|seven_tabcounter0%10;delay(100);

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論