

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1、DS1302引腳排列:如下圖VCC2匚2h1 63VCC1xi匚27SCLKX2E36 i IQGNDL45 | RST引腳說明:1)Vcc1:后備電源,VCC2主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。2)X1、X2:振蕩源,外接32.768kHz晶振。3)RST復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其
2、次,RST提供 終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許 對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O弓I腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.0V之前,RST必須保持低電平。只有在SCLK為低電 平時,才能將RST置為高電平。4)I/O為串行數(shù)據(jù)輸入輸出端(雙向)。5)SCLK為時鐘輸入端。2、DS1302的控制字節(jié)基于proteus的51單片機仿真實例八十實例實時時鐘芯片DS1302應用DS1302的控制字如下圖所示。I聲 /|;7A52Alkx/zkK 2 DSI3O2的挖州宇肯控制字節(jié)的最高有效位(位7
3、)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從 最低位開始輸出。3、數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK寸鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為BCD碼形式,其日歷
4、、時間寄存器及其控制字見數(shù)據(jù)手冊。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H- FDH其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAMI寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。#in cludeF面是其C程序(獨家轉售)#include #define uchar unsigned char#
5、define uint unsigned int #define LCDIO P2sbit rs=P3A0;sbit rd=P3A1;sbit lcden=P3A2;sbit acc0=ACCA0;/sbit acc7=ACCA7;/ ucharsecond,minute,hour,day,month,year,week,count=0;uchar ReadValue,num,time;uchar code table= 2010-11-29 MON;uchar code table1= 15:45:00 ;uchar code table2= THUFRISATSUNMONTUEWES;sb
6、it DATA=P0A1;sbit RST=P0A2;sbit SCLK=P0A0;sbit menu=P3A5;sbit add=P3A6;sbit dec=P3A7;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay1(uint z)for(;z0;z-);移位時的第0位移位時用的第7位/菜單/加一/減一void write_com(uchar com)rs=0;rd=0;lcden=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uc
7、har date)rs=1;rd=0;lcden=0;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num;lcden=0;write_com(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);write_com(0 x80);delay(5);write_com(0 x80);for(num=0;num15;num+)write_date(tablenum); delay(5);write_com(0 x80+0 x40);for(num=0;num10;
8、num+)write_date(table1num);delay(5);void Write1302(uchar dat)uchar i;SCLK=0;/拉低SCLK為脈沖上升沿寫入數(shù)據(jù)做好準備delay1(2);/稍微等待,使硬件做好準備for(i=0;i=1;/稍微等待,使硬件做好準備重新拉低SCLK形成脈沖將dat的各數(shù)據(jù)位右移1位,準備寫入下一個數(shù)據(jù)位void WriteSet1302(uchar Cmd,uchar dat)RST=0;/禁止數(shù)據(jù)傳遞確保寫數(shù)居前SCLK被拉低啟動數(shù)據(jù)傳輸稍微等待,使硬件做好準備寫入命令字寫數(shù)據(jù)將時鐘電平置于已知狀態(tài)禁止數(shù)據(jù)傳遞uchar Read13
9、02(void)uchar i,dat;delay(2); /稍微等待,使硬件做好準備for(i=0;i=1; /將dat的各數(shù)據(jù)位右移1位,因為先讀出的是字節(jié)的最低位if(DATA=1) /如果讀出的數(shù)據(jù)是1dat|=0 x80; /將1取出,寫在dat的最高位SCLK=1; /將SCLK置于高電平,為下降沿讀出delay1(2); /稍微等待SCLK=0; /拉低SCLK形成脈沖下降沿delay1(2); /稍微等待return dat;/將讀出的數(shù)據(jù)返回SCLK=0; /RST=1; / delay1(2);/Write1302(Cmd); /Write1302(dat); /SCLK=
10、1; /RST=0; /uchar ReadSet1302(uchar Cmd)RST=0;/拉低RSTSCLK=0;/確保寫數(shù)居前SCLK被拉低RST=1;/啟動數(shù)據(jù)傳輸uchar dat;Write1302(Cmd); /寫入命令字dat=Read1302();/讀出數(shù)據(jù)SCLK=1;/將時鐘電平置于已知狀態(tài)RST=0;/禁止數(shù)據(jù)傳遞return dat; /將讀出的數(shù)據(jù)返回void In it_DS1302(void)WriteSet1302(0 x8E,0 x00);/令根據(jù)寫狀態(tài)寄存器命令字,WriteSet1302(0 x80,(0/10)4|(0%10); /WriteSet13
11、02(0 x82,(45/10)4|(45%10); /值WriteSet1302(0 x84,(15/10)4|(15%10);始值WriteSet1302(0 x86,(29/10)4|(29%10);WriteSet1302(0 x88,(11/10)4|(11%10);根據(jù)寫秒寄存器命令字,根據(jù)寫分寄存器命令字,/根據(jù)寫小時寄存器命令字,/根據(jù)寫日寄存器命令字,/根據(jù)寫月寄存器命令字,寫入不保護指寫入秒的初始值寫入分的初始寫入小時的初 寫入日的初始值寫入月的初始值WriteSet1302(0 x8c,(10/10)4|(10%10); /nianWriteSet1302(0 x8a,(
12、4/10)4|(4%10);void DisplaySecond(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 xc8);write_date(0 x30+i);write_date(0 x30+j);void DisplayMinute(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 xc5);write_date(0 x30+i);write_date(0 x30+j);void DisplayHour(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 xc2);writ
13、e_date(0 x30+i);write_date(0 x30+j);void DisplayDay(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 x89);write_date(0 x30+i);write_date(0 x30+j);void DisplayMonth(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 x86);write_date(0 x30+i);write_date(0 x30+j);void DisplayYear(uchar x)uchar i,j;i=x/10;j=x%10;wri
14、te_com(0 x83);write_date(0 x30+i);write_date(0 x30+j);void DisplayWeek(uchar x) uchar i;x=x*3;write_com(0 x8c);for(i=0;i4)*10 + (ReadValue&0 x0F);ReadValue = ReadSet1302(0 x83);minute=(ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = ReadSet1302(0 x85);hour=(ReadValue&0 x70)4)*10 + (ReadValue&0
15、 x0F);ReadValue = ReadSet1302(0 x87);day=(ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = ReadSet1302(0 x89);month=(ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue = ReadSet1302(0 x8d);year=(ReadValue&0 x70)4)*10 + (ReadValue&0 x0F);ReadValue=ReadSet1302(0 x8b); /week=ReadValue&0 x07;Displ
16、aySecond(second);DisplayMinute(minute);DisplayHour(hour);DisplayDay(day);DisplayMonth(month);DisplayYear(year);DisplayWeek(week);void turn_val(char newval,uchar flag,uchar newaddr,uchar s1num)讀星期newval=ReadSet1302(newaddr);/讀取當前時間newval=(newval&0 x70)4)*10+(newval&0 x0f); /將bcd碼轉換成十進制if(flag) /判斷是加一
17、還是減一newval+;switch(s1num) case 1: if(newval99) newval=0;DisplayYear(newval);break;case 2: if(newval12) newval=1;DisplayMonth(newval);break;case 3: if(newval31) newval=1;DisplayDay(newval);break;case 4: if(newval6) newval=0;DisplayWeek(newval);break;case 5: if(newval23) newval=0;DisplayHour(newval);b
18、reak;case 6: if(newval59) newval=0;DisplayMinute(newval);break;case 7: if(newval59) newval=0;DisplaySecond(newval);break;default:break;elsenewval-;switch(s1num) case 1: if(newval=0) newval=99;DisplayYear(newval);break;case 2: if(newval=0) newval=12;DisplayMonth(newval);break;case 3: if(newval=0) new
19、val=31;DisplayDay(newval);break;case 4: if(newval0) newval=6;DisplayWeek(newval);break;case 5: if(newval0) newval=23;DisplayHour(newval);break;case 6: if(newval0) newval=59;DisplayMinute(newval);break;case 7: if(newval0) newval=59;DisplaySecond(newval);break;default:break;WriteSet1302(newaddr-1),(ne
20、wval/10)4)|(newval%10); /數(shù)據(jù)寫入寄存器/鍵盤掃描程序/*void key_scan(void) uchar miao,s1num=0;if(menu=0)delay(5);if(menu=0)while(!menu);s1num+;將新if(add=0)while(1)if(menu=0)delay(5);if(menu=0)while(!menu);s1num+;rd=0;miao=ReadSet1302(0 x81);second=miao;WriteSet1302(0 x80,miao|0 x80);write_com(0 x0f);/光標閃射if(s1num=
21、1) year=ReadSet1302(0 x8d);write_com(0 x80+4); /年光標if(add=0)delay(3);if(add=0) while(!add);turn_val(year,1,0 x8d,1);if(dec=0)delay(3);if(dec=0) while(!dec); turn_val(year,0,0 x8d,1);if(s1num=2)month=ReadSet1302(0 x89);write_com(0 x80+7); /月光標if(add=0)delay(3); while(!add);if(dec=0)turn_val(month,1,0
22、 x89,2);if(dec=0)delay(3);if(dec=0) while(!dec);turn_val(month,0,0 x89,2);if(s1num=3) day=ReadSet1302(0 x87); write_com(0 x80+10);/if(add=0)delay(3);if(add=0) while(!add);turn_val(day,1,0 x87,3);日光標delay(3);if(dec=0) while(!dec);turn_val(day,0,0 x87,3);if(s1num=4) week=ReadSet1302(0 x8b);write_com(0 x80+14); /星期光標if(add=0)delay(3);if(add=0) while(!add);turn_val(week,1,0 x8b,4);if(dec=0)delay(3);if(dec=0) while(!dec);turn_val(week,0,0 x8b,4);/寫入日寄存器if(s1num=5) hour=ReadSet1302(0 x85);write_com(0 x80+0 x40+3); /if(add=0)delay(3);if(add=0) while
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冰柜使用合同范本
- 云南2025年云南省民族宗教事務委員會委屬事業(yè)單位招聘7人筆試歷年參考題庫附帶答案詳解
- 科技發(fā)展中的倫理與安全意識普及
- 科技公司如何應對網(wǎng)絡攻擊的實戰(zhàn)經(jīng)驗
- MJC13-生命科學試劑-MCE
- GPV574-生命科學試劑-MCE
- 2002-G12-生命科學試劑-MCE
- 1-Phenylethylamine-hydrochloride-生命科學試劑-MCE
- 中山廣東中山市東鳳鎮(zhèn)第二中學招聘臨聘教師筆試歷年參考題庫附帶答案詳解
- 租借婚紗合同范本
- 旅行社運營實務電子課件 1.2 了解旅行社核心業(yè)務部門
- 部編版五年級語文下冊課文四字詞總結
- 綜合交通運輸體系認知
- GM/T 0115-2021信息系統(tǒng)密碼應用測評要求
- YY 0670-2008無創(chuàng)自動測量血壓計
- JJF 1458-2014磁軛式磁粉探傷機校準規(guī)范
- GB/T 39935-2021塑料制品薄膜和片材抗粘連性的測定
- GB/T 324-2008焊縫符號表示法
- 機器人技術 第一章 緒論
- 馬工程教材 《公共財政概論》PPT-第八章 稅收
- GB/T 22544-2008蛋雞復合預混合飼料
評論
0/150
提交評論