C語言多功能電腦時鐘設(shè)計(jì)報(bào)告_第1頁
C語言多功能電腦時鐘設(shè)計(jì)報(bào)告_第2頁
C語言多功能電腦時鐘設(shè)計(jì)報(bào)告_第3頁
C語言多功能電腦時鐘設(shè)計(jì)報(bào)告_第4頁
C語言多功能電腦時鐘設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言多功能電腦時鐘設(shè)計(jì)報(bào)告

一、實(shí)訓(xùn)目的意義及任務(wù)要求

1.1目的意義

單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀器儀表、實(shí)時工控、通訊設(shè)備、導(dǎo)

航系統(tǒng)、家用電器等。“學(xué)好單片機(jī),工作就不成問題了?!崩蠋熣f,可見學(xué)好單

片意義之重大。單片機(jī)作為一門基礎(chǔ)學(xué)科,既是對前期學(xué)習(xí)c語言的綜合運(yùn)用,也

是理論與實(shí)踐相結(jié)合的一大體現(xiàn)。電腦時鐘有效地檢驗(yàn)了對DS1302時鐘芯片,

STC89c52單片機(jī)中斷,獨(dú)立鍵盤,數(shù)碼管,蜂鳴器,LED燈的控制,同時提高了學(xué)

生的工程系統(tǒng)設(shè)計(jì)能力。LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時準(zhǔn)確、可以進(jìn)

行夜視,并且還可以擴(kuò)展出多種功能。所以,電子萬年歷無論作為比賽題目還是

練習(xí)題目都是很有價值。通過此次單片機(jī)系統(tǒng)綜合訓(xùn)練,不僅要讓學(xué)生認(rèn)識了解

它,而且增強(qiáng)學(xué)生學(xué)科積極性。

2.2任務(wù)要求

要求設(shè)計(jì)的電腦時鐘完成以下功能:

i.基本功能

①實(shí)時顯示當(dāng)前時間(4位數(shù)碼管顯示,2位顯示小時,2位顯示分鐘,第2位小數(shù)點(diǎn)0.5

秒亮,0.5秒滅)。

②能用一按鍵依次切換顯示年及月日。

③能修改當(dāng)前時鐘。

④具有秒表功能,顯示秒和百分秒。

2.擴(kuò)展功能

①單片機(jī)與PC機(jī)的通訊(可選)

②可設(shè)定初值的倒計(jì)時功能(可選)③鬧鐘及報(bào)時功能(可選)。④顯示星期(可選)。

二、實(shí)訓(xùn)方案

2.1系統(tǒng)分析

根據(jù)系統(tǒng)功能要求,可將系統(tǒng)組成結(jié)構(gòu)分成四大部分:DS1302時鐘芯片讀數(shù)

據(jù)寫數(shù)據(jù)模塊,數(shù)碼管顯示模塊,按鍵設(shè)置調(diào)節(jié)時間模塊,秒表功能模塊,。硬件

電路接線圖如后圖,本系統(tǒng)采用DS1302時鐘芯片,四位數(shù)碼管顯示年月,日星期,

時分,以及秒和百分秒。其中年月日,時分秒和星期采用DS1302的數(shù)據(jù)顯示,秒

表采用單片機(jī)定時中斷實(shí)現(xiàn)。本系統(tǒng)共用到四個按鍵,且均為獨(dú)立對地按鍵,分

別用于顯示切換,修改切換,修改加一,修改減一,秒表啟動暫停和數(shù)據(jù)清零。

2.2器件選擇

選用STC89C52芯片,頻率為11.0592MHz;由于系統(tǒng)要求顯示年月日小時和

分鐘,采用四位LED數(shù)碼管顯示即可;按鍵是用來設(shè)置北京時間或鬧鐘時間或啟

動秒表等功能的,設(shè)置三個按鍵:顯示切換模式鍵(key3)、修改數(shù)據(jù)鍵(key。)、

加一鍵(keyl)、減一鍵(key2)oDS1302時鐘芯片。

常見的LED顯示具有清晰明亮的特點(diǎn)。是顯示接口也是絕大多數(shù)單片機(jī)應(yīng)用

系統(tǒng)必備的部件之一。

發(fā)光二極管組成的顯示器是單片機(jī)應(yīng)用產(chǎn)品中最常用的廉價輸出設(shè)備。它由

若干個發(fā)光二極管按一定的規(guī)律排列而成。當(dāng)某一個發(fā)光二極管導(dǎo)通時,相應(yīng)的

一個點(diǎn)或一筆畫被點(diǎn)亮,控制不同組合的二極管導(dǎo)通,就能顯出各種字符。

1.顯示器的結(jié)構(gòu)

常用的7段顯示器的結(jié)構(gòu)如圖所示,發(fā)光二極管的陽極連在一起的稱為共陽

極顯示器,陰極連在一起的成為共陰顯示器。1位顯示器由8個發(fā)光二極管組成,

其中7個發(fā)光二極管a?g控制7個筆畫的亮或暗,另一個控制一個小數(shù)點(diǎn)的亮和

暗,這種筆畫的七段顯示器能顯示的字符較少,字符的形狀有些失真,但失控簡

單,使用方便。

三、系統(tǒng)硬件設(shè)計(jì)

3.1單片機(jī)最小系統(tǒng)

單片機(jī)功能系統(tǒng)圖見附錄1,。單片機(jī)最小系統(tǒng)由STC89c51單片機(jī)、復(fù)位電

路、晶振電路組成。如圖3.1所示

Ww

10T

NL

11TW

12W3

13

W4

14

W5

15X

N*

16-

W

力O

1

STT0力2

力3

K4

1KS

kX

-

k

-

Ct

輕D

L£i£T

D

心-

p

S但

X

圖3.1單片機(jī)最小系統(tǒng)圖

3.2數(shù)碼管、獨(dú)立按鍵及DS1302時鐘芯

片電路的設(shè)計(jì)

系統(tǒng)仿真電路圖

2

?tEs-B

Motl

mA一

K)fbl)02J>CPt

DS1302與單片機(jī)連線圖

3.3其他附屬電路設(shè)計(jì)

轉(zhuǎn)

RS232串口通信及電源電路等設(shè)計(jì),如圖3.3所示

圖3.3附屬電路設(shè)計(jì)圖

四、軟件設(shè)計(jì)

4.1主程序設(shè)計(jì)

主程序采用定時器0對程序進(jìn)行掃描執(zhí)行。分別執(zhí)行

DS1302芯片初始化子程序,寫數(shù)據(jù)子程序,將最初的

值寫入芯片中,采用while循環(huán)循環(huán)執(zhí)行鍵盤掃描子程

序。

main()

(

TMOD=OxOl;〃使用模式1,16位定時器

THO=(65536-10000)/256;〃給定初值

TLO=(65536-10000)%256;

EA=1;〃總中斷打開

ETO=1;〃定時器中斷打開

TRO=1;〃定時器開關(guān)打開

Dsl302_Init();

Dsl302Write_Time();

while(1)

{

keyscan();

if(Btread=O)

{Btread=l;

Dsl302ReadTimeO;

)

display();

4.2DS1302子程序設(shè)計(jì)

此子程序分為初始化程序,讀數(shù)據(jù)程序,寫數(shù)據(jù)程序,一些數(shù)據(jù)程序?yàn)槔?

voidDs1302_Write_Byte(unsignedcharaddr,unsignedchard)

CE=O;nop();

SCLK=O;_nop_();

CE=1;_nop_();

Writel302(addr);

Writel302(d);

CE=O;_nop_();

10=1;

SCLK=1;

}分別寫入地址,再寫入數(shù)據(jù)。

4.3時間調(diào)整子程

時間調(diào)整子程序采用的是對keyl按的

次數(shù)不同來進(jìn)行對年月日時分及星期的

設(shè)置。

voidzongshi(void)圖啦愎陽歷時凝圖

(

if(!key)

(

if(btx==O)

if(!key)

btx=l;k++;}}}else{btx=O;}}k=l時,調(diào)整年份,keyl為加,key2為減

voidkeyscanOk=2時,調(diào)整月份,keyl為加,key2為減

(k=3時,調(diào)整日份,keyl為加,key2為減

display();k=4時,調(diào)整星期,keyl為加,key2為減

if(!key)

(

if(btx==O)

(

if(!key)

(

btx=l;

k++;

)

五、調(diào)試及性能分析

5.1軟件測試

電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期(陰、陽歷),時間,還有溫

度的儀器。電子成年歷功能很多,所以對于它的程序也較為復(fù)雜,所以在編寫程序

和調(diào)試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步

的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:

1.燒入程序后,LED數(shù)碼管顯示閃動,而且亮度不均勻。

解決:首先對調(diào)用的延時進(jìn)行逐漸修改,可以解決顯示閃動問題。其次,由

于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,

但是調(diào)用的顯示程序時,如果不在反回時屏蔽掉最后的附值,則會出現(xiàn)很亮的現(xiàn)

象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。

2.修改時間、日期時沒有農(nóng)歷沒有自動對應(yīng)上。

解決:把不相關(guān)的程序暫時屏蔽,地農(nóng)歷的子程序獨(dú)立調(diào)試,發(fā)現(xiàn)在調(diào)用農(nóng)

歷自動更新時,對十進(jìn)制和十六進(jìn)制處理不好,所以會造成錯亂。最后把相應(yīng)的

十進(jìn)制進(jìn)行修改,使得可以與十六進(jìn)制對應(yīng),最后解決了此問題.

5.2測試結(jié)果分析與結(jié)論

(1).在測試中遇到發(fā)光二極管、LED數(shù)碼管為不顯示時,首先使用試測儀

對電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞.

(2).LED數(shù)碼管顯示不正常,還有亮度不夠,首先使用試測儀對電路進(jìn)行

測試,觀察電路是否存在短路現(xiàn)象。查看燒寫的程序是否正確無誤,對程序進(jìn)行認(rèn)

真修改。

(3).DS1302與微處理器進(jìn)行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命

令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,

即寫保護(hù);D6=0,指定時鐘數(shù)據(jù),D6=l,指定RAM數(shù)據(jù);D5-D1指定輸入或輸

出的特定寄存器;最低位LSB(DO)為邏輯0,指定寫操作(輸入),D0=l,指定讀

操作(輸出)。

在DS1302的時鐘日歷或RAM進(jìn)行數(shù)據(jù)傳送時,DS1302必須首先發(fā)送命令字

節(jié)。若進(jìn)行單字節(jié)傳送,8位命令字節(jié)傳送結(jié)束之后,在下2個SCLK周期的上

升沿輸入數(shù)據(jù)字節(jié),或在下8個SCLK周期的下降沿輸出數(shù)據(jù)字節(jié)。

DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每

個單元組態(tài)為一個8位的字節(jié),其命令控制字為COH?FDH,其中奇數(shù)為讀操作,

偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,在此方式下可一次性讀、寫

所有的RAM的31個字節(jié)。

要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F以上)。雖

然DS1302在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最

好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6V充電電池。如果斷電時間

較短(兒小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100UF就

可以保證1小時的正常走時。DS1302在第一次加電后,必須進(jìn)行初始化操作。

初始化后就可以按正常方法調(diào)整時間。

5.3測試結(jié)論

經(jīng)過多次的反復(fù)測試與分析,可以對電路的原理及功能更加熟悉,同時提高了

設(shè)計(jì)能力與及對電路的分析能力.同時在軟件的編程方面得到更到的提高,對編程

能力得到加強(qiáng).同時對所學(xué)的知識得到很大的提高與鞏固

六、心得體會

從大一開始接觸單片機(jī),簡單運(yùn)用單片機(jī),我初步認(rèn)識了單片機(jī)。再經(jīng)過這

兩周的單片機(jī)的專門學(xué)習(xí),我對單片機(jī)有了進(jìn)一步的學(xué)習(xí)和認(rèn)識,加深了我對單

片機(jī)理論知識的理解,提升了我個人理論結(jié)合實(shí)際的實(shí)踐能力。從簡單的單片機(jī)

設(shè)計(jì)開始,一步一步的增加難度。剛開始設(shè)計(jì)時,老師給我們的任務(wù)很簡單,可

以輕松完成任務(wù)完成。電腦時鐘的設(shè)計(jì),是在秒表的基礎(chǔ)上慢慢的添加一個又一

個的功能,然后一個一個的調(diào)試。在調(diào)試的過程中我們遇到了很多的問題,我們

編出來的程序不是一下子就能實(shí)現(xiàn)我們想要的功能的,要經(jīng)過不斷的修改、調(diào)試,

實(shí)現(xiàn)我們想要的功能。程序設(shè)計(jì)中,定時器的應(yīng)用相當(dāng)廣泛,它與中斷函數(shù)構(gòu)成

了基本的計(jì)數(shù)環(huán)節(jié),中斷為定時提供了條件,函數(shù)每5nls便進(jìn)入中斷函數(shù)一次,

并執(zhí)行相應(yīng)的操作與計(jì)數(shù)。條件語句為數(shù)碼管的功能顯示提供了條件。我們還進(jìn)

一步優(yōu)化設(shè)計(jì),比如整點(diǎn)報(bào)時設(shè)計(jì)對應(yīng)點(diǎn)數(shù)報(bào)時,鬧鐘用音樂播放形式與整點(diǎn)報(bào)

時區(qū)分開來,鬧鐘及整點(diǎn)(半點(diǎn))可設(shè)是否開啟等。

總之,通過本次單片機(jī)系統(tǒng)綜合訓(xùn)練,我對單片機(jī)的基礎(chǔ)知識及基本的應(yīng)用

技術(shù)有了深刻的了解,提升了個人理論到實(shí)踐的運(yùn)用能力。進(jìn)一步為后續(xù)學(xué)習(xí)及

工作有打下堅(jiān)實(shí)基礎(chǔ)。

參考文獻(xiàn)

S2ZSSX3C僵K當(dāng)他

玉?…一一二

不|叩陣降陽

W

31二13121

口凡□凡

害物

附錄二

#include<reg51.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineWriteProtect0x8e〃寫保護(hù)

#defineOutPutPO〃顯示輸出

//sbitDU=P2-6;〃數(shù)碼管段選

//sbitWE=P2八7;〃數(shù)碼管位選

sbitCE=P3'3;〃復(fù)位端口定義在P0.2引腳

sbitI0=P2-4;〃數(shù)據(jù)輸出端定義在P0.4引腳

sbitSCLK=P3^2;〃時鐘輸出端口定義在P0.3引腳

sbitkey=P34;〃時間調(diào)節(jié)控制鍵

sbitkeyl=P3"5;〃每按一次位加一

sbitkey2=P36;〃每按一次位減一

sbitkey3=P37;〃顯示切換

ucharcodeWei[]={Oxfe,Oxfd,Oxfb,0xf7,Oxfd);//位選數(shù)據(jù)Oxef,Oxdf,Oxbf,0x7f

ucharcodeDuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f);//0—9共

陰代碼

codeucharWaddr[]={0x8c,0x88,0x86,0x84,0x82,0x80,0x8a};〃寄存器寫地址

codeucharRaddr[]={0x8d,0x89,0x87,0x85,0x83,0x81,0x8b};//寄存器讀地址

uchartimeset[]={0x01,0x02,0x03,0x04,0x05,0x00,0x01);/*設(shè)置初始時間*/

uchartime_buf[7];/*存讀到的時間*/

uchartime_disp[7];

uchardispdat[5];/*存儲顯示值的*/

ucharBtdis=O,k=0,z;bitbtx,btxl,btx2,btx3,btl,bt2,bt3;bitBtread;

uintflagl;

/二二二二二二二二二二二二=二二二K二二二二二二二二二二二二77H二二二二K二二二二:二二二':二二二

函數(shù)功能:延時n毫秒

入口參數(shù):n

===============================================*/

voidWritel302(uchardat);

voiddelaynms(ucharn)

(

uchari,j;

for(i=n;i>0;i-)

for(j=125;j>0;j—);

)

/*=======================================

函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)

入口參數(shù):Cmd,存儲命令字;dat,存儲待寫的數(shù)據(jù)

voidDs1302_Write_Byte(unsignedcharaddr,unsignedchard)

(

CE=0;_nop_();

SCLK=0;nop();

CE=l;_nop_();

Writel302(addr);

Writel302(d);

CE=0;_nop_();

10=1;

SCLK=1;

)

〃從DS1302讀出一字節(jié)數(shù)據(jù)

ucharDs1302_Read_Byte(unsignedcharaddr)

(

unsignedchari;

unsignedchartemp;

CE=1;

addr=addr|0x01;

for(i=0;i<8;i++)

{if(addr&0x01)

{10=1;}

else

{10=0;}

SCLK=1;

SCLK=O;

addr=addr>>1;

)

〃輸出數(shù)據(jù):temp

for(i=0;i<8;i++)

{temp=temp?1;

if(10)

{temp|=0x80;}

else

{temp&=0x7F;}

SCLK=1;

SCLK=0;

)

CE=0;〃停止DS1302總線

returntemp;

)

/*====—===================

函數(shù)功能:向1302日歷時鐘芯片寫入一個字節(jié)的數(shù)據(jù)

入口參數(shù):dat

=========—=============*/

voidWritel302(uchardat)

(

uchari;

//SCLK=0;

CE=1;

for(i=0;i<8;i++)

{

I0=dat&0x01;

SCLK=0;

SCLK=1;

dat=dat?l;

)

)

/*===========—=============

函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)的數(shù)據(jù)

入口參數(shù):Cmd

返回參數(shù):dat

==—=—=================*/

ucharReadset1302(ucharCmd)

(

uchardat;

CE=0;

SCLK=0;

CE=1;

Write1302(Cmd);

SCLK=1;

CE=0;

returndat;

}

voidbcdpro(void)

(

unsignedchari,tmp;

for(i=0;i<7;i++)//BCD處理

(

tmp=timeset[i]/10;//timeset[]={0x01,0x02,0x03,0x04,0x05,0x06,0x01}

time_buf[i]=timeset[i]%10;//time_buf[7]

time_buf[i]=time_buf[i]+tmp*16;

)

)

/*================================================

向DS1302寫入時鐘數(shù)據(jù)

voidDs1302WriteTime(void)

{unsignedinti;

ucharflag;

flag=Readset1302(0x81);

if(flag&0x80)〃判斷時鐘芯片是否停止,為1時時鐘停止

(〃掉電保存

bcdpro();

for(i=0;i<7;i++)

{Dsl302WriteByte(Waddr[i],timebuf[i]);}

Dsl302_Write_Byte(0x8e,0x80);//打開寫保護(hù)

}

}

/*==============================================

從DS1302讀出時鐘數(shù)據(jù)

================================================*/

voidDsl302_Read_Time(void)

{

unsignedchari,tmp;

for(i=0;i<7;i++)

{time_buf[i]=Ds1302_Read_Byte(Raddr[i]);}

for(i=0;i<7;i++)〃BCD處理

(

tmp=time_buf[i]/16;

time_buf[i]=time_buf

time_disp[i]=time_buf[i]+tmp*10;}

)

/*==============================================

DS1302初始化

=================================================*/

voidDsl302_Init(void)

(

CE=0;//RST腳置低

SCLK=0;〃SCK腳置低

Dsl302_Write_Byte(0x80,0x00);

}

==函數(shù)名:時分秒顯示子程序

==函數(shù)功能:將從DS1302讀到的數(shù)據(jù)在8位共陰數(shù)碼管上顯示

==返回參數(shù):

==================================================*/

voiddisplay()

uchari;

if(Btdis=O)

{if(bt2==0)

{dispdat[0]=Duan[timedisp[3]/10];〃時

dispdat[1]=Duan[time_disp[3]%10];}

else

{dispdat[0]=0x00;

dispdat[1]=0x00;

)

//dispdat[2]=0x40;"

if(bt3=0)

(

dispdat[2]=Duan[time_disp[4]/10];〃分

dispdat[3]=Duan[timedisp[4]%10];

)

else

(

dispdat[2]=0x00;

dispdat[3]=0x00;

)

//dispdat[5]=0x40;

if(flagl<25)

dispdat[4]=0x80;

else

dispdat[4]=0x00;

)

if(Btdis==3)

dispdat[0]=Duan[time_disp[5]/10];〃秒

dispdat[1]=Duan[time_disp[5]%10];

dispdat[2]=0x40;

dispdat[3]=0x40;

)

if(Btdis==l)

{if(btl==O)

(

dispdat[0]=Duan[time_disp[0]/10];〃年

dispdat[1]=Duan[time_disp[0]%10];

)

else

dispdat[O]=OxOO;

dispdat[l]=OxOO;

)

//dispdat[2]=0x40;〃〃-〃

if(bt2==0)

(

dispdat[2]=Duan[timedisp[l]/10];〃月

dispdat[3]=Duan[time_disp[l]%10];

)

else

(

dispdat[2]=0x00;

dispdat[3]=0x00;

)

dispdat[4]=0x00;

)

if(Btdis==2)

(

//dispdat[0]=0x40;

if(btl==0)

(

dispdat[3]=Duan[time_disp[6]%10];〃周

)

else

{

dispdat[3]=0x00;

)

dispdat[2]=0x40;

if(bt3==0)

(

dispdat[0]=Duan[time_disp[2]/10];〃日

dispdat[l]=Duan[time_disp[2]%10];

}

else

(

dispdat[0]=0x00;

dispdat[1]=0x00;

)

if(dispdat[3]==7)

dispdat[3]=0x7f;

)

)

if(Btdis==4)

for(i=0;i<5;i++)

(

OutPut=dispdat[i];

Pl=Wei[i];

delaynms(1);

OutPut=OxOO;

/*==二=二二二二==二==================二==二=======

二二函數(shù)名:按鍵

二二函數(shù)功能:顯示模式,調(diào)時模式

二返回參數(shù):

==================================================*/

voidzongshi(void)

(

if(!key)

(

if(btx==0)

(

if(!key)

(

btx=l;

k++;

)

else

{btx=0;}

)

voidkeyscan()

display();

if(!key)

(

if(btx==O)

(

if(!key)

(

btx=l;

k++;

}

}

/*================================================

k=l時,調(diào)整年份,keyl為加,key2為減

=================================================*/

while(k=l)

(

Btdis=l;

display();

zongshi();

if(!keyl)

(

if(btxl==0)

(

if(Ikeyl)

(

btxl=l;

if(time_disp[0]<99)

(

time_disp[0]++;

)

else

{time_disp[0]=0;}

)

)

}

else

{btxl=0;}

if(!key2)

(

if(btx2==0)

(

if(!key2)

(

btx2=l;

if(time_disp[O]>0)

{time_disp[O]--;}

else

{timedisp[0]=99;}

}

)

)

else

{btx2=0;}

k=2時,調(diào)整月份,keyl為加,key2為減

=================================================*/

while(k=2)

(

Btdis=l;

display();

zongshi();

if(!keyl)

{if(btxl==0)

(

if(!keyl)

{btxl=l;

if(time_disp[l]<12)

(

time_disp[l]++;

if(time_disp[l]==2)

{if(time_disp[03%4==0)

(

if(time_disp[2]>29)

{time_disp[2]=29;}

}elseif(time_disp[2]>28)

{time_disp[2]=28;}

else

{time_disp[l]=l;}

)

}else

btxl=0;}

if(!key2)

if(btx2=0)

{if(!key2)

(

btx2=l;

if(time_disp[l]>1)

(

time_disp[l]--;

if(timedisp[l]==2)

{if(time_disp[0]%4==0)

(

if(time_disp[2]>29)

{timedisp[2]=29;}

}elseif(time_disp[2]>28)

{time_disp[2]=28;}

)

}else

time_disp[l]=12;

)

}

}else

{btx2=0;}

/*=================================================

k=3時,調(diào)整天,keyl為加,key2為減

==================================================*/

while(k=3)

(

Btdis=2;

display();

zongshi();

if(!keyl)

(

if(btxl=0)

(

if(!keyl)

(

btxl=l;

if(time_disp[l]==2)

(

if(time_disp[0]%4==0)

(

if(time_disp[2]<29)

{time_disp[2]++;}

else

{timedisp[2]=l;}

)

elseif(timedisp[2]<28)

(

timedisp[2]++;

}

else

time_disp[2]=l;

)

elseif(time_disp[l]<8)

(

if(time_disp[l]%2==0)〃小于8月的月份除以2的余數(shù)為0則為小月

(

if(time_disp[2]<30)

{timedisp[2]++;}

else

{time_disp[2]=l;}

)

elseif(time_disp[l]%2=l)//小于8月的月份除以2的余數(shù)為1則為大月

(

if(time_disp[2]<31)

{time_disp[2]++;}

else

{time_disp[2]=l;}

)

}

elseif(time_disp[l]>7)

(

if(time_disp[1]%2==0)

(

if(time_disp[2]<31)

(

time_disp[2]++;

)

else

{time_disp[2]=l;}

}

elseif(time_disp[l]%2==l)

(

if(time_disp[2]<30)

{time_disp[2]++;)

else

{time_disp[2]=l;}

}

)

)

)

)

else

{btxl=O;}

if(!key2)

{if(btx2==0)

(

if(!key2)

{btx2=l;

if(time_disp[l]==2)

{if(timedisp[0]%4==0)

{if(time_disp[2]>l)

{time_disp[2]一;}

else

{time_disp[2]=29;}

)

elseif(timedisp[2]>l)

{time_disp[2]一;}

else

{time_disp[2]=28;}

)

elseif(time_disp[l]<8)

{if(time_disp[1]%2==0)

{if(time_disp[2]>l)

{time_disp[2]一;}

else

{time_disp[2]=30;}

}

elseif(time_disp[1]%2=1)

(

if(time_disp[2]>l)

{time_disp[2]一;}

else

{time_disp[2]=31;}

)

}elseif(time_disp[l]>7)

{if(time_disp[l]%2==0)

{if(time_disp[2]>l)

{time_disp[2]一;

}else

{time_disp[2]=31;}

}elseif(time_disp[l]%2==l)

{if(timedisp[2]>l)

{time_disp[2]一;

}else

{time_disp[2]=30;}

)

)

)

)

}else

{btx2=0;}

)

/*========================================:========

k=4時,調(diào)整星期,keyl為加,key2為減

while(k=4)

(

Btdis=2;

display();

zongshi();

if(!keyl)

(

if(btxl==0)

(

if(!keyl)

(

btxl=l;

if(time_disp[6]<=6)

{time_disp[6]++;

}else

{time_disp[6]=l;}

)

)

}else

{btxl=0;}

if(!key2)

{if(btx2==0)

{if(!key2)

{btx2=l;

if(time_disp[6]>l)

{-time_disp[6];}

else

{time_disp[6]=7;}

)

)

)

else

{btx2=0;}

)

k=5時,調(diào)整小時,keyl為加,key2為減

while(k=5)

(

Btdis=O;

display();

zongshi();

if(!keyl)

{if(btxl==0)

{if(!keyl)

{btxl=l;

if(timedisp[3]<23)

{time_disp[3]++;}

else

{time_disp[3]=0;}

}

)

)

else

{btxl=0;}

if(!key2)

{if(btx2==0)

{if(!key2)

{btx2=l;

if(time_disp[3]>0)

{time_disp[3]一;)

else

{time_disp[3]=23;}

)

}

)

else

{btx2=0;}

)

/*二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二

k=6時,調(diào)整分鐘,keyl為加,key2為減

=========—============*/

while(k-6)

(

Btdis=O;

display();

zongshi();

if(!keyl)

{if(btxl==0)

{if(!keyl)

{btxl=l;

if(timedisp[4]<59)

{time_disp[4]++;}

el

溫馨提示

  • 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

提交評論