版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 引言</b></p><p> 著名數(shù)學(xué)家華羅庚說過:時(shí)間是由分秒積成的,善于利用零星時(shí)間的人,才會(huì)做出更大的成績(jī)來(lái)。時(shí)間對(duì)人們來(lái)說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無(wú)傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。</p><p> 單片機(jī)模塊中最常
2、見的是數(shù)字鐘,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更更長(zhǎng)的使用壽命,因此廣泛用于個(gè)人家庭,車站, 碼頭辦公室等公共場(chǎng)所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)
3、力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p> 2 單片機(jī)的基本組成與特點(diǎn)</p><p> 單片機(jī)也稱單片微型計(jì)算機(jī),在結(jié)構(gòu)上它采用大規(guī)模集成電路技術(shù)把微處理器(CPU)和隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)、只讀程序存儲(chǔ)器(ROM)、輸入輸出電路(I/O口)以及定時(shí)計(jì)數(shù)器、串行通信口(SCI
4、)、時(shí)鐘電路、脈寬調(diào)制電路(PWM)、模擬多路轉(zhuǎn)換器及A/D轉(zhuǎn)換器等電路集成到單獨(dú)的一塊芯片上,構(gòu)成一個(gè)最小的完善的計(jì)算機(jī)系統(tǒng)。這些電路能在軟件的控制下單獨(dú)、準(zhǔn)確、迅速、高效的完成程序設(shè)計(jì)者事先規(guī)定的任務(wù)。</p><p> 2.1 單片機(jī)的基本組成</p><p> 單片機(jī)是通過內(nèi)部總線把計(jì)算機(jī)的各主要部件接為一體,其內(nèi)部總線包括地址總線、數(shù)據(jù)總線和控制總線。其中,地址總線的作用是
5、在進(jìn)行數(shù)據(jù)交換時(shí)提供地址,CPU通過它們將地址輸出到存儲(chǔ)器或I/O接口;/數(shù)據(jù)總線的作用是在CPU與存儲(chǔ)器或I/O接口之間,或存儲(chǔ)器與外設(shè)之間交換數(shù)據(jù);控制總線包括CPU發(fā)出的控制信號(hào)線和外部送入CPU的應(yīng)答信號(hào)線等。</p><p> 2.2 單片機(jī)的特點(diǎn)</p><p> 1種類多,型號(hào)全。很多單片機(jī)廠家逐年擴(kuò)大適應(yīng)各種需要,有針對(duì)性地推出一系列型號(hào)產(chǎn)品,使系統(tǒng)開發(fā)工程師有很大的
6、選擇余地。大部分產(chǎn)品有較好的兼容性,保證了已開發(fā)產(chǎn)品能順利移植,較容易地使產(chǎn)品進(jìn)行升級(jí)換代。</p><p> 2高集成度,體積小,可靠性強(qiáng)單片機(jī)將各功能部件集成在一塊晶體芯片上,集成度很高,體積自然也是最小的。芯片本身是按工業(yè)測(cè)控環(huán)境要求設(shè)計(jì)的,內(nèi)部布線很短,其抗工業(yè)噪音性能優(yōu)于一般通用的CPU。單片機(jī)程序指令,常數(shù)及表格等固化在ROM中不易破壞,許多信號(hào)通道均在一個(gè)芯片內(nèi),故可靠性高</p>
7、<p> 3控制功能強(qiáng)為了滿足對(duì)對(duì)象的控制要求,單片機(jī)的指令系統(tǒng)均有極豐富的條件:分支轉(zhuǎn)移能力,I/O口的邏輯操作及位處理能力,非常適用于專門的控制功能。</p><p> 4低電壓,低功耗,便于生產(chǎn)。現(xiàn)在新型單片機(jī)的功耗越來(lái)越小,供電電壓從5V降低到了3.2V,甚至1V,工作電流從mA降到μA級(jí),gz2頻率從十幾兆可編程到幾十千赫茲。特別是很多單片機(jī)都設(shè)置了多種工作方式,這些工作方式包括等待,暫停
8、,睡眠,空閑,節(jié)電等。</p><p> 5易擴(kuò)展。單片機(jī)片內(nèi)具有計(jì)算機(jī)正常運(yùn)行所必需的部件。芯片外部有許多供擴(kuò)展用的三總線及并行、串行輸入/輸出管腳,很容易構(gòu)成各種規(guī)模的計(jì)算機(jī)應(yīng)用系統(tǒng)。把原本是外圍接口芯片的功能集成到一塊芯片內(nèi),在一片芯片中構(gòu)造了一個(gè)完整的功能強(qiáng)大的微處理應(yīng)用系統(tǒng)。</p><p> 6優(yōu)異的性價(jià)比。單片機(jī)的性能極高。為了提高速度和運(yùn)行效率,單片機(jī)已開始使用RISC
9、流水線和DSP等技術(shù)。單片機(jī)的尋址能力也已突破64KB的限制,有的已可達(dá)到1MB和16MB,片內(nèi)的ROM容量可達(dá)62MB,RAM容量則可達(dá)2MB。由于單片機(jī)的廣泛使用,因而銷量極大,各大公司的商業(yè)競(jìng)爭(zhēng)更使其價(jià)格十分低廉,其性能價(jià)格比極高。</p><p> 7具有C語(yǔ)言開發(fā)環(huán)境,友好的人機(jī)互動(dòng)環(huán)境。大多數(shù)單片機(jī)都提供基于C語(yǔ)言開發(fā)平臺(tái),并提供大量的函數(shù)供使用,這使產(chǎn)品的開發(fā)周期、代碼可讀性、可移植性都大為提高。
10、</p><p> 2.3 單片機(jī)的分類</p><p> 單片機(jī)作為計(jì)算機(jī)發(fā)展的一個(gè)重要領(lǐng)域,應(yīng)用一個(gè)較科學(xué)的分類方法。根據(jù)目前發(fā)展情況,從不同角度單片機(jī)大致可以分為通用型/專用型、總線型/非總線型及工控型/家電型。 </p><p> 2.3.1 通用型/專用型</p><p> 這是按單片機(jī)適用范圍來(lái)區(qū)分的。例如,
11、80C51是通用型單片機(jī),它不是為某種專用途設(shè)計(jì)的;專用型單片機(jī)是針對(duì)一類產(chǎn)品甚至某一個(gè)產(chǎn)品設(shè)計(jì)生產(chǎn)的,例如為了滿足電子體溫計(jì)的要求,在片內(nèi)集成ADC接口等功能的溫度測(cè)量控制電路。</p><p> 2.3.2 總線型/非總線型</p><p> 這是按單片機(jī)是否提供并行總線來(lái)區(qū)分的??偩€型單片機(jī)普遍設(shè)置有并行地址總線、數(shù)據(jù)總線、控制總線,這些引腳用以擴(kuò)展并行外圍器件都可通過串行口與
12、單片機(jī)連接,另外,許多單片機(jī)已把所需要的外圍器件及外設(shè)接口集成一片內(nèi),因此在許多情況下可以不要并行擴(kuò)展總線,大大減省封裝成本和芯片體積,這類單片機(jī)稱為非總線型單片機(jī)。</p><p> 2.3.3 控制型/家電型</p><p> 這是按照單片機(jī)大致應(yīng)用的領(lǐng)域進(jìn)行區(qū)分的。一般而言,工控型尋址范圍大,運(yùn)算能力強(qiáng);用于家電的單片機(jī)多為專用型,通常是小封裝、低價(jià)格,外圍器件和外設(shè)接口集成度
13、高。 </p><p> 顯然,上述分類并不是惟一的和嚴(yán)格的。例如,80C51類單片機(jī)既是通用型又是總線型,還可以作工業(yè)控用。</p><p> 3 單片機(jī)的應(yīng)用分類</p><p> 單片機(jī)具有體積小,重量輕、性價(jià)比高、開發(fā)性強(qiáng)、可靠性高和使用靈活扥特點(diǎn),器應(yīng)用范圍非常廣泛?,F(xiàn)在單片機(jī)已經(jīng)被廣泛應(yīng)用到了工業(yè)、商業(yè)、國(guó)防和日常生活等人類活動(dòng)的各個(gè)領(lǐng)
14、域</p><p> 3.1 工業(yè)自動(dòng)化控制</p><p> 在工業(yè)控制系統(tǒng)的設(shè)計(jì)中,很多地方都可以看到單片機(jī)的身影。設(shè)計(jì)者可以根據(jù)自己的實(shí)際需要開發(fā)一個(gè)單片機(jī)控制系統(tǒng)。這種方式具有成本低、設(shè)計(jì)靈活、使用方便的特點(diǎn),適用于工業(yè)產(chǎn)品的開發(fā)。另外,在化工、建筑、也冶金等各種工業(yè)領(lǐng)域都要用單片機(jī)進(jìn)行控制。</p><p> 3.2 智能化儀表</p>
15、;<p> 采用單片機(jī)的智能化儀表不但可以大大提升儀表的檔次,而且可以實(shí)現(xiàn)采集數(shù)據(jù)處理和存儲(chǔ)、故障診斷、聯(lián)網(wǎng)集控制功能。</p><p><b> 3.3 家用電器</b></p><p> 在家用電器中單片使用非常普遍,常見的有洗衣機(jī)、電冰箱、空調(diào)、音響、電視機(jī)、手機(jī)扥?,F(xiàn)在,在一些高級(jí)玩具中也配有單片機(jī)。</p><p&g
16、t; 3.4 辦公自動(dòng)化設(shè)備</p><p> 現(xiàn)代辦公室使用的大量通信和辦公設(shè)備多數(shù)嵌入了單片機(jī)。如打印機(jī)、復(fù)印機(jī)、傳真機(jī)、繪圖機(jī)、考勤機(jī)、電話以及通用計(jì)算機(jī)中的鍵盤譯碼、磁盤驅(qū)動(dòng)等。</p><p> 3.5 商業(yè)營(yíng)銷設(shè)備</p><p> 在商業(yè)營(yíng)銷系統(tǒng)中已廣泛使用的電子稱、收款機(jī)、條形碼閱讀器、IC卡刷卡機(jī)、出租車計(jì)價(jià)器以及倉(cāng)儲(chǔ)安全監(jiān)測(cè)系統(tǒng)、商場(chǎng)
17、保安系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)、冷凍保險(xiǎn)系統(tǒng)等都采用了單片機(jī)控制。</p><p> 3.6 汽車電子產(chǎn)品</p><p> 現(xiàn)代汽車的集中顯示系統(tǒng)、動(dòng)力監(jiān)測(cè)控制系統(tǒng)、自動(dòng)駕駛系統(tǒng)、通信系統(tǒng)和運(yùn)行監(jiān)視器(黑匣子)等都離不開單片機(jī)。</p><p> 綜合所述,單片機(jī)已成為計(jì)算機(jī)發(fā)展和應(yīng)用的一個(gè)重要方面。另一方面,單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制
18、系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來(lái)實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。</p><p> 4 數(shù)字日歷時(shí)鐘的功能及總體方案介紹</p><p> 4.1 數(shù)字日歷時(shí)鐘的功能介紹</p><p> 數(shù)字日歷時(shí)鐘采用液晶雙行顯示,第一行顯示年月日,第二行
19、顯示時(shí)間,具有閏年補(bǔ)償功能,24小時(shí)計(jì)時(shí)法,可以通過鍵盤設(shè)置時(shí)間及日期。通過KEY1進(jìn)入設(shè)置狀態(tài),按一下設(shè)置秒,按下設(shè)置分,按三下設(shè)置時(shí),按四下設(shè)置日,按五下設(shè)置月,按六下設(shè)置年,按七下退出設(shè)置狀態(tài),時(shí)鐘繼續(xù)運(yùn)行;KEY2為“+”健,每按一下則相對(duì)應(yīng)的加一;KEY3為“-”健,每按一下則相對(duì)應(yīng)的減一;RST為復(fù)位鍵,該鍵使得程序重新開始運(yùn)行。</p><p> 4.2 數(shù)字日歷時(shí)鐘總體方案介紹</p&g
20、t;<p> AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可解決許多較復(fù)雜系統(tǒng)控制問題,日歷時(shí)鐘并不是特別復(fù)雜,采用現(xiàn)有的I/O口便可完成,
21、所以本設(shè)計(jì)的基本結(jié)構(gòu)如圖1:</p><p> 4.2.1 計(jì)時(shí)方案</p><p> 利用AT89C52單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),由外部的石英晶體振蕩器提供12MHZ的振蕩頻率,配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)。該方案節(jié)省硬件成本,且能在定時(shí)/計(jì)數(shù)器的使用、中斷及程序設(shè)計(jì)方面得到鍛煉與提高,對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解,從而對(duì)學(xué)好單片機(jī)技術(shù)這門課程起到一定的作用。
22、</p><p> 4.2.2 鍵盤方案</p><p> AT89C52的P3.0口接KEY1,P3.1口接KEY2,P3.2口接KEY3,這三個(gè)鍵的公共端接地,構(gòu)成獨(dú)立式鍵盤電路。</p><p> 4.2.3 顯示方案</p><p> AT89C52的P0口接1602液晶顯示器的D0-D7口,采用的并口通信方式, P3.4
23、口接液晶顯示器的使能端,P3.5口接液晶顯示器的數(shù)據(jù)/命令選擇端,液晶顯示器的端口3與地之間接100K?的電位器,以控制顯示亮度。這樣就構(gòu)成了顯示電路。</p><p> 4.2.4 電源及復(fù)位電路</p><p> 電源采用標(biāo)準(zhǔn)的5V電源,可以由USB供電,也可由外部電源適配器供電。</p><p> 復(fù)位電路采用上電復(fù)位兼手動(dòng)復(fù)位電路,可以方便的使程序回
24、到初始狀態(tài)。</p><p> 5 數(shù)字日歷時(shí)鐘的工作原理</p><p> 5.1 實(shí)現(xiàn)時(shí)鐘計(jì)數(shù)的基本方法</p><p> 利用MCS-51系列單片機(jī)的可編程定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)來(lái)實(shí)現(xiàn)時(shí)鐘計(jì)數(shù)。采用12MHZ的晶振,一個(gè)機(jī)器周期是12個(gè)振蕩周期,一個(gè)振蕩周期為1/12MHZ。所以每個(gè)機(jī)器周期的時(shí)間T=1us,把定時(shí)器設(shè)為工作方式0,定時(shí)時(shí)間為50ms
25、,則計(jì)數(shù)溢出20次即得時(shí)鐘計(jì)時(shí)最小單位秒, 采用中斷方式進(jìn)行溢出次數(shù)累計(jì),計(jì)滿20次為秒計(jì)時(shí)(1秒),從秒到分和從分到時(shí)的計(jì)時(shí)是通過累加和數(shù)值比較實(shí)現(xiàn)。</p><p> 5.2 液晶顯示的基本方法</p><p> 液晶顯示采用長(zhǎng)沙太陽(yáng)人電子有限公司的SMC1602A的液晶顯示器,其顯示容量為16×2個(gè)字符。接口信號(hào)說明見表1</p><p>&l
26、t;b> 其基本操作時(shí)序:</b></p><p> 1讀狀態(tài):輸入:RS=L,RW=H,E=H輸出:D0-D7=狀態(tài)字</p><p> 2寫指令:輸入:RS=L,RW=L, D0-D7=指令碼,E=高脈沖輸出:無(wú)</p><p> 3讀數(shù)據(jù):輸入:RS=H,RW=H,E=H輸出:D0-D7=數(shù)據(jù)<
27、;/p><p> 4寫數(shù)據(jù):輸入:RS=H,RW=L, D0-D7=數(shù)據(jù),E=高脈沖輸出:D0-D7=狀態(tài)字</p><p><b> 初始化設(shè)置:</b></p><p><b> 顯示模式設(shè)置見表2</b></p><p> 顯示開/關(guān)及光標(biāo)設(shè)置見表3</p><p&
28、gt;<b> 數(shù)據(jù)指針設(shè)置見表4</b></p><p><b> 其他設(shè)置見表5</b></p><p><b> 初始化的過程</b></p><p> 設(shè)置顯示模式為16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口:指令碼=0x38</p><p>
29、 開顯示,設(shè)置不顯示光標(biāo),光標(biāo)不閃爍:指令碼=0x0c</p><p> 設(shè)置當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加一,且光標(biāo)加一:指令碼=0x06</p><p> 數(shù)據(jù)指針清零,顯示清屏:指令碼=0x01</p><p> 將數(shù)據(jù)指針設(shè)置為80H:指令碼=0x80</p><p><b> 寫指令的過程</b><
30、/p><p> 設(shè)置為命令狀態(tài):RS=0</p><p><b> 使能信號(hào)低:E=0</b></p><p> 將指令碼輸入到P0口</p><p><b> 延時(shí)5ms</b></p><p><b> 使能型號(hào)高:E=1</b></p&
31、gt;<p><b> 延時(shí)5ms</b></p><p><b> 使能型號(hào)高:E=0</b></p><p><b> 寫數(shù)據(jù)的過程</b></p><p> 設(shè)置為數(shù)據(jù)狀態(tài):RS=1</p><p><b> 使能信號(hào)低:E=0</
32、b></p><p><b> 將數(shù)據(jù)輸入到P0口</b></p><p><b> 延時(shí)5ms</b></p><p><b> 使能型號(hào)高:E=1</b></p><p><b> 延時(shí)5ms</b></p><p&g
33、t;<b> 使能型號(hào)高:E=0</b></p><p> 通過以上步驟實(shí)現(xiàn)對(duì)1602液晶顯示器顯示功能。</p><p> 5.3 閏年補(bǔ)償功能實(shí)現(xiàn)的基本方法</p><p> 閏年補(bǔ)償是日歷中必不可少的,每隔四年2月份有29天,根據(jù)這一規(guī)律,只要能被4整除且沒有余數(shù)的年就是閏年,實(shí)現(xiàn)這一判斷有兩種方法:1.用年份除4取模,模為0表
34、是閏年,不為0則不是閏年;2.用年份與3位與,如果與下的結(jié)果為0為閏年,不為0則不是閏年,我選擇的是第二種方法,這種方法可以減少CPU的運(yùn)算強(qiáng)度。</p><p> 5.4 鍵盤功能實(shí)現(xiàn)的基本方法</p><p> 鍵盤模塊由三個(gè)按鍵組成獨(dú)立式鍵盤,三個(gè)按鍵的常開端接單片機(jī)的I/O口,公共端接地,只要按下按鍵對(duì)單片機(jī)輸入低電平信號(hào),由單片機(jī)內(nèi)部的程序?qū)崿F(xiàn)消抖,其消抖的步驟如下:1檢測(cè)
35、I/O口是否有低電平信號(hào),2延時(shí)5ms,再次檢測(cè)I/O口是否有低電平信號(hào),3如確實(shí)有低電平信號(hào),向單片機(jī)發(fā)出按鍵確認(rèn)信號(hào),如果沒有,則跳出消抖程序。</p><p> 5.5 復(fù)位功能實(shí)現(xiàn)的基本方法</p><p> 本設(shè)計(jì)采用上電復(fù)位兼手動(dòng)復(fù)位,由一電阻串聯(lián)開關(guān)后并聯(lián)一個(gè)電容,再和一電阻串聯(lián),單片機(jī)接通電原,電容進(jìn)入充電狀態(tài),給RST一個(gè)高電壓,就進(jìn)入上電復(fù)位狀態(tài)。在單片機(jī)運(yùn)行中,
36、當(dāng)按鈕按下后,由兩電阻組成的串聯(lián)分壓電路,使RST端獲得足夠時(shí)間的閥值以上電壓,單片機(jī)即進(jìn)行復(fù)位。在單片機(jī)復(fù)位后,松開按鈕,單片機(jī)即可開始正常運(yùn)行程序。</p><p> 6 數(shù)字液晶日歷時(shí)鐘的硬件電路</p><p> 6.1 數(shù)字液晶日歷時(shí)鐘原理圖</p><p> 在硬件電路中,采用的是AT89C52單片機(jī),AT89C52為40 腳雙列直插封裝的8
37、位通用微處理器,40個(gè)端口大致可分為電源、時(shí)鐘、I/O口、數(shù)據(jù)總線、地址總線、控制總線幾個(gè)部分。他們的功能如下, </p><p><b> 電源:</b></p><p> Ucc(40端子) 芯片工作電源,+5V</p><p> Uss (20端子) 電源接地端</p><p><b&
38、gt; 時(shí)鐘:</b></p><p> XTAL1(19端子)接外部石英晶體和微調(diào)電容的一端,也是MCS-51內(nèi)部振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該端子應(yīng)接地。</p><p> XTAL2(18端子)接外部石英晶體和微調(diào)電容的另一端,也是內(nèi)部振蕩電路反相放大器的輸入端。振蕩電路的頻率就是外部石英晶體的固有頻率。當(dāng)采用外部時(shí)鐘電路時(shí),該端子輸入外部時(shí)鐘脈沖
39、,用示波器觀察此端子是否有脈沖信號(hào)輸出,即可判斷MCS-51的振蕩電路是否正常工作。</p><p><b> 控制總線:</b></p><p> ALE/PROG\(30端子)地址鎖存允許信號(hào)。在MCS-51上電正常工作后,該端子不斷以晶體振蕩器1/6的頻率向外輸出正脈沖信號(hào)。當(dāng)MCS-51訪問片外存儲(chǔ)器,ALE用來(lái)鎖存擴(kuò)展地址的低8位(P0口)的地址信號(hào),在
40、不訪問外部存儲(chǔ)器ALE也以振蕩器的1/6的頻率固定輸出正脈沖,可用作為外輸出的時(shí)鐘信號(hào)或用于定時(shí)。同樣,可用示波器檢查ALE端子是否有脈沖信號(hào)輸出來(lái)判斷MCS-51芯片的好壞。在MCS-51訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將少一個(gè)ALE脈沖。ALE端可以驅(qū)動(dòng)(吸收或輸出電流)8個(gè)LSTTL。在8751單片機(jī)EPROM編程期間。此端子接編程脈沖,實(shí)現(xiàn)其第二功能PROG\.</p><p> PSEN\(29端子)外部程序存
41、儲(chǔ)器讀選通信號(hào)。在訪問外部程序存儲(chǔ)器時(shí),此端子定時(shí)輸出負(fù)脈沖作為讀取外部存儲(chǔ)器的選通信號(hào)。在從外部程序存儲(chǔ)器取命令(或數(shù)據(jù))期間,RSEN在每個(gè)機(jī)器周期(12個(gè)脈沖時(shí)期)內(nèi)兩次有效。PSEN\可以驅(qū)動(dòng)8個(gè)LSTTL。</p><p> RST/Upd(9端子) 復(fù)位信號(hào)輸入端。在該端子上保持兩個(gè)機(jī)器周期的高電平時(shí),可對(duì)MCS-51實(shí)現(xiàn)復(fù)位操作。該端子的第二功能Upd是作為備用電源的輸入端,在Ucc掉電或電壓降至
42、低電平規(guī)定時(shí),由Upd向外部數(shù)據(jù)存儲(chǔ)器提供電源,以保持存放其中的數(shù)據(jù)。</p><p> EA\/Upp(31端子)外部程序存儲(chǔ)器地址允許輸入端。在MCS-51內(nèi)、外程序存儲(chǔ)器都具備時(shí),EA為高電平,從內(nèi)部程序存儲(chǔ)器開始訪問,EA為低電平時(shí),則跳過內(nèi)部程序存儲(chǔ)器,從外部存儲(chǔ)器開始訪問。</p><p><b> 并行I/O:</b></p><
43、p> P0口(32-39端子)它除可以作為一般I/O外,還可作為MCS-51單片機(jī)的8位準(zhǔn)雙向數(shù)據(jù)總線和低8位地址總線。在MCS-51訪問外部存儲(chǔ)器時(shí),它分別先輸出要訪問存儲(chǔ)單元的低8位地址,然后作為可進(jìn)行輸入/輸出的數(shù)據(jù)總線。所謂“準(zhǔn)雙向”,是指P0口在做輸入口使用時(shí)應(yīng)先進(jìn)行寫“1”操作。P0口中每位能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。</p><p> P1口(1-8端子)它是一個(gè)帶內(nèi)部上拉電阻8位準(zhǔn)雙向I/
44、O端子。P1口的每位能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。</p><p> P2口(21-28端子)它是一個(gè)帶內(nèi)部上拉電阻的8位準(zhǔn)雙向口。在訪問外部存儲(chǔ)器時(shí),它輸出高8位地址,和P0口輸出的低8位地址共同作為16位地址總線。P2口的每位能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。</p><p> P3口(10-17端子)P3口是一個(gè)內(nèi)部上拉電阻的準(zhǔn)雙向I/O口,它的每位能驅(qū)動(dòng)LSTT</p>&l
45、t;p><b> 負(fù)載。</b></p><p> 信號(hào)端子的第二功能:</p><p> 由于工藝及標(biāo)準(zhǔn)化等原因,芯片的端子數(shù)目是有限制的。例如MCS-51系列把芯片引線端子數(shù)目限定為40個(gè),但單片機(jī)為實(shí)現(xiàn)其功能所需要的數(shù)目卻遠(yuǎn)遠(yuǎn)超過此數(shù),因此就出現(xiàn)要與可能的矛盾。如何解決這個(gè)矛盾?兼職是唯一可行的辦法,即給一些信號(hào)端子賦予雙重功能。如果把前述信號(hào)定義為
46、端子第一功能的話,則根據(jù)需要在定義的信號(hào)就是它的第二功能。下面介紹某些信號(hào)端子的第二功能,P3的8條口線都定義有第二功能見表6:</p><p> 根據(jù)上述端口說明,設(shè)計(jì)數(shù)字液晶日歷時(shí)鐘原理圖見附錄2</p><p> 6.2 數(shù)字液晶日歷時(shí)鐘PCB圖</p><p> 數(shù)字液晶日歷時(shí)鐘PCB圖見圖3</p><p> 6.3 數(shù)
47、字液晶日歷時(shí)鐘元件清單</p><p> 數(shù)字液晶日歷時(shí)鐘元件清單見表7</p><p> 6.4 數(shù)字液晶日歷時(shí)鐘實(shí)物(用面包板字制作的實(shí)物)</p><p> 數(shù)字液晶日歷時(shí)鐘實(shí)物見圖4</p><p> 7 數(shù)字液晶日歷時(shí)鐘的軟件設(shè)計(jì)及基于Proteus的軟件仿真</p><p> 7.1 基于單
48、片機(jī)的日歷時(shí)鐘源程序</p><p> 基于單片機(jī)的日歷時(shí)鐘源程序見附錄1。</p><p> 7.2 基于Proteus的軟件仿真</p><p> 基于Proteus的軟件仿真圖見圖5:</p><p> 8 數(shù)字日歷時(shí)鐘的使用說明及調(diào)試過程</p><p><b> 8.1 使用說明&l
49、t;/b></p><p><b> 時(shí)間顯示:</b></p><p> 電子鐘上電后,電子鐘顯示2010-05-0100:00:00并開始運(yùn)行,如下圖6所示:</p><p><b> 時(shí)間調(diào)整:</b></p><p> 按一次SET鍵,光標(biāo)在秒位置閃爍,如圖7所示這時(shí)可以設(shè)置
50、秒,按+鍵,數(shù)字依次加一,按-鍵,數(shù)字依次減一,按兩次SET鍵,光標(biāo)在分位置閃爍,這時(shí)可以設(shè)置秒,按+鍵,數(shù)字依次加一,按-鍵,數(shù)字依次減一,時(shí)、日、月、年設(shè)置方法與分秒相同,當(dāng)按第七次SET鍵,此時(shí)時(shí)鐘又恢復(fù)正常運(yùn)行。</p><p><b> 8.2 調(diào)試過程</b></p><p> 將電路按照原理圖在面包板上焊接好,將燒好程序的單片機(jī)插入40腳插座,接通
51、電源,此時(shí)數(shù)字時(shí)鐘顯示初始日期,將日期及時(shí)間設(shè)置好后,其正常運(yùn)行,按下復(fù)位鍵,沒有任何反應(yīng),斷開電源,查看硬件電路,發(fā)現(xiàn)在面包板上單片機(jī)I/O口語(yǔ)復(fù)位鍵的那根線沒有連接,將其焊接好以后重新上調(diào)試,這時(shí)能正常運(yùn)行,按下復(fù)位鍵后恢復(fù)到初始狀態(tài)。</p><p><b> 8.3 誤差分析</b></p><p> 在調(diào)試運(yùn)行過程中,在所有參數(shù)正確的情況下,我的結(jié)果仍
52、出現(xiàn)運(yùn)行緩慢情況。產(chǎn)生誤差的主要原因是我們用軟件計(jì)時(shí),計(jì)時(shí)1秒是采用定時(shí)器的中斷服務(wù)程序。當(dāng)電子鐘運(yùn)行1秒,執(zhí)行中斷程序需要一定時(shí)間,這個(gè)時(shí)間就是所產(chǎn)生的誤差,這個(gè)誤差是不可避免的。同時(shí),單片機(jī)工作也會(huì)受到環(huán)境的影響,比如溫度、濕度,以及其它電子設(shè)備的干擾。</p><p> 因此,應(yīng)該讓電子鐘工作在適度溫度、干燥和電子干擾較少的環(huán)境下,還有一種方法就是采用實(shí)時(shí)時(shí)鐘芯片,這樣可以使誤差降低到最少。</p&
53、gt;<p><b> 結(jié) 論</b></p><p> 通過兩個(gè)月的學(xué)習(xí)和調(diào)試過程,終于完成了單片機(jī)模塊數(shù)字日歷時(shí)鐘的工作。并且使數(shù)字日歷時(shí)鐘能夠順利運(yùn)行,完成了預(yù)期的目標(biāo)。從單片機(jī)數(shù)字日歷時(shí)鐘的設(shè)計(jì)過程中也找到了一些單片機(jī)開發(fā)的規(guī)律:先了解所有元件的具體內(nèi)容,從而畫出其電路圖,使數(shù)字鐘從簡(jiǎn)易變成多功能的方式,雖沒有做多功能數(shù)字鐘,卻知曉了其方法。從而讓我踏入了單片機(jī)應(yīng)
54、用領(lǐng)域的第一步。然而在調(diào)試過程中有也有許多的不足之處:例如編寫調(diào)試程序有點(diǎn)不足。希望能夠在以后的不斷深入學(xué)習(xí)中能夠彌補(bǔ)自己的不足之處。同時(shí)更是朝著單片機(jī)應(yīng)用領(lǐng)域邁進(jìn)。</p><p><b> 致 謝</b></p><p> 在此結(jié)束之際,我要感謝我在學(xué)院求學(xué)期間里,每一位都曾經(jīng)授予我知識(shí)和做人道理的老師,在這里我由衷的說一句:老師,你們辛苦啦!在這即將畢業(yè)的
55、時(shí)候,我的心里有著不知是什么樣的心情,大學(xué)三年的寒窗苦讀在這一瞬之間也宣告結(jié)束,即將真正走進(jìn)社會(huì)大家庭的我是老師和我的親人在教誨和告誡我,使我的路不是那么的曲折、迷離,在此我要再次感謝我的恩師和我的親人,非常的謝謝你們,一直對(duì)我的教導(dǎo)! </p><p><b> 參 考 文 獻(xiàn)</b></p><p> 1 湯競(jìng)難,沈國(guó)琴.51單片機(jī)C語(yǔ)言開發(fā)與實(shí)例.北京:人
56、民郵電出版社,2008</p><p> 2 耿長(zhǎng)清.單片機(jī)應(yīng)用技術(shù).北京:化學(xué)工業(yè)出版社,2002</p><p> 3 宋戈,黃鶴松,員玉良,蔣海峰.51單片應(yīng)用開發(fā)范例大全.北京:人民郵電出版社2010</p><p> 4 周潤(rùn)景,張麗娜,丁莉.基于PROTEUS的電路設(shè)計(jì)及單片機(jī)設(shè)計(jì)與仿真(第2版).北京:北京航天航空大學(xué)出版社,2010<
57、;/p><p> 5 鄭鋒,王巧芝,陳繪兵,王鼎嬡.51單片機(jī)應(yīng)用系統(tǒng)典型模塊開發(fā)大全.北京:中國(guó)鐵道出版社,2010</p><p> 6 趙廣林.Protel99SE電路設(shè)計(jì)與制版.北京:電子工業(yè)出版社,2005</p><p> 7 張毅剛,修林成,胡振江.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990</p>
58、<p> 8 李華.MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993</p><p> 9 李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2004</p><p> 附錄A:基于單片機(jī)的日歷時(shí)鐘源程序</p><p> #include<reg52.h></p>&
59、lt;p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p> sbit key1=P3^0;/*定義設(shè)置鍵*/</p><p> sbit key2=P3^1;/*定義UP鍵*/</p><p> sbit key3=P3^
60、2;/*定義DOWN鍵*/</p><p> sbit lcden=P3^4;/*定義液晶顯示器使能端*/</p><p> sbit rs=P3^5;/*定義液晶顯示器數(shù)據(jù)與指令使能端*/</p><p> uchar count,key1num;</p><p> uint runnian,nian1,nian2;<
61、;/p><p> char miao,shi,fen,ri,yue;</p><p> uchar code table[]=" 2010-05-23";</p><p> uchar code table1[]=" 00:00:00";</p><p> void delay(uint
62、z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }<
63、/b></p><p> void write_com(uchar com)/*寫指令程序*/</p><p><b> {</b></p><p><b> rs=0;</b></p><p><b> lcden=0;</b></p>&
64、lt;p><b> P0=com;</b></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b>
65、lcden=0;</b></p><p><b> }</b></p><p> void write_date(uchar date)/*寫數(shù)據(jù)程序*/</p><p><b> {</b></p><p><b> rs=1;</b></
66、p><p><b> lcden=0;</b></p><p><b> P0=date;</b></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><
67、;b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void init()/*初始化程序*/</p><p><b> {</b></
68、p><p> uchar num;</p><p><b> lcden=0;</b></p><p><b> miao=0;</b></p><p><b> fen=0;</b></p><p><b> shi=0;</b&
69、gt;</p><p><b> ri=23;</b></p><p><b> yue=05;</b></p><p><b> nian1=10;</b></p><p><b> nian2=20;</b></p><p&
70、gt; write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x01);</p><p> write_com(0x80);</p><p> for(num=0;num<
71、13;num++)</p><p><b> {</b></p><p> write_date(table[num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p> write
72、_com(0x80+0x40);</p><p> for(num=0;num<12;num++)</p><p><b> {</b></p><p> write_date(table1[num]);</p><p><b> delay(5);</b></p>&l
73、t;p><b> }</b></p><p> TMOD=0x01;/*定時(shí)器0,16位工作方式*/</p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p> EA=1;</p>
74、<p> ET0=1;/*打開定時(shí)器0中斷*/</p><p> TR0=1;/*啟動(dòng)定時(shí)器*/</p><p><b> }</b></p><p> void write_nyr(uchar add,uchar date)/*寫年月日程序*/</p><p>&
75、lt;b> {</b></p><p> uchar shi,ge;</p><p> shi=date/10;</p><p> ge=date%10;</p><p> write_com(0x80+add);</p><p> write_date(0x30+shi);</p&
76、gt;<p> write_date(0x30+ge);</p><p><b> }</b></p><p> void write_sfm(uchar add,uchar date)/*寫時(shí)分秒程序*/</p><p><b> {</b></p><p> uchar
77、 shi,ge;</p><p> shi=date/10;</p><p> ge=date%10;</p><p> write_com(0x80+0x40+add);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p&
78、gt;<p><b> }</b></p><p> void panduannian()/*判斷閏年程序*/</p><p><b> {</b></p><p><b> uint a;</b></p><p> a=nian1&
79、3;</p><p><b> if(a==0)</b></p><p><b> {</b></p><p> runnian=1;</p><p><b> }</b></p><p><b> else</b><
80、;/p><p><b> {</b></p><p> runnian=0;</p><p><b> }</b></p><p><b> }</b></p><p> void keyscan()/*鍵盤設(shè)置程序*/</p&
81、gt;<p><b> {</b></p><p> if(key1==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(key1==0)/*鍵盤1消抖程序*/<
82、/p><p> {key1num++;</p><p> while(!key1);</p><p> if(key1num==1)</p><p><b> {</b></p><p><b> TR0=0;</b></p><p> wr
83、ite_com(0x80+0x40+10);</p><p> write_com(0x0f);</p><p><b> }</b></p><p><b> }</b></p><p> if(key1num==2)</p><p> write_com(0x8
84、0+0x40+7);</p><p> if(key1num==3)</p><p> write_com(0x80+0x40+4);</p><p> if(key1num==4)</p><p> write_com(0x80+11);</p><p> if(key1num==5)</p>
85、<p> write_com(0x80+8);</p><p> if(key1num==6)</p><p> write_com(0x80+5);</p><p> if(key1num==7)</p><p><b> {</b></p><p> key1num=0
86、;</p><p> write_com(0x0c);</p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(key1num!=0)</p&
87、gt;<p><b> {</b></p><p> if(key2==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(key2==0)/*鍵盤2消抖程序*/</p
88、><p><b> {</b></p><p> while(!key2);</p><p> if(key1num==1)</p><p><b> {</b></p><p><b> miao++;</b></p><p&
89、gt; if(miao==60)</p><p><b> miao=0;</b></p><p> write_sfm(10,miao);</p><p> write_com(0x80+0x40+10);</p><p><b> }</b></p><p>
90、 if(key1num==2)</p><p><b> {</b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p><b> fen=0;</b></p><p> write_sf
91、m(7,fen);</p><p> write_com(0x80+0x40+7);</p><p><b> }</b></p><p> if(key1num==3)</p><p><b> {</b></p><p><b> shi++;<
92、/b></p><p> if(shi==24)</p><p><b> shi=0;</b></p><p> write_sfm(4,shi);</p><p> write_com(0x80+0x40+4);</p><p><b> }</b><
93、;/p><p> if(key1num==4)</p><p><b> {</b></p><p><b> ri++;</b></p><p> if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)</p>&
94、lt;p><b> {</b></p><p> if(ri==32)</p><p><b> ri=1;</b></p><p><b> }</b></p><p> if(yue==4||yue==6||yue==9||yue==11)</p>
95、;<p><b> {</b></p><p> if(ri==31)</p><p><b> ri=1;</b></p><p><b> }</b></p><p> if(yue==2&&runnian==1&&r
96、i==30)</p><p><b> ri=1;</b></p><p> if(yue==2&&runnian==0&&ri==29)</p><p><b> ri=1;</b></p><p> write_nyr(11,ri);</
97、p><p> write_com(0x80+11);</p><p><b> }</b></p><p> if(key1num==5)</p><p><b> {</b></p><p><b> yue++;</b></p>
98、<p> if(yue==13)</p><p><b> yue=1;</b></p><p> write_nyr(8,yue);</p><p> write_com(0x80+8);</p><p><b> }</b></p><p> if(
99、key1num==6)</p><p><b> {</b></p><p><b> nian1++;</b></p><p> if(nian1==100)</p><p><b> {</b></p><p><b> nian
100、1=0;</b></p><p><b> nian2++;</b></p><p> if(nian2==100)</p><p><b> nian2=0;</b></p><p> write_nyr(3,nian2);</p><p> writ
101、e_com(0x80+3);</p><p><b> }</b></p><p> write_nyr(5,nian1);</p><p> write_com(0x80+5);</p><p><b> }</b></p><p><b> }<
102、/b></p><p><b> }</b></p><p> if(key3==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(key3==0)/*鍵
103、盤3消抖程序*/</p><p><b> {</b></p><p> while(!key3);</p><p> if(key1num==1)</p><p><b> {</b></p><p><b> miao--;</b><
104、/p><p> if(miao==-1)</p><p><b> miao=59;</b></p><p> write_sfm(10,miao);</p><p> write_com(0x80+0x40+10);</p><p><b> }</b></p&
105、gt;<p> if(key1num==2)</p><p><b> {</b></p><p><b> fen--;</b></p><p> if(fen==-1)</p><p><b> fen=59;</b></p><
106、p> write_sfm(7,fen);</p><p> write_com(0x80+0x40+7);</p><p><b> }</b></p><p> if(key1num==3)</p><p><b> {</b></p><p><b&
107、gt; shi--;</b></p><p> if(shi==-1)</p><p><b> shi=23;</b></p><p> write_sfm(4,shi);</p><p> write_com(0x80+0x40+4);</p><p><b>
108、 }</b></p><p> if(key1num==4)</p><p><b> {</b></p><p><b> ri--;</b></p><p> if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==
109、12)</p><p><b> {</b></p><p> if(ri==-1)</p><p><b> ri=31;</b></p><p> }/*對(duì)31天的月份進(jìn)行判斷程序*/</p><p> if(yue==4||yue==6||yue
110、==9||yue==11)</p><p><b> {</b></p><p> if(ri==-1)</p><p><b> ri=30;</b></p><p> }/*對(duì)30天的月份進(jìn)行判斷程序*/</p><p> if(yue==2&am
111、p;&runnian==1&&ri==-1)</p><p><b> ri=29;</b></p><p> if(yue==2&&runnian==0&&ri==-1)</p><p><b> ri=28;</b></p><p>
112、 write_nyr(11,ri);</p><p> write_com(0x80+11);</p><p><b> }</b></p><p> if(key1num==5)</p><p><b> {</b></p><p><b> yue-
113、-;</b></p><p> if(yue==0)</p><p><b> yue=12;</b></p><p> write_nyr(8,yue);</p><p> write_com(0x80+8);</p><p><b> }</b>&l
114、t;/p><p> if(key1num==6)</p><p><b> {</b></p><p><b> nian1--;</b></p><p> if(nian1==-1)</p><p><b> {</b></p>&
115、lt;p><b> nian2--;</b></p><p><b> nian1=99;</b></p><p> if(nian2==-1)</p><p><b> {</b></p><p><b> nian1=99;</b>&l
116、t;/p><p><b> nian2=99;</b></p><p><b> }</b></p><p><b> }</b></p><p> write_nyr(3,nian2);</p><p> write_com(0x80+3);&l
117、t;/p><p> write_nyr(5,nian1);</p><p> write_com(0x80+5);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
118、<p><b> }</b></p><p><b> }</b></p><p> void main()/*主程序*/</p><p><b> {</b></p><p> init();/*調(diào)用初始化程序*/</
119、p><p><b> while(1)</b></p><p><b> {</b></p><p> panduannian();/*調(diào)用閏年判斷程序*/</p><p> keyscan();/*調(diào)用鍵盤設(shè)置程序*/</p><p><b>
120、; }</b></p><p><b> }</b></p><p> void timer0() interrupt 1/*定時(shí)計(jì)數(shù)器程序*/</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p>&
121、lt;p> TL0=(65536-50000)%256;</p><p><b> count++;</b></p><p> if(count==20 )</p><p><b> {</b></p><p><b> count=0;</b></p&g
122、t;<p><b> miao++;</b></p><p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;</b></p><p><b> fen++;</b><
123、/p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> shi++;</b></p><p> if(shi==24)</p><p
124、><b> {</b></p><p><b> shi=0;</b></p><p><b> ri++;</b></p><p> if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)</p><
125、p><b> {</b></p><p> if(ri==32)</p><p><b> {</b></p><p> ri=1;</p><p><b> yue++;</b></p><p> if(yue==13)
126、</p><p><b> {</b></p><p><b> nian1++;</b></p><p><b> yue=1;</b></p><p> if(nian1==100)</p><p><b> {</b>
127、;</p><p><b> nian1=0;</b></p><p><b> nian2++;</b></p><p> if(nian2==0)</p><p><b> nian2=0;</b></p><p> write_nyr(3
128、,nian2);</p><p><b> }</b></p><p> write_nyr(5,nian1);</p><p><b> }</b></p><p> write_nyr(8,yue);</p><p><b> }</b>
129、</p><p><b> }</b></p><p> if(yue==4||yue==6||yue==9||yue==11)</p><p><b> {</b></p><p> if(ri==31)</p><p><b> {</b>
130、</p><p><b> ri=1;</b></p><p><b> yue++;</b></p><p> if(yue==13)</p><p><b> {</b></p><p><b> nian1++;</b&g
131、t;</p><p><b> yue=1;</b></p><p> if(nian1==100)</p><p><b> {</b></p><p><b> nian1=0;</b></p><p><b> nian2++;
132、</b></p><p> if(nian2==0)</p><p><b> nian2=0;</b></p><p> write_nyr(3,nian2);</p><p><b> }</b></p><p> write_nyr(5,nian1
133、);</p><p><b> }</b></p><p> write_nyr(8,yue);</p><p><b> }</b></p><p><b> }</b></p><p> if(yue==2&&runnia
134、n==1&&ri==30)</p><p><b> {</b></p><p><b> ri=1;</b></p><p><b> yue++;</b></p><p> if(yue==13)</p><p><b&
135、gt; {</b></p><p><b> nian1++;</b></p><p><b> yue=1;</b></p><p> if(nian1==100)</p><p><b> {</b></p><p><b
136、> nian1=0;</b></p><p><b> nian2++;</b></p><p> if(nian2==0)</p><p><b> nian2=0;</b></p><p> write_nyr(3,nian2);</p><p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 日歷時(shí)鐘顯示系統(tǒng)畢業(yè)設(shè)計(jì)
- 高精度大屏幕led日歷時(shí)鐘 畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)(論文)數(shù)字萬(wàn)年歷時(shí)鐘電路的設(shè)計(jì)
- 單片機(jī)日歷和時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文-單片機(jī)日歷時(shí)鐘開發(fā)【精校排版】
- 單片機(jī)日歷時(shí)鐘開發(fā)
- 數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于ds1302實(shí)時(shí)日歷時(shí)鐘顯示系統(tǒng)畢業(yè)設(shè)計(jì)說明書
- 畢業(yè)設(shè)計(jì)-數(shù)字時(shí)鐘設(shè)計(jì)
- 基于fpga的數(shù)字時(shí)鐘設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 單片機(jī)日歷時(shí)鐘開發(fā)初稿.doc
- 單片機(jī)日歷時(shí)鐘開發(fā)定稿.doc
- 畢業(yè)設(shè)計(jì)---電子數(shù)字時(shí)鐘
- 單片機(jī)日歷時(shí)鐘開發(fā)【電子信息科學(xué)與技術(shù)畢業(yè)論文】
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 畢業(yè)設(shè)計(jì)----多功能數(shù)字時(shí)鐘畢業(yè)設(shè)計(jì)
- 數(shù)字時(shí)鐘設(shè)計(jì)(畢業(yè)論文)
評(píng)論
0/150
提交評(píng)論