單片機(jī)定時(shí)鬧鐘資料._第1頁(yè)
單片機(jī)定時(shí)鬧鐘資料._第2頁(yè)
單片機(jī)定時(shí)鬧鐘資料._第3頁(yè)
單片機(jī)定時(shí)鬧鐘資料._第4頁(yè)
單片機(jī)定時(shí)鬧鐘資料._第5頁(yè)
已閱讀5頁(yè),還剩46頁(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、單片機(jī)定時(shí)鬧鐘一、電路概述該時(shí)鐘電路主要以單片機(jī) AT89S52為核心而設(shè)計(jì)的,通過(guò)單片機(jī)對(duì)信息的分析與處理控制外圍設(shè)備。電路整體設(shè)計(jì)思想是 想把它做成一個(gè)實(shí)用的器件,所以在題目要求的前提下,我們又加入 了星期程序,溫度程序,年、月、日程序以及時(shí)間的12 24轉(zhuǎn)換程序。關(guān)鍵字:單片機(jī)數(shù)碼顯示溫度傳感器光識(shí)電路二、題目分析與方案論證按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定設(shè)計(jì) 系統(tǒng)由復(fù)位模塊、時(shí)鐘模塊、溫度模塊、音樂(lè)模塊、光識(shí)模塊及顯示模塊共五個(gè)模塊組成,后來(lái)在時(shí)鐘模塊的基礎(chǔ)上又加載了日歷、星期的模塊從單片機(jī)AT89S52入手,通過(guò)使用AT89S52的內(nèi)部的可編程定時(shí)器/ 計(jì)數(shù)器,結(jié)合對(duì)外接晶振的調(diào)節(jié)來(lái)

2、確定一個(gè)合適的振蕩周期,從而確定出內(nèi)部的機(jī)器周期。再通過(guò)對(duì)內(nèi)部中斷程序的設(shè)置來(lái)設(shè)計(jì)出時(shí)鐘程 序,即設(shè)計(jì)出了電子時(shí)鐘的核心。根據(jù)題目的要求,我們?cè)O(shè)計(jì)了以下方案:方案一設(shè)計(jì)中加載了年、月、日的設(shè)計(jì),剛開始時(shí)打算用18個(gè)共陽(yáng)數(shù)碼管,考慮到數(shù)碼管太多是畢會(huì)給硬件電路帶來(lái)麻煩,經(jīng)過(guò)考慮后,決定把年、月、日與時(shí)間設(shè)置到一組數(shù)碼管上來(lái),即六個(gè)數(shù)碼管 即能顯示時(shí)間又能顯示年、月、日,這樣一來(lái)就方便了硬件電路;方案二主控芯片使用51系列AT89S52單片機(jī)設(shè)計(jì)時(shí)溫度模塊設(shè)計(jì) 溫度元件用AD590利用AD590以及接口電路把溫度轉(zhuǎn)換成模擬電壓,經(jīng)由ADC0804專換成數(shù)字信號(hào),然后經(jīng)AT89S52處理顯示溫度。但

3、由 于AD590介錢比較貴,且只能轉(zhuǎn)換成模擬電壓,這樣一來(lái)硬件就要增 加更多的器件且又不經(jīng)濟(jì),經(jīng)查找發(fā)現(xiàn)18B20溫度傳感器價(jià)錢便宜且 可以直接把溫度轉(zhuǎn)換成數(shù)字量測(cè)溫范圍為 -55125 度,最大分辨率 可達(dá) 0.0625 度,采用 3 線制與單片機(jī)相連, 減少了外部的硬件電路, 具有低成本和易使用的特點(diǎn),所以我們選擇了18B20溫度傳感器。附18B20溫度傳感器工作原理:DS18B20溫度傳感器是美國(guó) DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器, 與傳統(tǒng)的熱敏電 阻等測(cè)溫元件相比, 它能直接讀出被測(cè)溫度, 并可根據(jù)實(shí)際要求通過(guò) 簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。溫度傳感器

4、DS18B2C采 集溫度信號(hào)送該給單片機(jī)處理, 存儲(chǔ)器通過(guò)單片機(jī)對(duì)某些時(shí)間點(diǎn)的數(shù) 據(jù)進(jìn)行存儲(chǔ);,DS18B20勺性能特點(diǎn)如下:1 、獨(dú)特的單線接口僅需要一個(gè)引腳進(jìn)行通信;2、多個(gè)DS18B2C可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;3 、無(wú)須外部器件;4 、可通過(guò)數(shù)據(jù)線供電,電壓范圍為 3.0-5.5V ;5 、零待機(jī)功耗;6 、溫度以 9 或 12 位數(shù)字量讀出;7 、用戶可定義的非易失性溫度報(bào)警設(shè)置;8 、報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件) 的器件;9 、負(fù)電壓特性,電源極性接反是,溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作三、系統(tǒng)總體結(jié)構(gòu)框圖按鍵功能a 鍵:P2.1 口

5、 12-24 轉(zhuǎn)換b 鍵:P2.3 口調(diào)整定時(shí)、計(jì)時(shí)的時(shí)、調(diào)整年c 鍵:P2.5 口調(diào)整計(jì)時(shí)的秒和定時(shí)狀態(tài)及日d 鍵:P2.7 口判斷定時(shí)到否e 鍵:P2.0 口調(diào)整星期f 鍵:P2.2 口定時(shí)、計(jì)時(shí)轉(zhuǎn)換g 鍵:P2.4 口調(diào)整定時(shí)、計(jì)時(shí)的秒和判斷定時(shí)狀態(tài)、調(diào)整日h 鍵:P2.6 口調(diào)整定時(shí)的報(bào)警音樂(lè)、省電模式i 鍵:復(fù)位鍵j 鍵:P3.6 口年、月、日的顯示四、主要電路原理與設(shè)計(jì)(1)系統(tǒng)硬件電路的設(shè)計(jì):電路是由控制部分和顯示部分兩大部分組成。利用單片機(jī)程序進(jìn)行控 制,單片機(jī)以晶體振蕩器的振蕩周期(或外部引入的時(shí)鐘周期)為最小 的時(shí)序單位,片內(nèi)的各種微操作都以此周期為時(shí)序基準(zhǔn)。振蕩頻率二分頻

6、后形成狀態(tài)周期或稱s周期,所以,1個(gè)狀態(tài)周期包含有2個(gè)振 蕩周期。振蕩頻率foscl2分頻后形成機(jī)器周期MC所以,1個(gè)機(jī)器 周期包含有6個(gè)狀態(tài)周期或12個(gè)振蕩周期。1個(gè)到4個(gè)機(jī)器周期確 定一條指令的執(zhí)行時(shí)間,這個(gè)時(shí)間就是指令周期。AT89S52單片機(jī)指 令系統(tǒng)中,各條指令的執(zhí)行時(shí)間都在 1個(gè)到4個(gè)機(jī)器周期之間。,并通過(guò)數(shù)碼管進(jìn)行顯示單片機(jī)普遍采用鎖相環(huán)技術(shù),使單片機(jī)的時(shí)鐘頻率可由程序控制。鎖相環(huán)允許用戶在片外使用頻率較低的晶振, 可以很大地減小板級(jí)噪聲;而且,由于時(shí)鐘頻率可由程序控制,系統(tǒng) 時(shí)鐘可以在一個(gè)很寬的范圍內(nèi)調(diào)整,總線頻率往往能升得很高。但是, 使用鎖相環(huán)也會(huì)帶來(lái)額外的功率消耗。單就時(shí)

7、鐘方案來(lái)講,使用外部晶振且不使用鎖相環(huán)是功率消耗最小的一種。AT89S52單片機(jī)的時(shí)鐘信號(hào)通常用兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。在引腳XTAL1和XTAL2外接晶體振蕩器(簡(jiǎn)稱晶振)或陶瓷諧振器,就 構(gòu)成了內(nèi)部振蕩方式。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng) 外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。 內(nèi)部振蕩方 式的外部電路如下圖所示。圖中,電容器C01, C02起穩(wěn)定振蕩頻率、快速起振的作用,其電容 值一般在5-30pF。晶振頻率的典型值為12MH2采用6MHz的情況也 比較多。內(nèi)部振蕩方式所得的時(shí)鐘情號(hào)比較穩(wěn)定, 實(shí)用電路中使用較 多。外部振蕩方式是把外部已有的時(shí)

8、鐘信號(hào)引入單片機(jī)內(nèi)。 這種方式適宜 用來(lái)使單片機(jī)的時(shí)鐘與外部信號(hào)保持同步。 外部振蕩方式的外部電路 如下圖所示如圖所示:+5V012 '1012 '19012 1dhcgSpeakerl.7kS47NCD4515BCNA B C D30.0047U0.1U18LM386N-1AT89S52D104J2.000IDN-18b20 +5vLED2BridgeT U OD NG0 1 11 45Y Y Y Y Y Y3300UF4810943651J_9V/5Wdhcga b c d53l0 12 3 A A A AP N NPP P PP 0)A 01 / D D T T )X X

9、 N N 0 1 XT 舅05)D .24 5 6 7 1 1 1 1E333333 33 PPPPRPPPPPPPPATT sX VGNDI GNDI000UFGNDL7805104J1GND11各模塊分析: 顯示模塊電路先通過(guò)電源電路送出+5V電壓,單片機(jī)AT89S52通 過(guò)74LS47和CD4515(416譯碼器)驅(qū)動(dòng)數(shù)碼管顯示數(shù)值,顯示部 分采用普通共陽(yáng)極數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路???慮到一次掃描 12位數(shù)碼管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí)分兩排顯 示,一排顯示時(shí)間和年月日,一排顯示星期和溫度, 共陽(yáng)極數(shù)碼管 中 8個(gè)發(fā)光二極管的陽(yáng)極(二極管正端)連在一起。通常,公共陽(yáng)極

10、 接高電平(一般接電源) ,其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū) 動(dòng)電路的輸入端為低電平時(shí), 該端所連接的字段導(dǎo)通并點(diǎn)亮。 根據(jù)發(fā) 光字段的不同組合可顯示出各種數(shù)字或字符。 此時(shí),要求段驅(qū)動(dòng)電路 能吸收額定的段導(dǎo)通電流, 還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確 定相應(yīng)的限流電阻。采用動(dòng)態(tài)顯示方式,比較節(jié)省 I/O 口,硬件電路 也較靜態(tài)顯示簡(jiǎn)單, 但其亮度不如靜態(tài)顯示方式, 而且在顯示位數(shù)較 多時(shí),CPU要依次掃描,占用CPU較多時(shí)間。為了提供共陽(yáng)LED數(shù)碼管的驅(qū)動(dòng)電壓,用三極管 9012作電源驅(qū)動(dòng) 輸出。米用12MHz晶振,有利于提高秒計(jì)時(shí)的精確性。三極管米用 9012。數(shù)碼管采用紅色的共陽(yáng)型

11、LED數(shù)碼管,亮度高些,因?yàn)槭菕呙?的顯示方式,所以各個(gè)數(shù)碼管的 abcdefg 各腳米用了總線并聯(lián) , 改動(dòng) 510 歐姆的電阻可以改變顯示亮度;<>0&bc3ufg'>pD(a)«m列fiff視圖(b)*陽(yáng)極結(jié)構(gòu)共陰極結(jié)椅時(shí)鐘模塊利用芯片內(nèi)部的振蕩器,然后在引腳XTAL1和引腳 XTAL2兩端接晶體諧振器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出 的脈沖直接送入內(nèi)部的時(shí)鐘電路,如圖外接晶振時(shí),C1和C2的值通常選擇30pF; C1、C2對(duì)頻率有微調(diào)作用,晶體諧振器的頻率12MHz 為了減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和 電容應(yīng)盡可能

12、安裝得與單片機(jī)芯片靠近。設(shè)置了12 24兩種顯示狀態(tài),調(diào)整計(jì)時(shí)的按鍵、設(shè)置定時(shí)的按鍵且定時(shí)設(shè)置了3次定時(shí)、還另加載了星期、年、月、日的調(diào)整及閏年的自動(dòng)調(diào)整;溫度模塊一一主要由18B20通過(guò)單片機(jī)AT89S52中的溫度程序不斷的 檢測(cè)溫度來(lái)顯示溫度溫度傳感器 DS18B20采集溫度信號(hào)送該給單片 機(jī)處理,存儲(chǔ)器通過(guò)單片機(jī)對(duì)某些時(shí)間點(diǎn)的數(shù)據(jù)進(jìn)行存儲(chǔ);音樂(lè)模塊一一通過(guò)LM386N-1給揚(yáng)聲器信號(hào)來(lái)發(fā)出音樂(lè),這個(gè)模塊主要是為時(shí)鐘定時(shí)到時(shí)發(fā)出音樂(lè)鬧鈴,而在軟件部分設(shè)置了可以一次設(shè) 置3次定時(shí),每次定時(shí)到時(shí),音樂(lè)程序中編了 6種音樂(lè),它可以自動(dòng) 選擇6種音樂(lè)中的任一音樂(lè)響1分鐘,如果中間不想讓鬧鈴響可以按

13、 一按鍵,鬧鈴就立刻停止復(fù)位模塊一一單片機(jī)復(fù)位電路是使CPU和系統(tǒng)中的其他功能部件都 處在一個(gè)確定的初始狀態(tài),并從該狀態(tài)開始工作,例如復(fù)位后PC=00OOH,使單片機(jī)從第一個(gè)單元取指令。無(wú)論是在單片機(jī)剛接上電源時(shí), 還是斷電后或者發(fā)生故障后都要復(fù)位;單片機(jī)的復(fù)位操作使單片機(jī)進(jìn) 入初始化狀態(tài),其中包括使程序計(jì)數(shù)器 PC= 0000H這表明程序從0 000H地址單元開始執(zhí)行。單片機(jī)冷啟動(dòng)后,片內(nèi)RAM為隨機(jī)值,運(yùn)行中的復(fù)位操作不改變片內(nèi) RAME中的內(nèi)容,21個(gè)特殊功能寄存器 復(fù)位后的狀態(tài)為確定值,見下表。值得指出的是,記住一些特殊功能寄存器復(fù)位后的主要狀態(tài),對(duì)于了解單片機(jī)的初態(tài),減少應(yīng)用程序中的

14、韌始化部分是十分必要的。說(shuō)明:表中符號(hào)*為隨機(jī)狀態(tài);A= OOH,表明累加器已被清零;特殊功能寄初始狀特殊功能寄初始狀存器態(tài)存器態(tài)A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0P3FFHSBUF不定IP*00000BSCON00HIE0*00000BPCON0*BPSV 00H,表明選寄存器0組為工作寄存器組;SP= 07H,表明堆棧指針指向片內(nèi)RAM 07H字節(jié)單元,根據(jù)堆棧操作的先加后壓法則,第一個(gè)被壓入的內(nèi)容寫入到08H單元中;Po-P3= FFH表明已向各端口線寫入1,此時(shí),各端口既可用于輸

15、入 又可用于輸出;IP = XXX 00000B,表明各個(gè)中斷源處于低優(yōu)先級(jí);IE = 0XX 00000B,表明各個(gè)中斷均被關(guān)斷;系統(tǒng)復(fù)位是任何微機(jī)系統(tǒng)執(zhí)行的第一步,使整個(gè)控制芯片回到默認(rèn)的 硬件狀態(tài)下。51單片機(jī)的復(fù)位是由RESE引腳來(lái)控制的,此引腳與 高電平相接超過(guò)24個(gè)振蕩周期后,51單片機(jī)即進(jìn)入芯片內(nèi)部復(fù)位狀 態(tài),而且一直在此狀態(tài)下等待,直到 RESE引 I腳轉(zhuǎn)為低電平后,才檢 查EA引腳是高電平或低電平,若為高電平則執(zhí)行芯片內(nèi)部的程序代 碼,若為低電平便會(huì)執(zhí)行外部程序。光識(shí)模塊一一同樣也是為定時(shí)服務(wù)的,只要定時(shí)到,組成心字的18只發(fā)光二極管就會(huì)按程序先做左移位,再全亮全滅3次,然后

16、再右移, 再全亮全滅3次如此循環(huán)1分鐘;AT89S52P1 安全省電模式電源電路上裝了保險(xiǎn)管只要電流大于額定電流保 險(xiǎn)就斷來(lái)保護(hù)電路,省電模式:不看時(shí)顯示不亮,看時(shí),按下一鍵顯 示就亮,盡量達(dá)到人性化。五 、 軟件系統(tǒng)設(shè)計(jì) 計(jì)時(shí)程序是實(shí)現(xiàn)電子時(shí)鐘的核心內(nèi)容,本程序用中斷 time0 來(lái)控制, 計(jì)時(shí)顯示的單元從 50h開始,50h二秒的個(gè)位,51h二秒的十位,52h= 分的個(gè)位,53h二分的十位,54h二時(shí)的個(gè)位,55h=時(shí)的十位org 000bhjmp time0mov tmod,#00010001bmov ie,#10001010bmov ip,#00000010bmov th0,#(655

17、36-2000)/256mov tl0,#low(65536-2000)mov 4fh,#02;兩個(gè)中斷 250次為 1 秒定時(shí)報(bào)警程序 作用是判斷時(shí)間是否與設(shè)置的鬧鐘時(shí)間相等,如相等則開啟鬧鐘。 單片機(jī)內(nèi)定時(shí)振鈴開關(guān)使用軟件開關(guān), 即用標(biāo)志寄存器, 且程序設(shè)置 了 3次定時(shí),可見要使電子時(shí)鐘定時(shí)打鈴,必須同時(shí)具備兩個(gè)條件, 第一:定時(shí)振鈴開;第二:當(dāng)前定時(shí)項(xiàng)數(shù)不為 0 項(xiàng)。 因?yàn)橐闺娮訒r(shí)鐘定時(shí)打鈴, 必須同時(shí)具備上述的兩個(gè)條件, 所以在單片機(jī)執(zhí)行查 詢定時(shí)各項(xiàng)的程序之前,主程序會(huì)首先查詢這兩個(gè)條件是否同時(shí)滿 足,如果滿足的話,則進(jìn)行一輪查詢,所謂一輪查詢定時(shí),即將當(dāng)前 時(shí)間與定時(shí)各項(xiàng)一一比

18、較,看是否相符,如果查到某項(xiàng)相符,則調(diào)用 音樂(lè)程序。每查完一項(xiàng),寄存器中的值會(huì)自動(dòng)減1(即為定時(shí)時(shí)間的項(xiàng)數(shù))。當(dāng)定時(shí)時(shí)間的項(xiàng)數(shù)值自動(dòng)減為0時(shí),則表示這一輪查詢定時(shí) 時(shí)間完畢,只要條件允許(定時(shí)音樂(lè)開且定時(shí)項(xiàng)數(shù)不為0),有可以進(jìn)行一輪新的查詢定時(shí)時(shí)間。定時(shí)1: 33h二分,34h二時(shí),定時(shí)2: 35h二分,36h二時(shí),定時(shí)3: 37h= 分,38h二時(shí),定時(shí)狀態(tài)=39h;定時(shí)顯示的單元從60h開始,60h=定時(shí) 狀態(tài),61h二此時(shí);定時(shí)狀態(tài)的音樂(lè)種類,62h二分的個(gè)位,63h二分的十 位;64h=時(shí)的個(gè)位,65h=時(shí)的十位溫度程序:57山=溫度的十位,58h=溫度的個(gè)位,wen du:CALL

19、REST;調(diào)復(fù)位MOV A,#0CCHMOV A,#00HCALL WRITECALLWRITE 調(diào) 寫程序MOVA,#00HMOVA,#4EHCALLWRITECALL WRITEMOV A,#7FHCALL WRITECALL RESTMOV A,#0CCHCALL WRITEMOV A,#44HCALL WRITEMOV R0,#20LOOP5:MOV R1,#100LOOP6:MOV R2,#250DJNZ R2,$DJNZ R1,LOOP6DJNZ R0,LOOP5MOV A,#0CCHCALL WRITEMOV A,#0BEHCALL WRITECALL READ2 ;調(diào)讀程序MO

20、V A,#0ECHCALL WRITECALL HUANclr 20h.3 retCALL REST開始的個(gè)位,51h二秒的十位,52h=始化初*jmp main;分的*個(gè)位,53h二分的十位,54h=時(shí)的org OOOOh;計(jì)時(shí)個(gè)位,55h二時(shí)的十位,56h=顯示的單元從50h開始,50h二秒orgOOObh;星期,57h二溫度的十位,58山=溫度的的十位個(gè)位,30h二秒,31h=分, 32h=時(shí),mov ip,#00000010b期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位定時(shí) 1: 33h=分, 34h二時(shí),movjmp time0;定時(shí)th0

21、,#(65536-2000)/256期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位2: 35h=分, 36h二時(shí),定時(shí) 3: 37h=mov期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位分,38h二時(shí),定時(shí)狀態(tài)=39htl0,#low(65536-2000)org 001bhmov4fh,#02; 兩 個(gè)中斷期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位*主程25jmp time1期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位*

22、 main:mov r0,#00;等待期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位djnz r0,$movsp,#6ah時(shí)顯示的單元從 60h 開始,60h=mov4eh,#00;光報(bào)警定時(shí)狀態(tài),61h二此時(shí)mov2dh,#250;中斷 250 次期,57h二溫度的十位,58山=溫度的的十位期,57h二溫度的十位,58山=溫度的的十位mov tmod,#00010001b ; 定時(shí)狀態(tài) 的音樂(lè)種類,62h二分的個(gè)位,63h= 分的十位movie,#10001010b;64h=時(shí)的mov2fh,#00h;設(shè)置計(jì)時(shí)顯期,57h二溫度的十位,58山=溫度的

23、的十位期,57h二溫度的十位,58山=溫度的的十位,65h=示數(shù)碼管的編號(hào)mov 39h,#01h;mov2eh,#00h;設(shè)置定時(shí)顯設(shè)置定時(shí)狀態(tài)初始示數(shù)值碼管mov 3ah,#01h;設(shè)置定時(shí)狀的編態(tài) 1 時(shí)音號(hào)樂(lè)的初始mov24h,#00h;設(shè)置年月日值顯示數(shù)碼mov3bh,#02h;管的編號(hào)設(shè)置定時(shí)mov30h,#00h;設(shè)置時(shí)間的狀態(tài) 2 時(shí)初值音樂(lè)的初mov31h,#00h始值mov32h,#12hmov3ch,#03h;mov56h,#01h;設(shè)置定時(shí)設(shè)置星期初值狀態(tài) 3 時(shí)mov33h,#00h;音樂(lè)的初設(shè)置定時(shí)初值始值mov34h,#01hmov21h,#00h;mov35h,

24、#00h設(shè)置年初mov36h,#02h值,00 表mov37h,#00h示 2000mov38h,#03h年mov22h,#01h;設(shè)置月初值mov23h,#01h;設(shè)置日初值setb20h.0;12,24 標(biāo)志位,1 表示 12 小時(shí)制, 0 表示 24 小時(shí)制setb 20h.1; 定 時(shí),計(jì)時(shí)標(biāo)志位, 1 表示計(jì)時(shí), 0 表示定 時(shí)clr 20h.2; 定時(shí) 到否標(biāo)志位,1 表示到, 0 表示不到setb 20h.3; 是否 允許檢測(cè)溫 度標(biāo)志位,1 表示允許clr 20h.4;年標(biāo)志位, 1 表示閏年setb 20h.5;1 表示 31 天, 0 表示 30天clr 20h.6;1表示

25、顯示年月日setb p3.0;上下午標(biāo)志位,1表示上午,0表示下午clr p1setb tr0*星 期 設(shè) 置 程 序*start: jb p2.0,q1;調(diào)整星期call del; 消除抖 動(dòng)mov a,56hadd a,#01hcjne a,#07h,z1mov 56h,#08hadda,#12hjmp a1daaz1:cjne a,#09h,z2cjnea,#24h,b3mov 56h,#01hmov32h,#00hjmp a1setbp3.0z2:mov 56h,ajmpa2a1:call delb3:mov 32h,ajnb p2.0,a1setbp3.0jmp startjmpa2

26、* 設(shè)置 12-24 小b1:mov a,32h; 將 24 小時(shí)制時(shí)轉(zhuǎn)換程序轉(zhuǎn) 換 為 12*小時(shí)制*cjnea,#00h,b7q1:jb p2.1,q2;mov32h,#12h12,24 小時(shí)制轉(zhuǎn)換clrp3.0call del; 消除抖動(dòng)jmpa2jnb 20h.0,b1b7:cjne a,#20h,b8jnb p3.0,b2; 將 12 小時(shí)制mov32h,#08h轉(zhuǎn) 換 為 24clrp3.0小時(shí)制jmpa2jmp a2 b8:cjne a,#21h,b9b2:mov a,32hmov 32h,#09hclr p3.0jnbp2.2,a3jmp a2jmpstartb9:cjne a

27、,#12h,b4q3:jbp2.3,q4;調(diào)jmp a2整定時(shí),b4:jnc b5計(jì)時(shí)的jmp a2時(shí),年b5:subb a,#12hcalldel;消除抖mov 32h,a動(dòng)clr p3.0jnb20h.6,c00a2:cpl 20h.0callyearyearb6:call deljmpa4jnb p2.1,b6c00:jnb20h.1,c1jmp startjb 20h.0,c2;計(jì)* 定時(shí)計(jì)時(shí)調(diào)整程時(shí)調(diào)整序mova,32h*adda,#01h*daaq2:jb p2.2,q3; 定時(shí),cjnea,#24h,c3計(jì)時(shí)轉(zhuǎn)換mov32h,#00hcall del;jmpa4cpl 20h.1

28、c3:mov 32h,aa3:call deljmpa4c2:mov a,32h add a,#01h da a mov 32h,a cjne a,#13h,c4 mov 32h,#01h cpl p3.0 jmp a4c4:mov 32h,ajmp a4c1:mov a,39h; 定時(shí) 調(diào)整cjne a,#01h,c5 mov r0,#34h jmp c10c5:cjne a,#02h,c6 mov r0,#36h jmp c10c6:mov r0,#38hc10:jb 20h.0,c7mov a,r0add a,#01hda acjne a,#24h,c8mov r0,#00hjmp a4

29、c8:mov r0,ajmp a4c7:mov a,r0add a,#01hda acjne a,#13h,c9mov r0,#01hjmp a4c9:mov r0,aa4:call deljnb p2.3,a4jmp startq4:jb p2.4,q5; 調(diào) 整定時(shí),計(jì) 時(shí)的分,月 call deljnb 20h.6,d00call yueyued00:jnb 20h.1,d1 mov a,31h;計(jì)時(shí)cjne a,#60h,d6movr0,#00h分調(diào)整jmpa5adda,#01hd6:mov r0,adaaa5:calldelcjnea,#60h,d2jnbp2.4,a5mov31h,

30、#00hjmpstartjmpa5q5:jbp2.5,q6; 調(diào) 整d2:mov31h,a計(jì)時(shí)的秒和jmpa5定時(shí)的狀態(tài)d1:mova,39h ;定時(shí)日分調(diào)整calldelcjnea,#01h,d3jnb20h.6,e00movr0,#33hcallrijmpd5jmpa6d3:cjnea,#02h,d4e00:jnb20h.1,e1movr0,#35hmova,30h; 調(diào)整計(jì)jmpd5時(shí)的秒d4:movr0,#37hadda,#01hd5:mova,r0daaadda,#01hcjnea,#60h,e2jmp a5da amov30h,#00hcplp3.4jmpa6jmpi3e2:mov

31、30h,agh:mova,39hjmpa6cjnea,#01h,i1e1:mova,39h;調(diào)整定mova,3ah時(shí)狀態(tài)adda,#01hadda,#01hmov3ah,adaacjnea,#07h,i3cjnea,#04h,e3mov3ah,#01hmov39h,#01hjmpi3jmpa6i1:cjnea,#02h,i2e3:mov39h,amova,3bha6:calldeladda,#01Hjnbp2.5,a6mov3bh,ajmpstartcjnea,#07h,i3* 調(diào)整定時(shí)的報(bào)mov3bh,#01h警音樂(lè),省電模式j(luò)mpi3*i2:mova,3ch*adda,#01hq6:jbp

32、2.6,q7mov3ch,acalldelcjnea,#07h,i3jnb20h.1,ghmov3ch,#01hjnbp2.6,i3jmp yearjmpstartnian0:cjne*定時(shí)報(bào)警a,#04h,nian1*jmp yearq7:jnb20h.2,q8nian1:cjnecallyinyuea,#08h,nian2jmpstartjmp yearq8:jnb20h.3,q9nian2:cjnecallwendu;檢測(cè)a,#12h,nian3溫度jmp yearjmpstartnian3:cjneq9:jbp3.6,q10a,#16h,nian4cpl20h.6jmp yearq11

33、:calldelnian4:cjnejnbp3.6,q11a,#20h,nian5q10:jmp startjmp year*閏年判斷nian5:cjne*a,#24h,nian6*jmp yearnian:mov a,21hnian6:cjnei3:call dela,#00h,nian0cjnea,#28h,nian7jmp year nian7:cjne a,#32h,nian8jmp year nian8:cjne a,#36h,nian9jmp year nian9:cjne a,#40h,nian10jmp year nian10:cjne a,#44h,nian11jmp yea

34、r nian11:cjne a,#48h,nian12jmp year nian12:cjne a,#52h,nian13jmp year nian13:cjne a,#56h,nian14jmp yearnian14:cjnea,#60h,nian15 jmp yearnian15:cjnea,#64h,nian16 jmp yearnian16:cjnea,#68h,nian17 jmp yearnian17:cjnea,#72h,nian18 jmp yearnian18:cjne a,#76h,nian19 jmp yearnian19:cjnea,#80h,nian20 jmp ye

35、arnian20:cjnea,#84h,nian21 jmp yearnian21:cjnea,#88h,nian22yue2:cjnejmp yeara,#11h,yue3nian22:cjneyue4:clr 20h.5a,#92h,nian23jmp yue5jmp yearyue3:setb 20h.5nian23:cjneyue5:reta,#96h,nian24yearyear:mov a,21h;year:setb 20h.41jmp year1add a,#01hnian24:clr 20h.4da ayear1:retmov 21h,ayue:mov a,22h; 大月 31

36、 天,小月ret30天yueyue:mov a,22h;cjne1a,#04h,yue0add a,#01hjmp yue4da ayue0:cjnemov 22h,aa,#06h,yue1cjnejmp yue4a,#13h,yueyue0yue1:cjnemov 22h,#01ha,#09h,yue2 yueyuye0:ret年加月加jmp yue4ri:mov a,23h;日加1adda,#01hadda,#01hdaadaamov23h,amov30h,acjnea,#29h,ri0cjnea,#60h,f4mova,22hmov30h,#00hcjnea,#02h,ri1setb20

37、h.3;允許檢callnian測(cè)溫度jb20h.4,ri1mova,31h;分加mov23h,#01h一jmpri1adda,#01hri0:cjnea,#31h,ri2daacallyuemov31h,ajb20h.5,ri1cjnea,#60h,f4mov23h,#01hmov31h,#00hjmpri1mova,32h;時(shí)加ri2:cjnea,#32h,ri1一mov23h,#01hadda,#01hri1:retdaa* 計(jì) 時(shí) 子 程 序mov32h,a*jb20h.0,f1jishi:mov a,30h;秒加cjne a,#24h,f4mov32h,#00hcjnea,34h,f8

38、jmpf2setb20h.2f1:cjnea,#13h,f4mova,3ahmov32h,#01hmov2ch,acplp3.0jmpa7jnbp3.0,f4f8:mova,31hf2:mova,56h;星f5:cjnea,35h,f6期加一mova,32hadda,#01hcjnea,36h,f9mov56h,asetb20h.2cjnea,#07h,f3mova,3bhmov56h,#08hmov2ch,ajmpf4jmpa7f3:cjnea,#09h,f4f9:mova,31hmov56h,#01hf6:cjnea,37h,f7f4:callday;更新年mova,32h月日cjnea,

39、38h,f7jb p2.7,f7;定時(shí)到否setb20h.2子程序段mova,3chmova,31hmov2ch,acjnea,33h,f5jmpa7mov a,32hf7:clr 20h.2a7:retyuey:mov a,22h;月加day:mov a,23h; 日加1adda,#01hdaamov23h,acjnea,#29h,rri0mova,22hcjnea,#02h,wancallnianjb20h.4,wanmov23h,#01hjmpyueyrri0:cjnea,#31h,rri21add a,#01hda amov 22h,acjne a,#13h,wanmov 22h,#0

40、1hmov a,21h; 年加1add a,#01hda amov 21h,awan:ret* 計(jì)時(shí)掃描子程 序*a7:retyuey:mov a,22h;月加call yuejb 20h.5,wan mov 23h,#01h jmp yuey rri2:cjne a,#32h,wanmov 23h,#01h*scan1:mov r0,#2fh inc r0 cjne r0,#0ch,g1mov r0,#00ha7:retyuey:mov a,22h;月加g1:mov a,r0orl a,r1add a,#50h mov r1,a mov a,r0 swap a orl a,r1mov p0,

41、aret* 定時(shí)掃 序*scan2:mov r0,#2ehinc r0cjner0,#06h,g2movr0,#00hg2:mova,r0adda,#60hmovr1,amova,r0mov p0,a retscan3:mov r0,#24h; 定時(shí)掃描 子程序inc r0 cjner0,#06h,gg2mov r0,#00hgg2:mov a,r0 add a,#40h mov r1,a mov a,r0 swap a orl a,r1 mov p0,a ret* 計(jì)時(shí)顯示子程序*xianshi1:mov r1,#50hswap amov a,30hmov b,#10hxianshi2: m

42、ov a,39hdivabmov60h,amovr1,bcjnea,#01h,h1incr1mova,3ahmovr1,amov61h,aincr1movr1,#62hmova,31hmova,33hmovb,#10hmovb,#10hdivabdivabmovr1,bmovr1,bincr1incr1movr1,amovr1,aincr1incr1mova,32hmova,34hmovb,#10hmovb,#10hdivabdivabmovr1,bmovr1,bincr1incr1movr1,amovr1,aretjmph3* 定 時(shí) 顯 示 子 程 序 h1:cjne a,#02h,h2*

43、 mov a,3bhmov 61h,amov r1,bmov r1,#62hinc r1mov a,35hmov r1,amov b,#10hinc r1div abmov a,38hmov r1,bmov b,#10hinc r1div abmov r1,amov r1,binc r1inc r1mov a,36hmov r1,amov b,#10hh3:retdiv abxianshi3:mov r1,#40h; 計(jì)mov r1,b時(shí)顯示子程序inc r1mov a,21hmov r1,amov b,#10hjmp h3div abh2:mov a,3chmov r1,bmov 61h,a

44、inc r1mov r1,#62hmov r1,amov a,37hinc r1mov b,#10hmov a,22hdiv abmov b,#10hdiv abdjnz 4fh,h4mov r1,bmov 4fh,#02inc r1call jishimov r1,ah4:jnb 20h.6,hh4inc r1call xianshi3mov a,23hcall scan3mov b,#10hjmp h6div abhh4:jb 20h.1,h5mov r1,bcall xianshi2inc r1call scan2mov r1,ajmp h6reth5:call xianshi1time

45、0:movcall scan1th0,#(65536-2000)/256h6:pop pswmovpop atl0,#low(65536-2000)retipush adel:mov r6,#40push pswj1:mov r5,#248setb rs0djnz r5,$clr rs1djnz r6,j1djnz 2dh,h4retmov 2dh,#250*音樂(lè)程序yinyue:push ar:cjne a,#05,tpush pswmovsetb rs1dptr,#song5clr rs0jmp pumain1:mov 2bh,#00ht:movm:mov a,2chdptr,#song6cjne a,#01,qpu:jnb 20h.2,jjmovmov a,2bhdptr,#song1movc a,a+dptrjmp pumov r0,aq:cjne a,#02,wjz end0movanl a,#0fhdptr,#song2mov r7,ajmp pumov a,r0w:cjne a,#03,eswap amovanl a,#0fhdptr,#song3jnz singjmp puclr tr1e:cjne a,#04,rjmp dd1movsing:dec adptr,#song4mov 2ah,a*jmp pumovmo

溫馨提示

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