C語言完成電子鐘的設(shè)計_第1頁
C語言完成電子鐘的設(shè)計_第2頁
C語言完成電子鐘的設(shè)計_第3頁
C語言完成電子鐘的設(shè)計_第4頁
免費預(yù)覽已結(jié)束,剩余67頁可下載查看

下載本文檔

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

文檔簡介

成績課程設(shè)計說明書課程設(shè)計名稱: 專業(yè)軟件應(yīng)用綜合設(shè)計題目:.C語言完成電子鐘的設(shè)計學(xué)院:.電氣與電子信息學(xué)院C語言完成電子鐘的設(shè)計摘要:所謂數(shù)字鐘,是指利用電子電路構(gòu)成的計時器。相對機械鐘而言,數(shù)字鐘能達(dá)到準(zhǔn)確計時,并顯示小時、分、秒,同時能對該鐘進行校對。在此基礎(chǔ)上,還能夠?qū)崿F(xiàn)整點報時,定時報鬧等功能。設(shè)計過程采用系統(tǒng)設(shè)計的方法,先分析任務(wù),得到系統(tǒng)要求,然后進行總體設(shè)計,劃分子系統(tǒng),然后進行詳細(xì)設(shè)計,最后進行測試。本文針對簡易數(shù)字鐘的設(shè)計要求,提出設(shè)計方案,進行由上而下層次化的設(shè)計,先定義和規(guī)定各個模塊的結(jié)構(gòu),再對模塊內(nèi)部進行詳細(xì)設(shè)計,選擇較合適的開發(fā)環(huán)境進行設(shè)計,最后將設(shè)計好的模塊組合調(diào)試,并最終在單片機開發(fā)測試儀上測試通過。關(guān)犍詞:數(shù)字電子鐘校時報時子系統(tǒng)Abstract:Theso-calleddigitalclock,usingthetimerreferstoanelectroniccircuit.Relativemechanicalclock,thedigitalclockcanachieveaccuratetiming,anddisplaysthehours,minutes,seconds,whilethebellproofread.Onthisbasis,wecanbringthewholepointoftime,givenTimesalarmfunctions.Designprocessusingmethodsofsystemdesign,thefirstanalysisofthetask,getthesystemrequirements,andthencarryouttheoveralldesign,dividingsubsystems,andthedetaileddesignofeachfunctionalsubsystemdeterminestheinternalcircuit,thefinaltest.Inthispaper,asimpledigitalclockdesignrequirements,weproposetwooveralldesign,intheadvantagesanddisadvantagesofthetwoprograms,chooseaprograminwhichthepreferred,andbeatop-downhierarchicaldesign,defineandregulationsstructureofeachmodule,andthentheinternalmoduledetaileddesign.Timeandaccordingtothedetaileddesignofthechipcanbeusedtoanalyzeeachchipissuitableforthisdesign,chooseamoresuitablechipdesign,thefinalcompositionwillbedesignedmoduledebugging,andeventuallythroughsimulationatprotues.Keywords:Digitalelectronicclock,timechecking,timereporting,subsystem目錄TOC\o"1-5"\h\z樣式:目錄ー級標(biāo)題) 1\o"CurrentDocument"2總體方案設(shè)計2 22.1方案比較(怦式:目錄二級標(biāo)即2 22.1.1方案一(樣式:目錄ニ級標(biāo)題)2 2(提示:目錄可以自動生成,不必手動輸入。插入目錄的方法:插入引用ー》索引和目錄ー)目錄ー〉設(shè)置目錄樣式)1前言由于現(xiàn)代社會的數(shù)字電子技術(shù)高速發(fā)展,電子鐘應(yīng)運而生,又由于電子技術(shù)的不斷改進,采用中規(guī)模的邏輯器件可以使電子鐘的體積變得很少,實用更加方便,應(yīng)用更加廣泛。設(shè)計背景隨著經(jīng)濟的飛速發(fā)展,人們對于時間的概念越來越深,數(shù)字鐘恰好貼合了人們的需求。設(shè)計目標(biāo)顯示日期、時間、實時溫度,帶鬧鐘和整點報時功能,采用24小時制計時,能區(qū)分平閏年,大小月。有校時功能,可在單片機上對日期、時間、鬧鐘時間進行修改,修改時秒鐘暫停計時對應(yīng)的位置會閃爍,并且區(qū)分平閏年、大小月。整點報時和鬧鐘可以用相應(yīng)按鍵進行開關(guān)。3實施計劃設(shè)計過程采用系統(tǒng)設(shè)計的方法,先分析任務(wù),得到系統(tǒng)要求,然后進行總體設(shè)計,劃分子系統(tǒng),然后進行詳細(xì)設(shè)計,最后進行代碼編寫和測試。1.4必備條件單片機基本知識,電路基本知識,C51編程技術(shù),Keil軟件。2總體方案設(shè)計通過查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實際知識,我們設(shè)計了一種技術(shù)方案來實現(xiàn)系統(tǒng)功能:因為有校時功能,所以不能直接獲取數(shù)據(jù)然后直接顯示,我們用ー個二維數(shù)組存放日期、時間、溫度、鬧鐘數(shù)據(jù),用ー個ー維數(shù)組存放段碼,ー個數(shù)組存放位碼。后期要修改直接對數(shù)組進行修改。溫度適時讀數(shù),不能修改。圖小:単兀模塊設(shè)計本節(jié)主要介紹系統(tǒng)各單元模塊的工作原理、以及各個單元模塊之間的聯(lián)接關(guān)系;同時本節(jié)也會對相關(guān)代碼進行必要說明。各單元模塊功能介紹及電路設(shè)計本系統(tǒng)主要分為四個單元模塊,它們分別是:日期、時間、溫度模塊、鬧鐘模塊、時間修改模塊。各單元模塊功能具體說明如下。日期模塊日期儲存在數(shù)組DIG_DATE[〇][0]-DIG_DATE[O][7]〃230.59分59廿后漕等,日期:DIG_DATE(1)【1]“0;DXG^DATtll)(0]-0:alert〇:wDXG_DATt(O]17):ye?r-DIG_DJLTE(0)[0]■10004DIG_DKTE10](1]?1004DXG_DXTZ(0)(2)a10*DIG_CATE(O](3)-10:if(DIG01—1966DXGDATEIO)[6]-24(DIGDKTE[0][5]-12“DIGDKTE(O](4)-04?yeaz?4'?0) 冃斷非國年2月26日(ーーーーDIG一DATE【0]【6]。0:DIG^DATtlO]PJ-11:*?DIG_DATt(O)[5]:elseif(DIG_DATt(O!ロ]-20,6DXG_DATE(0)(<)?2(60IG_DHTE(0)(5)-12HDIG_DATt[0](4)-0?4ye?r?4--0)「劃斷二年2月I9日(DXG_DATt(O)(?)?0:DXG二am(?H,)44DIGDKTE(OJ(5):!一elseif(DIQ_DXTE[O]P]?-ll?tDIG_DJLTE[O](€]?-3(?DIG_D]kTZ(0)[5)!"11??DIG_DKTE[0][5]!"13??DIG_DATE[0](S)"■15tkDIG_DATZ[0](5]!?17?tDXG_DATE(0]{5)?■18S?DIG_DATE(0)[5]!?20?.DXG_DATI{0][6]=0:DIG^DATtlO]P)?ll:??DXGD&Tt(O)(S):>elseIf<DXG_DATE(O]P)-12“DXGDATEI0]|4]-3)/,到斷月ナ.幷且不是2月傍(--DIG_DATE(O)(C]?0:DIG二DATE[0]P]1:?-*DIG_DJlTE(O)[5]:?1Mif<Dia_DATt[O](7)-20) 〃正常濡】。海。加】EDXG_DATX(O)(7)-10:wDXGDATE(O)(C):if(DIGDHTE(O](S)-13((DIG_DATE[0]|4j—1)<-一DIG_DATE(O](S)?ll;DIG^DATEIO)(4)-0:??DiG_DATE(01[3]:1£(DIG_D*TE[3)[3J-20)DIG_£ATE[G](7)-10;[6):)一if<DIG_DATE(O)(5)-13“DXGDATE(0)[4)—“<一ーDXG_DATt(O)(S)-ll:DIG-DATE(O)[4)-0;(3);lf|DIG_nATE[J)|3J-20><DXGtun(0)(3)-10;??DXG_DATE【〇)(2):tfJDXG_DATE[O)[2)—10)iDIG_DATt[O)[2)-0:??OTG_D*Tt[O][1):if(DIG_DATE[OJ[1)—10)tDIG_DATt[OJ(l]"0:??DIG_DATT[O][0]:it(DIG_DATE[O)(OJ-IO)I"DIG_DATt[O](0]"0: 〃む姑9999-12-3123:59:59后時:司空為0000-01-0100:00:00elseIf(DIGDATE[O][5]"20)IDIG_DATE(O][S]"10;??DIG_DJLTE[O][4];代碼如上,當(dāng)時間為23:59:59時后一秒觸發(fā)。判斷當(dāng)前年份和月份進行時間修改

時間模塊 時間儲存在數(shù)組DIG_DATEロ][0]-DIG_DATE[1][7J〇if(Time_councer>-20) 〃定時器計數(shù)20次,即間隔1秒開始(Timecounter?0:++DIG_DATE[1][7];alert〇:if(DIG_DATEfl](7]=10>(DIG_DATE[1][7]-0;+4DIG_DATE[1][6];alert();if(DIG_DATE[1][6J-6)(一DIG_DATE[1][6]-0;++DIG_DATE[1][4];alert();if(DIG_DATE[1][4]-10)<.DIG__DATE[1](4]=0;++DIG_DATE[1][3];alert();if(DIG_DATE[1J[3]??6)DIG_DATE[1][3]-0;?4DIG_DATE[1][1);alert();Beepchange=1;if(DIG_DATE(1][1]-44&DIG_DATE[1][0)—2) 〃23點59分59秒后清室,日期+1(——DIG_DATE[1][1)-0;DIG2DATEtl](0]=0;代碼如上,當(dāng)計時器計數(shù)20次或20次以上時觸發(fā)。首先是秒鐘修改,當(dāng)影響到分鐘時鐘時進行對應(yīng)的修改。溫度模塊溫度數(shù)據(jù)儲存在DIG_DATE[2][0]-DIG_DATE[2][7]EA-1; //CFU所有中斷開(IE最を位MSB)ETO?1: 〃開啟定時器。中斷TRO-1: 〃啟動星時器。Beep-0; 〃先關(guān)閉while(l)〃如果開啟整點報時if(display_group-2)getWeacher(Dal8b2OReadTeiEp()〃如果開啟整點報時if((Alert_swicch&&Alert_change)11(Beep_3wicch&&Beep_change)){一一一ーa:p*nu9ictab[x];if(p-0X00) 〃如果碰到結(jié)束符,結(jié)束音樂{p=o;x-0;Beep_change-0;當(dāng)按下切換顯示按鈕切換到溫度時,開啟獲取溫度的函數(shù),然后獲取數(shù)據(jù)。獲取溫度的函數(shù)封裝在temp,c里面,會在打印在附錄中。:getWeather(intterop):計算讀取到的溫度并存儲到數(shù)組:terop:無voidgetWeather(inttemp)(floattp;if(terap<0) 〃當(dāng)溫度值為負(fù)數(shù)(DIGDATE[2](0]?20;〃鹵為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼terop=cerop-l;terop-~temp;tp?terop;temp=tp*0.0625*100+0.5;〃盲兩個小數(shù)點就,1。0,+0.5是四舍五入-名能入出い”數(shù)數(shù)ハ:函函輸輸ーDIGDATE[2][0]=22;3=彘岬;〃因為數(shù)據(jù)處理有小數(shù)點所以將溫度賦給ー 2變量〃如果溫度是正的那么,那么正數(shù)的原碼就是補碼它本身terop=tp*0.0625*100+0.5;〃留兩個小數(shù)點就,100,+0.5是四舍五入10000/1000;1000/100+10;100/10;10;10000/1000;1000/100+10;100/10;10;DIG_DATE[2][2]-temp%DIG二DATE[2][3]=terop%DIG二DATE[2]"]=temp%DIG二DATE[2][5]-terop%DIG二DATE[2][6]-23;DエG_DATE[2][7J-24;)溫度計算函數(shù),將獲取到的溫度存放在數(shù)組中,然后顯示。鬧鐘模塊鬧鐘數(shù)據(jù)儲存在DIG_DATE[3][0]-DIG_DATE[3][7J〇/癡******************************************************************************?函數(shù)名 :alert?函數(shù)功能 :鬧鐘判斷?癡******************************************************************************/voidalert()(int〇;if(Alertswitch&&!Alert_change) 〃鬧鐘判斷(for(ow0;o<8;o++)(if(om2IIom5)continue;if(DIG_DATE[1][o]!?DIG_DATE[3][o]){Alertchanges0;break;)Alert_change*l;鬧鐘判斷函數(shù)如上,調(diào)用方式如下:〃定時器計敷2。次,即間展!秒開始TXa>e_counter-0;??DIGDATE(1](7]; _alert!);if(DIG_DATZll]廣]一:0)DIG_DATE[1][7]-0;?+DIG_DfcTE[1]alert();If(DIG_DATE(1][6]-6)DIG_DATEい]【6]=〇:++DIG_DATE[1]alert()IC(DIG_DATE[1][4]~10)DIG_DATE[1][4J?0;?*DIG_DATE[1H3];ーalertネif(DIG_DATE[1][3]—6)DIG_DATE[1][3J-O;??DIG_alert]〃23點〃23點59分59秒后清零.日期7If(DIG_DATE[1][1]-444DIG_DATE[1][0]一2)DIG_DATE[1J[1J-0;DIG2DATE[:)【〇]ー。.alexc();?+DIG_DATE[O][7];當(dāng)有時間變動時觸發(fā),用for循環(huán)從數(shù)組DIG_DATE[3][0]到DIG_DATE[3][7]判斷,如果時間相同,則自動打開蜂鳴器開關(guān),蜂鳴器啟動,達(dá)到鬧鐘功能。2特殊功能設(shè)計本系統(tǒng)中主要使用了如下兩個特殊功能:蜂鳴器播放音樂,修改模式數(shù)字閃爍,鍵盤。2.1蜂鳴器播放音樂通常蜂鳴器只有0,1即響和不響狀態(tài),所以功能低端的時鐘啟動蜂鳴器是一般只會發(fā)出“滴”的聲音,我們的設(shè)計通過控制蜂鳴器的頻率和節(jié)拍實現(xiàn)了播放音樂,讓提示音樂更人性化,用戶體驗更好。實現(xiàn)代碼如下:unsignedcharn?0;unsignedcharcodemusiccab[]〃n為節(jié)unsignedcharn?0;unsignedcharcodemusiccab[]〃n為節(jié)拍常數(shù)變量0X18r0x30,0x20,0x40,0x18,0x10,OxlC,0x10,OxlC,0x20,OxlC,0x20,0x20,0x80,0x30,OxlC,0x20,0x15,0x20,0x20,0x40,0x20,0x20,0x26,0x20,0x30,0x00);OxiC,0x10,OxlC,0x10,0x20,0x10,0x18,0x40,0x20,0x20,0x18,0x20,OxFFt0x20,0x10,0x18,0x20,OxlC,0x20,0x2€,0x20,Ox2B,0x20,0x20,0x80,OxFF,格式為:堂至主菜!儲存頻率++X;goto)else++X;goto)elsetab[x*?];n-?uslc_tal3[x**]/4;〃取頻生常數(shù)和節(jié)拍常數(shù)〃手動關(guān)閉音樂if((Alertswltchs(Alertchange)II(Beepswitch((Beepchange))I?:p"Busictab[x]:l£(F-0i00) 〃如果碰到結(jié)束符,結(jié)束音樂〃關(guān)閉通嗎器//若碰到休止符,延時】。0ns,就續(xù)取下一音苻蜂鳴器執(zhí)行代碼,觸發(fā)條件是到整點或者鬧鐘開啟并且到達(dá)鬧鐘時間。2.2.2修改模式數(shù)字閃爍為了提高用戶體驗,所以設(shè)計了在修改模式下,選中的數(shù)字會閃爍,這樣的話可以減少操作失誤。實現(xiàn)代碼如下:case(0xFD: 〃返回按鍵K2的數(shù)據(jù).修換顯示、修改模式if(State_changeM0t&di9play_group!a2){ーーScacechange=1;State_bit-0;for(J-0;j<4;j++)for(k-c1;k<8;k++)DIG_DATE_tnp[3J[k]-DIG_DATE(j][k]; "マ時?可在「いあ時マン:1'W存)一ー一elseif(State_change=14€display_group!=2){Statechange?0;for(3-0;j<4;J-M-)for(k-0;k<8;k++)DIG_DATE[J][k]-DIG_DATE_CBp[J][k]; 〃將時間從臨時數(shù)組中取出}一ーbreak:首先通過按鍵觸發(fā)修改模式,State_change變?yōu)?;break;GPエ。ーPLACE-DIG_PLACE[i); 〃發(fā)送位選ir(scate__dhange廣(一if(i?-State_blt4&Time_counter<010) 〃閃爍效果{——GPIO_DIG-OxOO;)一else(GPIO_DIG=DIG_CODE[DIG_DATE_tnqp[display_group][i]]; 〃發(fā)送日期或時間天氣段碼elseGPIO_DIG?DIG_CODE[DIG_DATE[display__group][1]]; 〃發(fā)送日期或時間天氣段四if(display_group~244!State_change)k-110;elsek=250;while(k-): 〃増加延時,減小運行頻主,増加數(shù)碼皆亮度GPIO_DIG-0x00; 〃消隱

把一秒分為兩部分,當(dāng)時間小于0.5秒時,給數(shù)碼管賦〇值,因為數(shù)碼管是共陰極鏈接,所以賦。值不會亮,當(dāng)時間大于0.5秒時給數(shù)碼管賦正常數(shù)值,到達(dá)數(shù)字閃爍的效果。2.2.3鍵盤由于需要直接在單片機上對時間進行修改,并且實現(xiàn)開啟和關(guān)閉整點報時以及鬧鐘功能,所以鍵盤功不能缺少。**名能出**名能出J一為一:函函輸**:KeyScan():掃描鍵盤:讀取到的鍵值*********************************************************************/unsignedcharKey_Scan〇{unsignedcharkeyValue=0,1;〃保存鍵值〃ー檢測按鍵1ー〃if(GPIO_KEY!=OxFF) 〃檢測按鍵Kユ是否按下 |{DelaylOms(1);〃消除抖動if(GPIO_KEY!=OxFF) 〃再次檢測按鍵是否按下(—keyValue=GPIOKEY;is0;while((i<50)&&(GPIO_KEY!-OxFF)) 〃檢測按鍵是否松開(一DelaylOms(1);i++;)})returnkeyValue; 〃將讀取到穗值的值返回首先是鍵盤掃描,檢測是否有按健按下,如果按下了按鍵則獲取對應(yīng)的鍵值。IreyKua■Key_Scan():**itch(keyNuB,ca>e(OxFt)IreyKua■Key_Scan():**itch(keyNuB,ca>e(OxFt): 〃送◎技鍍べ的數(shù)揖.切投顯示澳式++<ii9playgroup;It(Stace_change“displaygroupM2)??display_group;it(display_group>3)di>play_grous:"0;break;C“o(cxm: 〃遐囿技づK2的數(shù)褶.換顯示、修改模式if(Stace_ciiange-C4sdisplay_grouplw2)(一Statechange"!;State_bit?O;tor(J-0;J<4;5+?)for(lt?O;lt<8;k++)DIG_IULTE_uaF[]][ltJ?DIG_DATE[3)(k);)ーーーelseit(Statechange**1S(dlsplaygroup92)<--Stat?_ch*nge-0;for(3*0;j<4;34.+)tor(k-O;k<8;k+*)DIG_D2lTE(]][k]-DIG_DATE_t?p[3][k];>ーーーbreak;ca>?(:xra): 〃退回技國K3的數(shù)維.內(nèi)塚位登左尊it(Scate_change)("-Stateblc;if(display_groupt(Stace_bicww2)Scate_bical;if(display_gsoup((State_bit**5)State_bit*4;if(3tate_bic<0)Scate_bltM0;c“e(二x「): 〃返回技援K4的數(shù)據(jù).內(nèi)熔位置も移it(State_change)i??Scate_bic;if(display_group“State_bit—2)State_bit-3;if?li8play_gxoup&&state_bltM5)State_blt"6;if(Stat?_bxt>7)State_bi??7;}ーーbreak;case(OxEF)! 〃返回技鍵K5的我指If(!displaygroup)〃將時間存入修時數(shù)更保存〃樗時間從臨時效殂中取出//時冋僕式左移對"--時,再向左移一位〃時間慢式左移交”--時.再向左移ー也//景左邊〃時間俁式古移堂"--時,再向右移一位〃時間壌式右移交"-時.再向も移一位〃最右邊〃日期樓式掃描鍵盤,獲取鍵值然后判斷并執(zhí)行對應(yīng)功能,具體代碼見附錄。3系統(tǒng)調(diào)試將代碼燒錄到單片機開發(fā)試驗儀,然后按照設(shè)計方案進行調(diào)試。3.1調(diào)試環(huán)境單片機開發(fā)試驗儀,Keil軟件。3.2硬件調(diào)試日期顯示時間顯不(整點報時關(guān)閉狀態(tài))時間顯示(整點報時開啟狀態(tài))溫度顯示鬧鐘時間(鬧鐘關(guān)閉狀態(tài))鬧鐘時間(鬧鐘開啟狀態(tài))修改模式4系統(tǒng)功能、指標(biāo)參數(shù)4.1系統(tǒng)能實現(xiàn)的功能顯示日期、時間、實時溫度,帶鬧鐘和整點報時功能,采用24小時制計時,能區(qū)分平閏年,大小月。有校時功能,可在單片機上對日期、時間、鬧鐘時間進行修改,修改時秒鐘暫停計時對應(yīng)的位置會閃爍,并且區(qū)分平閏年、大小月。整點報時和鬧鐘可以用相應(yīng)按鍵進行開關(guān)。4.2系統(tǒng)指標(biāo)參數(shù)測試各部分顯示正常,精確度:±1(分鐘/天)。4.3系統(tǒng)功能及指標(biāo)參數(shù)分析代碼有BUG,由于時間緊來不及修改,具體體現(xiàn)在修改模式下可以修改到3月39日,應(yīng)該是后期增加鬧鐘功能時修改了部分代碼造成的BUG。電子鐘精確度為±1(分鐘/天),精確度不高的原因有二,一是沒找到晶振的頻率,所以無法進行精確計算定時器的參數(shù),二是由于代碼較長,運行下來可能導(dǎo)致計數(shù)器記到二十多才執(zhí)行秒鐘+1,造成時間誤差。6結(jié)論該數(shù)字鐘能夠準(zhǔn)確計時,并有整點報時、實時溫度顯示等功能,能正常工作。但校時功能存在BUG〇7總結(jié)與體會經(jīng)過長達(dá)兩個星期的設(shè)計與思考,最終在Keil上完成了數(shù)字鐘的代碼編寫和調(diào)試,在單片機開發(fā)試驗儀上測試通過。其間遇到了許多問題,但最后都ーー得到解決。設(shè)計初期要考慮周到,否則后期改進很困難。應(yīng)該在初期就多思考兒個方案,進行比較論證,選擇最合適的方案動手設(shè)計??傮w設(shè)計在整個設(shè)計過程中非常重要,應(yīng)該花較多的時間在上面。方案確定后,才開始設(shè)計。設(shè)計時,多使用己學(xué)的方法,如列真值表,化簡邏輯表達(dá)式,要整體考慮,不可看一步,做ー步。在整體設(shè)計都正確后,再尋求簡化的方法。在設(shè)計某些模塊的時候無法把握住整體,這時可以先進行小部分功能的實現(xiàn),在此基礎(chǔ)上進行改進,雖然可能會多花ー些時間,但這比空想要有效的多。盡可能是代碼耦合有序,模塊之間關(guān)系清楚,既利于自己修改,也利于與別人交流。如果代碼亂的連自己都看不懂,那還如何改進和擴展。很多難點的突破都來自于與同學(xué)的交流,交流使自己獲得更多信息,開拓了思路,因此要重視與別人的交流。應(yīng)該有較好的理論基礎(chǔ),整個實驗都是在理論的指導(dǎo)下完成了,設(shè)計過程中使用了許多理論課上學(xué)的內(nèi)容,如單片機功能的調(diào)用。本次設(shè)計把理論應(yīng)用到了實踐中,同時通過設(shè)計,也加深了自己對理論知識的理解和掌握。通過這次數(shù)字鐘的設(shè)計與制作,我們了解到了設(shè)計電單片機程序與電腦程序和網(wǎng)站的差異,也讓我們了解了關(guān)于數(shù)字鐘的原理與設(shè)計理念。謝辭在楊坤明老師的指導(dǎo)以及小組成員的相互合作與幫助下,我們順利地完成了這次數(shù)字鐘的課程設(shè)計內(nèi)容,十分感激老師以及各位同學(xué)的幫助。8參考文獻[1]郭天祥.51單片機C語言教程.北京:電子工業(yè)出版社,2013附錄1:整體代碼#include<reg51.h>〃一定義使用的10ロー〃defineGPI0_DIG P0 〃段選defineGPIO_PLACE Pl 〃位選defineGPIO_KEY P2 〃獨立鍵盤用P2ロsbitBeep=P3"0J 〃蜂鳴器//一定義全局變量ー〃unsignedcharcodeDIG_PLACE[8]={xfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,Ox7f};〃位選控制査表的方法控制unsignedcharcodeDIG_C0DE[26]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,Oxbf,0x86,Oxdb,Oxcf,0xe6,Oxed,Oxfd,0x87,Oxff,Oxef,0x40,OxcO,0x73,0x63,0x39,0x00);〃〇、1、2、3、4、5、6、7、8、9、〇.、1.、2.、3.、4.、5.、6.、7.、8.、9.、ー、ー.、P、°ヽC、的顯示碼unsignedintxdataDIG_DATE[4][8]={{2,0,1,15,1,12,2,12},{2,3,20,5,9,20,5,0},{22,25,0,10,0,0,23,24},{0,0,20,0,0,20,1,0}}: 〃設(shè)置日期、時間、溫度、鬧鐘初始值,內(nèi)部內(nèi)存不夠,儲存在外部unsignedintTime_counter=0;〃定時器計數(shù)unsignedintState_change=O;〃按下修改按鈕之后的參數(shù)intState_bit=O;//按卜修改按鈕之ノ百閃爍的的位置intxdataDIG_DATE_tmp[4][8];〃修改時候的臨時存儲數(shù)據(jù)unsignedcharn=0://n為節(jié)拍常數(shù)變量unsignedcharcodemusic_tab[]={0x18,0x30,OxlC,0x10,0x20,0x40,OxlC,0x10,0x18,0x10,0x20,0x10,OxlC,0x10,0x18,0x40,OxlC,0x20,0x20,0x20,OxlC,0x20,0x18,0x20,0x20,0x80,OxFF,0x20,0x30,OxlC,0x10,0x18,0x20,0x15,0x20,OxlC,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,OxFF,0x00};〃格式為:頻率常數(shù)intBeep_switch=O;〃蜂鳴器開關(guān),手動開關(guān)intBeep_change=0;〃系統(tǒng)判斷,自動開關(guān)intAlert_switch=O;〃鬧鐘開關(guān),手動開關(guān)intAlert_change=O;〃系統(tǒng)判斷,自動開關(guān)〃一聲明全局函數(shù)ー〃voidDelaylOms(unsignedintc);〃延時10msunsignedcharKeyScan();//鍵盤掃描voiddelay(unsignedcharm);〃控制頻率延時voidgetWeather(inttemp);//計算獲取的溫度voidalert();〃鬧鐘判斷?函數(shù)名 :main?函數(shù)功能 :主函數(shù)*******/voidmain(void)unsignedchari,keyNum;unsignedcharp,m;//m為須舉冨數(shù)變量unsignedcharx=0;unsignedintk,j;unsignedintyear;〃當(dāng)前年份unsignedintdisplay_group=0;〃〇為顯示日期,1為顯示時間,2顯示溫度TMOD=OxOl;〃設(shè)置定時器〇為工作方式1(為16位定時器,MOM1為01)THO=(65535-49800)/256;〃配成_us,賦給高8位TLO=(65535-49800)%256;〃賦給低8位EA=1; //CPU所有中斷開(IE最高位MSB)ETO=1I 〃開啟定時器〇中斷TRO=1J 〃啟動定時器〇Beep=Oi 〃先關(guān)閉while(l)

if(display_group==2)getWeather(Dsl8b20ReadTemp());if((Alert_switch&&Alert_change)(Beep_switch&&Beep_change))〃如果開啟整點報時(a:p=music_tab[x];if(p==0x00)〃如果碰到結(jié)束符,結(jié)束音樂5'P=0;x=0;Beep_change=0;Alert_change=0;Beep=0;n=0;〃關(guān)閉蜂鳴器)elseif(p==0xff)//若碰到休止符,延時100ms,繼續(xù)取下一音符(++x;gotoa;)else(m=music_tab[x++];n=music_tabEx++]/4J〃取頻率常數(shù)和節(jié)拍常數(shù)手動關(guān)閉音樂else(P=0;x=0;Beep_change=O;Alert_change=O;Beep=O;n=0;)for(i=0;i<8;i++){while(n)(Beep='Beep;delay(m);〃等待節(jié)拍完成if(Time_counter>=20)〃定時器計數(shù)20次,Time_counter=0;++DIG_DATE[1][7];alert();if(DIG_DATE[l][7]==10)DIG_DATE[1][7]=0;++DIG_DATE[1][6];alert();if(DIG_DATE[1][6]==6)(DIG_DATE[1][6]=0;++DIG_DATE[1][4];alert();if(DIG_DATE[l][4]==10)]DIG_DATE[1][4]=0;++DIG_DATE[1][3];alert();if(DIG_DATE[l][3]==6)(DIG_DATE[1][3]=0;++DIG_DATE[1][1];alert();Beep_change=l;if(DIG_DATE[1][1]==4&&DIG_DATE[l]E0]==2) 〃23點59分59秒后清零,日期+1DIG_DATE[1][1]=O;DIG_DATE[1][0]=0;alert();++DIG_DATE[O][7];year=DIG_DATE[0][0]*1000+DIG_DATE[0][l]*100+DIG_DATE[0][2]*10+DIG_DATE[0][3]-10;if(DIG_DATE[0][7]==19&&DIG_DATE[0][6]=2&&DIG_DATE[0][5]==12&&DIG_DATE[0][4]==0&&year%4!=0)〃判斷非閏年2月28日DIG_DATE[0][6]=〇;DIG_DATE[〇][7]=11;++DIG_DATE[O][5];elseif(DIG_DATE[O][7]==20&&DIG_DATE[0][6]==2&&DIG_DATE[0][5]==12&&DIG_DATE[0][4]==0&&year%4==0)〃判斷閏年2月29日DIG_DATE[〇][6]二〇;DIG_DATE[O][7]=11;++DIG_DATE[O][5];Jelseif(DIG_DATE[O][7]==11&&DIG_DATE[O][6]==3&&DIG_DATE[0][5]!=11&&DIG_DATE[O][5]!=13&&DIG_DATE[0][5]!=15&&DIG_DATE[0][5]!=17&&DIG_DATE[O][5]!=18&&DIG_DATE[0][5]!=20&&DIG.DATE[0][5]!=12)〃判斷月小,并且不是2月份(DIG_DATE[O][6]=0;DIG_DATE[O][7]=11;++DIG_DATE[O][5];}elseif(DIG一DATE[〇][7]==12&&DIG一DATE[〇][6]==3)〃判斷月大,并且不是2月份(DIG_DATE[O][6]=0;DIG_DATE[O][7]=11;

++DIG_DATE[0][5];)elseif(DIG_DATE[O][7]==20)〃正常滿10清0加1{DIG_DATE[O][7]=10;++DIG_DATE[O][6];)if(DIGDATE[0][5]==13&&DIG_DATE[0][4]==1){DIG_DATE[O][5]=11;DIG_DATE[O][4]=0;++DIG_DATE[O][3];if(DIG_DATE[0][3]==20){DIG_DATE[O][3]=10;++DIG_DATE[O][2];if(DIG_DATE[O][2]==10)DIG_DATE[O][2]=0;++DIG_DATE[O][1];if(DIG_DATE[O][l]==10)DIG_DATE[O][l]=0;++DIG_DATE[O][0];if(DIG_DATEL0][0]==10)DIG_DATE[0][0]=0; //到達(dá)9999-12-3123:59:59后時間變?yōu)?000-01-0100:00:00Jelseif(DIG_DATE[O][5]=20)(DIG_DATE[0][5]=10;++DIG_DATE[0][4];elseif(DIG-DATE⑴[1]==10){DIG_DATE[1][l]=0;++DIG_DATE[1][0];keyNum=Key_Scan();〃掃描鍵盤switch(keyNum)|case(OxFE):〃返回按鍵KI的數(shù)據(jù),切換顯示模式++display_group;if(State_change&&display_group==2)++display_group;if(display_group>3)display_group=0;break;case(OxFD):〃返回按鍵K2的數(shù)據(jù),修換顯示、修改模式if(State_change==O&&display_group!=2){State_change=l;State_bit=O;for(j=0;j<4;j++)for(k=0;k<8;k++)DIG_DATE_tmp[j][k]=DIG_DATE[j][k]; 〃將時間存入臨時數(shù)組保存)elseif(State_change==l&&display_group!=2)

State_change=0;for(j=0;j<4;j++)for(k=0;k<8;k++)DIG_DATE[j][k]=DIG_DATE_tmp[j][k];取出〃將時間從臨時數(shù)組中:(break;case(OxFB):〃返回按鍵K3的數(shù)據(jù),閃爍位置左移if(State_change)(-State_bit;if(display_group&&State_bit==2)State_bit=l;〃時間模式左移到"-"時,再向左移一位if(display_group&&State_bit==5)State_bit=4;〃時間模式左移到"-"時,再向左移一位if(State_bit<0)State_bit=0;〃最左邊}break;case(0xF7):〃返回按鍵K4的數(shù)據(jù),閃爍位置右移if(State_change)(++State_bit;if(display_group&&State_bit==2)State_bit=3;〃時間模式右移到"-''時,再向右移一位if(display_group&&Statebit==5)State_bit=6;〃時間模式右移到"-"時,再向右移一位if(State_bit>7)State_bit=7;〃最右邊)break;case(OxEF):〃返回按鍵K5的數(shù)據(jù)if(!display_group)〃日期模式Iif(State_bit==7)++DIG_DATE_tmp[display_group][State_bit];year=DIG_DATE_tmp[display_group][0]*1000+DIG_DATE_tmp[display_group][l]*100+DIG_DATE_tmp[display_group][2]*10+DIG_DATE_tmp[display_group][3]-10;if(DIG_DATE_tmp[display_group][6]==2&&DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4!=0) 〃判斷非閏年2月28日(if(DIG_DATE_tmp[display_group][State_bit]==19)DIG_DATE_tmp[display_group][State_bit]=10;)elseif(DIG_DATE_tmp[display_group][6]==3&&((DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==0)||DIG_DATE_tmp[display_group][5]==13||DIG_DATE_tmp[display_group][5]==15||DIG_DATE_tmp[display_group][5]==17||DIG_DATE_tmp[display_group][5]==18||DIG_DATE_tmp[display_group][5]==10||(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==1)))〃判斷月大(if(DIG_DATE_tmp[display_group][State_bit]==12)DIG_DATE_tmp[display_group][State_bit]=10;)elseif(DIG_DATE_tmp[display_group][6]==3&&((DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==1)||DIG_DATE_tmp[display_group][5]==14||DIG_DATE_tmp[display_group][5]==16||DIG_DATE_tmp[display_group][5]==19||(DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==1))) 〃判斷月小DIG_DATE_tmp[display_group][State_bit]=10;:lif(DIG_DATE_tmp[display_group][State_bit]==20&&DIG_DATE_tmp[display_group][6]==0){DIG_DATE_tmp[display_group][State_bit]=ll;:lelseif(DIG_DATE_tmp[display_group][State_bit]==20)(DIG_DATE_tmp[display_group][State_bit]=10;if(State_bit==6)(++DIG_DATE_tmp[display_group][State_bit];year=DIG_DATE_tmp[display_group][0]*1000+DIG_DATE_tmp[display_group][l]*100+DIG_DATE_tmp[display_group][2]*10+DIG_DATE_tmp[display_group][3]-10;if(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4!=0)〃判斷非閏年2月if(DIG_DATE_tmp[display_group][State_bit]==3)DIG_DATE_tmp[display_group][State_bit]=O;if(DIG_DATE_tmp[display_group][7]==19&&DIG_DATE_tmp[display_group][6]==2)DIG_DATE_tmp[display_group][7]=18; 〃2月29變?yōu)?月28}elseif(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4==0) 〃判斷閏年2月(if(DIG_DATE_tmp[display_group][State_bit]==3)DIG_DATE_tmp[display_group][State_bit]=O;)elseif(DIG_DATE_tmp[display_group][6]==3&&(DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==0)||DIG_DATE_tmp[display_group][5]==13||DIG_DATE_tmp[display_group][5]==15||DIG_DATE_tmp[display_group][5]==17||DIG_DATE_tmp[display_group][5]==18||DIG_DATE_tmp[display_group][5]==10||DIG_DATE_tmp[display_group][5]==12) 〃判斷月大(if(DIG_DATE_tmp[display_group][State_bit]==3&&DIG_DATE_tmp[display_group][7]>ll)DIG_DATE_tmp[display_group][7]=11;)elseif(DIG_DATE_tmp[display_group][6]==3&&DIG_DATE_tmp[display_group][5]==12||DIG_DATE_tmp[display_group][5]==14I|DIG_DATE_tmp[display_group][5]==161|DIG_DATEtmpLdisplaygroupjL5J==19|(DIGDATEImpLdisplaygroupjL5J==11&&DIGDATEtmp[display_group][4]==1)) 〃判斷月小(if(DIG_DATE_tmp[display_group][State_bit]==3&&DIG_DATE_tmp[display_group][7]>10)DIG_DATE_tmp[display_group][7]=10;)if(DIG_DATE_tmp[display_group][State_bit]==4)(DIG_DATE_tmp[display_group][State_bit]=O;if(State_bit==5){++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][4]==l&&DIG_DATE_tmp[display_group][State_bit]==13)DIG_DATE_tmp[display_group][State_bit]=10;if(DIG_DATE_tmp[display_group][4]==0&&DIG_DATE_tmp[display_group][State_bit]==20)DIG_DATE_tmp[display_group][State_bit]=ll;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[display_group][7]=11;Jif(State_bit==4){++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==l&&DIG_DATE_tmp[display_group][5]>12)DIG_DATE_tmp[display_group][5]=12;if(DIG_DATE_tmp[display_group][State_bit]==2)DIG_DATE_tmp[display_group][State_bit]=O;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[display_group][7]=ll;)if(State_bit==3)(++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==20)DIG_DATE_tmp[display_group][State_bit]=10;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[displaygroup][7]=11;if(State_bit==2)++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==10)DIG_DATE_tmp[display_group][State_bit]=O;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[displaygroup][7]=11;if(State_bit==l)++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==10)DIG_DATE_tmp[display_group][State_bit]=O;

DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[displaygroup][7]=11;if(State_bit==O)(++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==10)DIG_DATE_tmp[display_group][State_bit]=O;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[display_group][7]=11;}else(if(State_bit==7State_bit==4)〃時間模式{++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==10)DIG_DATE_tmp[display_group][State_bit]=O;〃分鐘和秒鐘個位滿10清elseif(State_bit==6I|State_bit==3)++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==6)DIG_DATE_tmp[display_group][State_bit]=O;〃分鐘和秒鐘十位滿6清〇elseif(State_bit==l)if(DIG_DATE_tmp[display_group][0]<2)++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==10)DIG_DATE_tmp[display_group][State_bit]=0;〃如果小時的十位小ナ2則個位滿10清。)else1++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==4)DIG_DATE_tmp[display_group][State_bit]=0;〃如果小時的個位等于2則個位滿4清0))elseif(State_bit==O)(++DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==2)〃小時的十位為2,個位變?yōu)?,防止出現(xiàn)bug(if(DIG_DATE_tmp[display_group][l]>3)DIG_DATE_tmp[display_group][1]=3;)if(DIG_DATE_tmp[display_g

roupjLState_bitJ==3)〃小時的十位滿3清〇DIG_DATE_tmp[display_group][State_bit]=O;break;roupjLState_bitJ==3)〃小時的十位滿3清〇DIG_DATE_tmp[display_group][State_bit]=O;break;case(OxDF):〃返冋按鍵K6的數(shù)據(jù)if(!display_group)〃日期模式if(State_bit==7)--DIG_DATE_tmp[display_group][State_bit];year=DIG_DATE_tmp[display_group][0]*1000+DIG_DATE_tmp[display_group][l]*100+DIG_DATE_tmp[display_group][2]*10+DIG_DATE_tmp[display_group][3]-10;if(DIG_DATE_tmp[display_group][6]==2&&DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4!=0)〃判斷非閏年2月28[4]==0&&year%4!=0)if(DIG_DATE_tmp[display_group][State_bit]==9)DIG_DATE_tmp[display_group][State_bit]=18;}elseif(DIG_DATE_tmp[display_group][6]==3&&((DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==0)||DIG_DATE_tmp[display_group][5]==13||DIG_DATE_tmp[display_group][5]==15||DIG_DATE_tmpLdisplay_group][5]==17||DIG_DATE_tmp[display_group][5]==18I|DIG_DATE_tmp[display_group][5]==10|(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==1)))〃判斷月大(if(DIG_DATE_tmp[display_group][State_bit]==9)DIG_DATE_tmp[display_group][State_bit]=11;}elseif(DIG_DATE_tmp[display_group][6]==3&&((DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==1)||DIG_DATE_tmp[display_group][5]==14||DIG_DATE_tmp[display_group][5]==16l|DIG_DATE_tmp[display_group][5]==19||(DIG_DATE_tmp[display_group][5]==ll&&DIG_DATE_tmp[display_group][4]==1)))〃判斷月小(DIG_DATE_tmp[displaygroup][State_bit]=10;:lif(DIG_DATE_tmp[display_group][State_bit]==9&&DIG_DATE_tmp[display_group][6]==0){DIG_DATE_tmp[display_group][State_bit]=19;elseif(DIG_DATE_tmp[display_group][State_bit]==10)(DIG_DATE_tmp[displaygroup][State_bit]=19;if(State_bit==6)(--DIG_DATE_tmp[display_group][State_bit];year=DIG_DATE_tmp[display_group][0]*1000+DIG_DATE_tmp[display_group][l]*100+DIG_DATE_tmp[display_group][2]*10+DIG_DATE_tmp[display_group][3]-10;if(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4!=0)〃判斷非閏年2月(if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=2;if(DIG_DATE_tmp[display_group][7]==19&&DIG_DATE_tmp[display_group][6]==2)DIG_DATE_tmp[display_group][7]=18; 〃2月29變?yōu)?月28elseif(DIG_DATE_tmp[display_group][5]==12&&DIG_DATE_tmp[display_group][4]==0&&year%4==0) 〃判斷閏年2月(if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=2;}elseif(DIG_DATE_tmp[display_group][6]==3&&(DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==0)||DIG_DATE_tmp[display_group][5]==13||DIG_DATE_tmp[display_group][5]==15||DIG_DATE_tmp[display_group][5]==17||DIG_DATE_tmp[display_group][5]==18||DIG_DATE_tmp[display_group][5]==10||DIG_DATE_tmp[display_group][5]==12) 〃判斷月大(if(DIG_DATE_tmp[display_group][State_bit]==3&&DIG_DATE_tmp[display_group][7]>ll)DIG_DATE_tmp[display_group][7]=11;:1elseif(DIG_DATE_tmp[display_group][6]==3&&DIG_DATE_tmp[display_group][5]==12||DIG_DATE_tmp[display_group][5]==14I|DIG_DATE_tmp[display_group][5]==16!|DIG_DATE_tmp[display_group][5]==19||(DIG_DATE_tmp[display_group][5]==11&&DIG_DATE_tmp[display_group][4]==1)) 〃判斷月小(if(DIG_DATE_tmp[display_group][State_bit]==3&&DIG_DATE_tmp[display_group][7]>10)DIG_DATE_tmp[display_group][7]=10;}if(DIG_DATE_tmp[display_group][State_bit]==-1)DIG_DATE_tmp[display_group][State_bit]=3;if(State_bit==5)(--DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][4]==l&&DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=12;elseif(DIG_DATE_tmp[display_group][4]==0&&DIG_DATE_tmp[display_group][State_bit]==0)DIG_DATE_tmp[display_group][State_bit]=19;DIG_DATE_tmp[displaygroup][6]=0;DIG_DATE_tmp[displaygroup][7]=11;)if(State_bit==4){-DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_groupjLState_bitJ==l&&DIG_DATE_tmpLdisplay_groupJL5J>12)DIG_DATE_tmpLdisplay_group][5]=12;if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=l;DIG_DATE_tmp[display_group][6]二0;DIG_DATE_tmp[display_group][7]=10;)if(State_bit==3)(--DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==9)DIG_DATE_tmp[display_group][State_bit]=19;DIG_DATE_tmp[display_group][6]=0;DIG_DATE_tmp[display_group][7]=11;)if(State_bit==2)(--DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=10;DIG_DATE_tmp[displaygroup][6]=0;DIG_DATE_tmp[displaygroup][7]=11;if(State_bit==l)--DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=10;DIG_DATE_tmp[displaygroup][6]=0;DIG_DATE_tmp[displaygroup][7]=11;if(State_bit==O)-DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp[display_group][State_bit]=10;DIG_DATE_tmp[displaygroup][6]=0;DIG_DATE_tmp[displaygroup][7]=11;elseif(State_bit==7|State_bit==4)〃時間模式--DIG_DATE_tmp[display_group][State_bit];if(DIG_DATE_tmp[display_group][State_bit]==-l)DIG_DATE_tmp

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論