DS130218B20萬(wàn)年歷1602顯示_第1頁(yè)
DS130218B20萬(wàn)年歷1602顯示_第2頁(yè)
DS130218B20萬(wàn)年歷1602顯示_第3頁(yè)
已閱讀5頁(yè),還剩8頁(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、* 描述 : 該程序?qū)崿F(xiàn)了用單片機(jī)來(lái)控制時(shí)鐘芯片 DS1302 進(jìn)行萬(wàn)年歷的顯示。 這個(gè)代碼相對(duì)來(lái)說(shuō)很復(fù)雜,注釋比較多,大家可以仔細(xì)分析。 程序運(yùn)行,首先設(shè)置時(shí)間。按 S21 ,進(jìn)行某一位的設(shè)置,會(huì)看到某一位上面會(huì)閃爍。按 S20 ,數(shù)值減 1.按 S22 ,數(shù)值加 1. 設(shè)置完后,時(shí)間會(huì)進(jìn)行運(yùn)行。 另外 ,1602 上也會(huì)有時(shí)間顯示的。 開(kāi)發(fā)板上有一個(gè) J28 跳線,用跳線帽短接,時(shí)間掉電后不會(huì)丟失。 因?yàn)橘M(fèi)電,所以建議 J28 不要一直短接。* 創(chuàng)建人 : 東流, 2018 年 2 月 7 日* 版本號(hào) : 1.0*杜邦線接法:P3.5接J18的1端;J3.6接J18的2端;J3.7接J1

2、8的3端。1602 接到 J17 的排座上。P2.3連接到J31的4端。P1.0 接 J8 的 2 端。P1.1 接 J8 的 3 端。P1.2 接 J8 的 4 端。 */ #include<reg51.h>#include"DS18B20_3.H"#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp 。/flag 用于讀取頭文件中的溫度值,和顯示溫度值#define yh 0x80 /LCD 第一行 的

3、初 始位置 ,因?yàn)?LCD1602 字符 地址首 位 D7 恒定 為 1<100000000=80 )#define er 0x80+0x40 /LCD 第二行初始位置 <因?yàn)榈诙械谝粋€(gè)字符位置地址是0x40)液晶屏的與C51之間的引腳連接定義 <顯示數(shù)據(jù)線接 C51的P0 口)sbit rs=P2A4。sbit rw=P2A5。 /如果硬件上rw接地,就不用寫這句和后面的rw=0 了sbit en=P2A6。/DS1302 時(shí)鐘芯片與 C51 之間的引腳連接定義sbit SCLK=P3A5 。sbit IO=P3A6 。sbit RST=P3A7。sbit ACC0=AC

4、CA0 。sbit ACC7=ACCA7 。/*ACC 累加器 =AACC.0=E0HACC.0 就是 ACC 的第 0位。 Acc 可以位尋址。累加器 ACC 是一個(gè) 8 位的存儲(chǔ)單元,是用來(lái)放數(shù)據(jù)的。但是,這個(gè)存儲(chǔ)單元有其特殊的地位, 是單片機(jī)中一個(gè)非常關(guān)鍵的單元,很多運(yùn)算都要通過(guò)ACC 來(lái)進(jìn)行。以后在學(xué)習(xí)指令時(shí),常用 A 來(lái)表示累加器。但有一些地方例外,比如在PUSH 指令中,就必須用 ACC 這樣的名字。一般的說(shuō)法, A 代表了累加器中的內(nèi)容、而 ACC 代表的是累加器的地址。 */校時(shí)按鍵與 C51 的引腳連接定義sbit key仁P1X。/設(shè)置鍵sbit key2=P1A2。/加鍵

5、sbit key3=P1A0。/減鍵 /*/ uchar code tab1="20 - - " 。 /年顯示的固定字符 uchar code tab2=" : : " 。 /時(shí)間顯示的固定字符/延時(shí)函數(shù),后面經(jīng)常調(diào)用void delay(uint xms>/ 延時(shí)函數(shù),有參函數(shù)uint x,y 。for(x=xms 。 x>0 。 x-> for(y=110 。 y>0。 y-> 。/* 液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用 */*在這個(gè)程序中,液晶寫入有關(guān)函數(shù)會(huì)在 DS1302的函數(shù)中調(diào)用,所以液晶程序要放在前面*

6、/void write_1602com(uchar com>/* 液晶寫入指令函數(shù) *rs=0。 /數(shù)據(jù) /指令選擇置為指令rw=0 。 /讀寫選擇置為寫P0=com。 /送入數(shù)據(jù) delay(1> 。en=1。 /拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay(1> 。en=0。 /en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令void write_1602dat(uchar dat>/* 液晶寫入數(shù)據(jù)函數(shù) *rs=1。 /數(shù)據(jù) /指令選擇置為數(shù)據(jù)rw=0 。 /讀寫選擇置為寫P0=dat。 /送入數(shù)據(jù)delay(1> 。en=1 。 /en 置高電平,為制造下降沿

7、做準(zhǔn)備 delay(1> 。en=0。 /en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令void lcd_init(>/* 液晶初始化函數(shù) *write_1602com(0x38> 。 /設(shè)置液晶工作模式,意思: 16*2 行顯示, 5*7 點(diǎn)陣, 8 位 數(shù)據(jù)write_1602com(0x0c> 。 /開(kāi)顯示不顯示光標(biāo) write_1602com(0x06> 。 /整屏不移動(dòng),光標(biāo)自動(dòng)右移 write_1602com(0x01> 。 /清顯示write_1602com(yh+1> 。 /日歷顯示固定符號(hào)從第一行第 1 個(gè)位置之后開(kāi)始顯示 for(a=0

8、。 a<14。 a+>write_1602dat(tab1a> 。 /向液晶屏寫日歷顯示的固定符號(hào)部分 /delay(3> 。write_1602com(er+2> 。 /時(shí)間顯示固定符號(hào)寫入位置,從第2 個(gè)位置后開(kāi)始顯示for(a=0 。 a<8。 a+>write_1602dat(tab2a> 。 /寫顯示時(shí)間固定符號(hào),兩個(gè)冒號(hào) /delay(3> 。*over*/*DS1302有關(guān)子函數(shù) */ void write_byte(uchar dat>/ 寫一個(gè)字節(jié)ACC=dat 。RST=1。for(a=8 。 a>0。 a-

9、>IO=ACC0 。SCLK=0 。SCLK=1 。ACC=ACC>>1 。uchar read_byte(>/ 讀一個(gè)字節(jié)RST=1。for(a=8 。 a>0。 a->ACC7=IO 。SCLK=1 。SCLK=0 。ACC=ACC>>1 。 return (ACC> 。/void write_1302(uchar add,uchar dat>/ 向 1302 芯片寫函數(shù),指定寫入地址,數(shù)據(jù) RST=0。SCLK=0 。RST=1。 write_byte(add> 。 write_byte(dat> 。SCLK=1 。

10、RST=0。uchar read_1302(uchar add>/ 從 1302 讀數(shù)據(jù)函數(shù),指定讀取數(shù)據(jù)來(lái)源地址uchar temp。RST=0。SCLK=0 。RST=1。write_byte(add> 。 temp=read_byte(> 。SCLK=1 。RST=0。 return(temp> 。uchar BCD_Decimal(uchar bcd>/BCD 碼轉(zhuǎn)十進(jìn)制函數(shù),輸入 BCD ,返回十進(jìn)制 uchar Decimal 。Decimal=bcd>>4 。 return(Decimal=Decimal*10+(bcd&=0x0

11、F>> 。/void ds1302_init(> /1302 芯片初始化子函數(shù) (2018-01-07,12:00:00,week4>RST=0。SCLK=0 。write_1302(0x8e,0x00> 。 / 允許寫,禁止寫保護(hù)/write_1302(0x80,0x00> 。 /向 DS1302 內(nèi)寫秒寄存器 80H 寫入初始秒數(shù)據(jù) 00 /write_1302(0x82,0x00> 。 /向 DS1302 內(nèi)寫分寄存器 82H 寫入初始分?jǐn)?shù)據(jù) 00 /write_1302(0x84,0x12> 。 /向 DS1302 內(nèi)寫小時(shí)寄存器 84H

12、 寫入初始小時(shí)數(shù)據(jù) 12 /write_1302(0x8a,0x04> 。/向 DS1302 內(nèi)寫周寄存器 8aH 寫入初始周數(shù)據(jù) 4 /write_1302(0x86,0x07> 。 /向 DS1302 內(nèi)寫日期寄存器 86H 寫入初始日期數(shù)據(jù) 07 /write_1302(0x88,0x01> 。 /向 DS1302 內(nèi)寫月份寄存器 88H 寫入初始月份數(shù)據(jù) 01 /write_1302(0x8c,0x10> 。 /向 DS1302 內(nèi)寫年份寄存器 8cH 寫入初始年份數(shù)據(jù) 10 write_1302(0x8e,0x80> 。 / 打開(kāi)寫保護(hù)/溫度顯示子函數(shù)v

13、oid write_temp(uchar add,uchar dat>/ 向 LCD 寫溫度數(shù)據(jù) ,并指定顯示位置uchar gw,sw。gw=dat%10 。 /取得個(gè)位數(shù)字sw=dat/10 。 /取得十位數(shù)字write_1602com(er+add> 。 /er 是頭文件規(guī)定的值 0x80+0x40 write_1602dat(0x30+sw> 。/數(shù)字 +30得到該數(shù)字的 LCD1602 顯示碼 write_1602dat(0x30+gw> 。/數(shù)字+30得到該數(shù)字的 LCD1602 顯示碼 write_1602dat(0xdf> 。/ 顯示溫度的小圓圈符

14、號(hào), 0xdf 是液晶屏字符庫(kù)的該符號(hào)地址碼write_1602dat(0x43> 。 /顯示 "C" 符號(hào), 0x43 是液晶屏字符庫(kù)里大寫 C 的地址碼/時(shí)分秒顯示子函數(shù)void write_sfm(uchar add,uchar dat>/ 向 LCD 寫時(shí)分秒 ,有顯示位置加、現(xiàn)示數(shù)據(jù),兩個(gè)參數(shù)uchar gw,sw。gw=dat%10 。 /取得個(gè)位數(shù)字sw=dat/10 。 /取得十位數(shù)字write_1602com(er+add> 。 /er 是頭文件規(guī)定的值 0x80+0x40 write_1602dat(0x30+sw> 。/數(shù)字 +

15、30得到該數(shù)字的 LCD1602 顯示碼 write_1602dat(0x30+gw> 。/數(shù)字+30得到該數(shù)字的 LCD1602 顯示碼/年月日顯示子函數(shù)void write_nyr(uchar add,uchar dat>/ 向 LCD 寫年月日,有顯示位置加數(shù)、顯示數(shù)據(jù),兩個(gè) 參數(shù)uchar gw,sw。gw=dat%10 。 /取得個(gè)位數(shù)字sw=dat/10 。 /取得十位數(shù)字write_1602com(yh+add> 。 /設(shè)定顯示位置為第一個(gè)位置 +add write_1602dat(0x30+sw> 。/數(shù)字 +30得到該數(shù)字的 LCD1602 顯示碼 w

16、rite_1602dat(0x30+gw> 。/數(shù)字+30得到該數(shù)字的 LCD1602 顯示碼/void write_week(uchar week>/ 寫星期函數(shù)write_1602com(yh+0x0c> 。 /星期字符的顯示位置switch(week>case 1:write_1602dat('M'> 。 /星期數(shù)為 1 write_1602dat('O'> 。 write_1602dat('N'> 。break。case 2:write_1602dat('T'> 。 /星期數(shù)

17、據(jù)為write_1602dat('U'> 。write_1602dat('E'> 。break。case 3:write_1602dat('W'> 。 /星期數(shù)據(jù)為 write_1602dat('E'> 。 write_1602dat('D'> 。break。case 4:write_1602dat('T'> 。 /星期數(shù)據(jù)為write_1602dat('H'> 。write_1602dat('U'> 。break。ca

18、se 5:write_1602dat('F'> 。 /星期數(shù)據(jù)為 write_1602dat('R'> 。 write_1602dat('I'> 。break。case 6:write_1602dat('S'> 。 /星期數(shù)據(jù)為write_1602dat('T'> 。write_1602dat('A'> 。break。case 7:write_1602dat('S'> 。 /星期數(shù)據(jù)為write_1602dat('U'>

19、 。write_1602dat('N'> 。break。時(shí),顯示2 時(shí)顯示3 時(shí)顯示4 是顯示5 時(shí)顯示6 時(shí)顯示7 時(shí)顯示/*鍵盤掃描有關(guān)函數(shù) * void keyscan(>key1 為功能鍵 < 設(shè)置鍵)if(key1=0>/delay(9>。 /延時(shí),用于消抖動(dòng) if(key1=0>/ 延時(shí)后再次確認(rèn)按鍵按下 while(!key1> 。 key1n+ 。 if(key1n=9>8 個(gè)功keyl n=1。/設(shè)置按鍵共有秒、分、時(shí)、星期、日、月、年、返回,能循環(huán)switch(key1n>case 1: TR0=0。 /

20、關(guān)閉定時(shí)器/TR1=0 。write_1602com(er+0x09> 。 /設(shè)置按鍵按動(dòng)一次,秒位置顯示光標(biāo) write_1602com(0x0f> 。 /設(shè)置光標(biāo)為閃爍 temp=(miao>/10*16+(miao>%10 。 /秒數(shù)據(jù)寫入 DS1302 write_1302(0x8e,0x00> 。write_1302(0x80,0x80|temp> 。 /miaowrite_1302(0x8e,0x80> 。break。case 2: write_1602com(er+6> 。/按 2次 fen 位置顯示光標(biāo)/write_1602com

21、(0x0f> 。break。case 3: write_1602com(er+3> 。/按動(dòng) 3次, shi/write_1602com(0x0f> 。break。case 4: write_1602com(yh+0x0e> 。/按動(dòng) 4次, week/write_1602com(0x0f> 。break。case 5: write_1602com(yh+0x0a> 。/按動(dòng) 5次, ri/write_1602com(0x0f> 。break。case 6: write_1602com(yh+0x07> 。/按動(dòng) 6次, yue/write_16

22、02com(0x0f> 。break。case 7: write_1602com(yh+0x04> 。/按動(dòng) 7次, nian/write_1602com(0x0f> 。break。case 8:write_1602com(0x0c> 。 /按動(dòng)到第 8 次,設(shè)置光標(biāo)不閃爍TR0=1。/打開(kāi)定時(shí)器temp=(miao>/10*16+(miao>%10 。write_1302(0x8e,0x00> 。write_1302(0x80,0x00|temp> 。 /miao 數(shù)據(jù)寫入 DS1302 write_1302(0x8e,0x80> 。br

23、eak 。/ 加鍵 key2if(key1n!=0>/ 當(dāng) key1 按下以下。再按以下鍵才有效<按鍵次數(shù)不等于零)if(key2=0> / 上調(diào)鍵 delay(10> 。 if(key2=0> while(!key2> 。 switch(key1n>case 1:miao+。 /設(shè)置鍵按動(dòng) 1 次,調(diào)秒 if(miao=60>miao=0 。/秒超過(guò) 59,再加 1,就歸零 write_sfm(0x08,miao> 。 /令 LCD 在正確位置顯示 "加 "設(shè)定好的秒數(shù) temp=(miao>/10*16+(mi

24、ao>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 / 允許寫,禁止寫保護(hù) write_1302(0x80,temp> 。 /向 DS1302 內(nèi)寫秒寄存器 80H 寫入調(diào)整 后的秒數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 / 打開(kāi)寫保護(hù) write_1602com(er+0x09> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,光 標(biāo)自動(dòng)右移,所以要指定返回/write_1602com(0x0b> 。 break。case 2:fen+。 if(fen=60>fen=0。 w

25、rite_sfm(0x05,fen> 。/令 LCD 在正確位置顯示 " 加" 設(shè)定好的分?jǐn)?shù) 據(jù)temp=(fen>/10*16+(fen>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x82,temp> 。/向 DS1302 內(nèi)寫分寄存器 82H 寫入調(diào)整后 的分?jǐn)?shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(er+6> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自

26、動(dòng)加一,在這里是寫回原來(lái)的位置break。case 3:shi+。if(shi=24>shi=0 。 write_sfm(2,shi> 。/令 LCD 在正確的位置顯示 "加" 設(shè)定好的小時(shí)數(shù) 據(jù)temp=(shi>/10*16+(shi>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x84,temp> 。 /向 DS1302 內(nèi)寫小時(shí)寄存器 84H 寫入調(diào)整后的小時(shí)數(shù)據(jù) BCD 碼write_1302(0x8e,0x80>

27、。 /打開(kāi)寫保護(hù) write_1602com(er+3> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一,所以需要光標(biāo)回位break。case 4:week+。if(week=8> week=1 。write_1602com(yh+0x0C> 。/指定 '加 '后的周數(shù)據(jù)顯示位置 write_week(week> 。/ 指定周數(shù)據(jù)顯示內(nèi)容 temp=(week>/10*16+(week>%10 。 / 十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_

28、1302(0x8a,temp> 。 /向 DS1302 內(nèi)寫周寄存器 8aH 寫入調(diào)整后 的周數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(yh+0x0e> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后, 指針自動(dòng)加一,所以需要光標(biāo)回位break。case 5:ri+。if(ri=32> ri=1。write_nyr(9,ri> 。/令 LCD 在正確的位置顯示 " 加"設(shè)定好的日期數(shù)據(jù) temp=(ri>/10*16+(ri>%10。/十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB

29、碼 write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x86,temp>。 /向DS1302內(nèi)寫日期寄存器 86H寫入調(diào)整 后的日期數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù)write_1602com(yh+10> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指 針自動(dòng)加一,所以需要光標(biāo)回位break。case 6:yue+。if(yue=13> yue=1 。write_nyr(6,yue> 。 /令 LCD 在正確的位置顯示 "加"設(shè)定好的月份數(shù) 據(jù)temp=(y

30、ue>/10*16+(yue>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x88,temp> 。 /向 DS1302 內(nèi)寫月份寄存器 88H 寫入調(diào)整 后的月份數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù)write_1602com(yh+7> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一,所以需要光標(biāo)回位break。case 7:nian+ 。if(nian=100> nian=0。 write_nyr(

31、3,nian> 。 /令 LCD 在正確的位置顯示 "加 "設(shè)定好的年份數(shù) 據(jù)temp=(nian>/10*16+(nian>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x8c,temp> 。 /向 DS1302 內(nèi)寫年份寄存器 8cH 寫入調(diào)整 后的年份數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(yh+4> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一

32、,所以需要光標(biāo)回位break。/ 減鍵 key3 ,各句功能參照 '加鍵'注釋 if(key3=0>delay(10> 。/調(diào)延時(shí),消抖動(dòng) if(key3=0> while(!key3> 。 switch(key1n> case 1:miao-。 if(miao=-1>miao=59。/秒數(shù)據(jù)減到-1時(shí)自動(dòng)變成59 write_sfm(0x08,miao> 。 /在 LCD 的正確位置顯示改變后新的秒數(shù) temp=(miao>/10*16+(miao>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1 302要求的 DCB 碼 write_

33、1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x80,temp> 。/向 DS1302 內(nèi)寫秒寄存器 80H 寫入調(diào)整后的秒數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(er+0x09> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指 針自動(dòng)加一,在這里是寫回原來(lái)的位置/write_1602com(0x0b> 。 break。case 2:fen-。 if(fen=-1>fen=59。write_sfm(5,fen> 。 temp=(fen>/10*16+(

34、fen>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCBwrite_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x82,temp> 。/向 DS1302 內(nèi)寫分寄存器 82H 寫入調(diào)整后 的分?jǐn)?shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(er+6> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一,在這里是寫回原來(lái)的位置break。case 3:shi-。if(shi=-1>shi=23。write_sfm(2,shi> 。 temp=(shi

35、>/10*16+(shi>%10 。 /十進(jìn)制轉(zhuǎn)換成DS1302 要求的 DCB碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x84,temp> 。 /向 DS1302 內(nèi)寫小時(shí)寄存器 84H 寫入調(diào)整 后的小時(shí)數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(er+3> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一,所以需要光標(biāo)回位break。case 4:week-。if(week=0>week=7 。write_1602com(yh+

36、0x0C> 。/指定 '加 '后的周數(shù)據(jù)顯示位置 write_week(week> 。/ 指定周數(shù)據(jù)顯示內(nèi)容 temp=(week>/10*16+(week>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x8a,temp> 。 /向 DS1302 內(nèi)寫周寄存器 8aH 寫入調(diào)整后 的周數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(yh+0x0e> 。 /因?yàn)樵O(shè)置液晶

37、的模式是寫入數(shù)據(jù)后, 指針自動(dòng)加一,所以需要光標(biāo)回位break。case 5:ri- 。if(ri=0>ri=31 。write_nyr(9,ri> 。temp=(ri>/10*16+(ri>%10。/十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x86,temp>。 /向DS1302內(nèi)寫日期寄存器 86H寫入調(diào)整 后的日期數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù)write_1602com(yh+10> 。 /因?yàn)樵O(shè)

38、置液晶的模式是寫入數(shù)據(jù)后,指針自動(dòng)加一,所以需要光標(biāo)回位break。 case 6:yue-。if(yue=0> yue=12。 write_nyr(6,yue> 。 temp=(yue>/10*16+(yue>%10 。 /十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x88,temp> 。 /向 DS1302 內(nèi)寫月份寄存器 88H 寫入調(diào)整 后的月份數(shù)據(jù) BCD 碼write_1302(0x8e,0x80> 。 /打開(kāi)寫保護(hù) write_1602com(yh+7> 。 /因?yàn)樵O(shè)置液晶的模式是寫入數(shù)據(jù)后,指針 自動(dòng)加一,所以需要光標(biāo)回位break。case 7:nian-。if(nian=-1> nian=99。 write_nyr(3,nian> 。temp=(nian>/10*16+(nian>%10 。/ 十進(jìn)制轉(zhuǎn)換成 DS1302 要求的 DCB 碼 write_1302(0x8e,0x00> 。 /允許寫,禁止寫保護(hù) write_1302(0x8c,temp> 。 /向 DS1302 內(nèi)寫年份寄存器 8cH 寫入調(diào)整 后的年份數(shù)據(jù)

溫馨提示

  • 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)論