單片機(jī)數(shù)字音樂鬧鐘設(shè)計
《單片機(jī)數(shù)字音樂鬧鐘設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)數(shù)字音樂鬧鐘設(shè)計(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
摘要 單片機(jī)自20世紀(jì)70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51 單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。 本設(shè)計是以AT89C51 芯片為核心,輔以必要的外圍電路,設(shè)計了一個結(jié)構(gòu)簡單的數(shù)字音樂鬧鐘,它由5V 直流電源供電。在硬件方面,除了CPU 外,使用六個七段LED 數(shù)碼管來進(jìn)行顯示,LED 采用的是動態(tài)掃描顯示,通過LED 能夠較為準(zhǔn)確地顯示時、分、秒。四個簡單的按鍵實現(xiàn)對時間的調(diào)整。軟件方面采用匯編語言編程。整個電子鐘系統(tǒng)能完成時間的顯示、調(diào)時和定時鬧鐘的功能。 選用單片機(jī)最小系統(tǒng)應(yīng)用程序,添加比較程序、時間調(diào)整程序及音樂程序。通過時間比較程序觸發(fā)蜂鳴,實現(xiàn)鬧鐘功能,完成設(shè)計所需求的軟件環(huán)境。測試程序的可行性并用Proteus 進(jìn)行仿真。 關(guān)鍵字:單片機(jī) LED 鬧鐘 目錄 摘要 第一章 概述 1 第二章 系統(tǒng)總體方案及硬件設(shè)計 2 2.1總體設(shè)計 2 2.3系統(tǒng)時鐘電路設(shè)計 2 2.3系統(tǒng)復(fù)位電路的設(shè)計 2 2.4鬧鐘指示電路設(shè)計 2 2.5電子鬧鐘的顯示電路設(shè)計 3 第三章 軟件設(shè)計 4 3.1概述 4 3.2主模塊的設(shè)計 4 3.3基本顯示模塊設(shè)計 5 3.4時間設(shè)定模塊設(shè)計 5 3.5鬧鈴功能的實現(xiàn) 6 第四章 PROTEUS軟件仿真 8 總結(jié) 9 致謝 10 參考文獻(xiàn) 11 附錄:源程序代碼 12 第1章 概述 本設(shè)計數(shù)字音樂鬧鐘的設(shè)計,由單片機(jī)AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成的一個單片機(jī)數(shù)字音樂鬧鐘。 定時鬧鐘設(shè)計可采用數(shù)字電路實現(xiàn),也可以采用單片機(jī)來完成。定時鬧鐘是用數(shù)字集成電路構(gòu)成的,用數(shù)碼管顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。單片機(jī)具有集成度高、功能強(qiáng)、通用性好、特別是它能耗低、價格便宜、可靠性高、抗干擾能力強(qiáng)和使用方便等獨特的優(yōu)點,所以單片機(jī)現(xiàn)在廣泛的應(yīng)用到家用電器、機(jī)電產(chǎn)品、兒童玩具、機(jī)器人、辦公自動化產(chǎn)品等領(lǐng)域。所以在該設(shè)計中采用單片機(jī)AT89C51來完成定時鬧鐘的設(shè)計。它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B 的RAM、32條I/O口線、2個16位定時計數(shù)器、5個中斷源、一個全雙工串行口等。AT89C51單片機(jī)結(jié)合七段顯示器設(shè)計的簡易定時鬧鈴時鐘,可以設(shè)置現(xiàn)在的時間及顯示鬧鈴設(shè)置時間,若鬧鈴時間到則播放音樂。按K4鍵退出音樂播放并返回時間顯示界面。否則音樂一直播放。 設(shè)計內(nèi)容包括了秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分的設(shè)計。采用四個開關(guān)來控制定時鬧鐘的工作狀態(tài),分別為:K1、設(shè)置顯示時間和鬧鐘的小時;K2、設(shè)置顯示時間的小時以及設(shè)置鬧鐘的開關(guān);K3、設(shè)置分鐘和鬧鐘的分鐘;K4、設(shè)置完成退出。 設(shè)計準(zhǔn)備中根據(jù)具體的要求,查找資料,然后按要求根據(jù)已學(xué)過的時鐘程序編寫定時鬧鐘的程序,依據(jù)程序利用Proteus軟件進(jìn)行了仿真試驗,對出現(xiàn)的問題進(jìn)行分析和反復(fù)修改源程序,最終得到正確并符合要求的結(jié)果。 第2章 系統(tǒng)總體方案及硬件設(shè)計 2.1 總體設(shè)計 電子鬧鐘應(yīng)包括秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分。 按鍵功能說明:K1、設(shè)置顯示時間和鬧鐘的小時;K2、設(shè)置顯示時間的小時以及設(shè)置鬧鐘的開關(guān);K3、設(shè)置分鐘和鬧鐘的分鐘;K4、設(shè)置完成退出。 電子鬧鐘的系統(tǒng)框圖如下所示: AT89C51 復(fù)位、時鐘等電路 按鈕電路 6位數(shù)碼管顯示電路 鬧鈴聲指示電路 電源系統(tǒng) 圖1 電子鬧鐘的主電路指的是圖1中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機(jī)的設(shè)計具體地說有:1)系統(tǒng)時鐘電路設(shè)計;2)系統(tǒng)復(fù)位電路設(shè)計;3)按鍵與按鈕電路設(shè)計;4)鬧鈴聲指示電路設(shè)計。 2.2 系統(tǒng)時鐘電路設(shè)計 對于時間要求不是很高的系統(tǒng),只要按圖進(jìn)行設(shè)計就能使系統(tǒng)可靠起振并穩(wěn)定運行。但由于原理圖中的C1、C2電容起著系統(tǒng)時鐘頻率微調(diào)和穩(wěn)定的作用,因此,在本鬧鐘系統(tǒng)的實際應(yīng)用中一定要注意正確選擇參數(shù)(3010 PF),并保證對稱性(盡可能匹配),選用正牌廠家生產(chǎn)的瓷片或云母電容,如果可能的話,溫度系數(shù)要盡可能低。實驗表明,這2個電容元件對鬧鐘的走時誤差有較大關(guān)系。 2.3 系統(tǒng)復(fù)位電路的設(shè)計 智能系統(tǒng)一般應(yīng)有手動或上電復(fù)位電路。復(fù)位電路的實現(xiàn)通常有兩種方式:1)RC復(fù)位電路;2)專用P監(jiān)控電路。前者實現(xiàn)簡單,成本低,但復(fù)位可靠性相對較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對于復(fù)位要求高、并對電源電壓進(jìn)行監(jiān)視的場合,大多采用這種方式。 本次畢業(yè)設(shè)計采用了上電按鈕電平復(fù)位電路。 2.4 鬧鐘指示電路設(shè)計 鬧鈴指示可以有聲或光兩種形式。本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當(dāng)直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3V、5V、6V等系列,以適應(yīng)不同的應(yīng)用需要。鬧鐘電路是用比較器來比較計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài),如果計時系統(tǒng)和定時系統(tǒng)的輸出狀態(tài)相同,則發(fā)出一個脈沖信號,再和一個高頻信號混合,送到放大電路驅(qū)動揚聲器發(fā)聲,從而實現(xiàn)定時鬧響的功能。 2.5 電子鬧鐘的顯示電路設(shè)計 本次課程設(shè)計采用了6位數(shù)碼管顯示電路。在6位LED顯示時,為了簡化電路,降低成本,采用動態(tài)顯示的方式, 6個LED顯示器共用一個8位的I/O, 6位LED數(shù)碼管的位選線分別由相應(yīng)的P2. 0~P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個8位的I/O口控制,即P0口。譯碼顯示電路將“時”、“分”、“秒”計數(shù)器的輸出狀態(tài)靠七段顯示譯碼器譯碼,通過6位LED七段顯示器顯示出來。到達(dá)定時電路時根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實現(xiàn)鬧鈴。校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整的。 第3章 軟件設(shè)計 3.1 概述 軟件設(shè)計的重點在于秒脈沖信號的產(chǎn)生、顯示的實現(xiàn)、以及按鍵的處理等方面?;谲浖拿朊}沖信號通常有延時法和定時中斷法。延時法一般采用查詢方式,在延時子程序前后必然需要查詢和處理的程序,導(dǎo)致誤差的產(chǎn)生,因此其秒脈沖的精度不高;中斷法的原理是,利用單片機(jī)內(nèi)部的定時器溢出中斷來實現(xiàn)。例如,設(shè)定某定時器每100ms中斷1次,則10次的周期為1s。本系統(tǒng)中所使用的晶振頻率為12MHZ。 3.2 主模塊的設(shè)計 主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖2所示: CPU系統(tǒng)初始化 定時0初始化 中斷初始化 串口初始化 顯示待機(jī)指示符 設(shè)定鬧鈴時間 判設(shè)置鬧鈴時間否? 顯示刷新 啟動走時 有關(guān)變量初始化 刷新顯示 判時或分變化否? 秒指示 判1秒到否? 鬧鈴 判是否到鬧鈴時間? 延時 Y Y Y Y 圖 2 3.3 基本顯示模塊設(shè)計 基本顯示模塊設(shè)計的重點是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機(jī)械式傳動,用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。 3.4 時間設(shè)定模塊設(shè)計 時間設(shè)定模塊的設(shè)計要點是按鍵的去抖處理與“一鍵多態(tài)”的處理。即只涉及4個鍵完成了6位時間參數(shù)的設(shè)定。軟件法去抖動的實質(zhì)是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去抖中的延時時間一般參考資料多描述為10ms左右,實際應(yīng)用中,應(yīng)大于20ms,否則,會導(dǎo)致按一次作多次處理,影響程序正常執(zhí)行?!耙绘I多態(tài)”即多功能鍵的實現(xiàn)思想是,根據(jù)按鍵時刻的系統(tǒng)狀態(tài),決定按鍵采取何種動作,即何種功能。 其流程圖如下圖3所示: 設(shè)置鍵嗎? 設(shè)置模塊初始化 將在編參數(shù)送顯示緩沖區(qū) 閃爍標(biāo)志為真? 將當(dāng)前位的顯示代碼置暗代碼 調(diào)基本顯示模塊刷新顯示 設(shè)置鍵嗎? 當(dāng)前編輯位下移(下一位) 當(dāng)前編輯的是分各位? 結(jié)束設(shè)定 +鍵嗎? 根據(jù)當(dāng)前位的性質(zhì)分別進(jìn)行+1處理(含上下限判斷) N N N N N 圖4 3.5 鬧鈴功能的實現(xiàn) 鬧鈴功能的實現(xiàn)涉及到兩個方面:鬧鈴時間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時間設(shè)定模塊的設(shè)計可參照時間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時要進(jìn)行鬧鈴。當(dāng)時十位、時個位、分十位、分個位中任一位發(fā)生改變(進(jìn)位)時,就必須進(jìn)行鬧鈴判別。譯碼顯示電路將“時”、“分”、“秒”計數(shù)器的輸出送到七段顯示譯碼驅(qū)動器譯碼驅(qū)動,通過六個七段LED顯示器顯示出來。鬧鈴電路根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后加上一個高頻或低頻信號送到放大電路驅(qū)動蜂鳴器發(fā)聲實現(xiàn)報時。校時電路是直接加一個脈沖信號到時計數(shù)器或者分計數(shù)器或者秒計數(shù)器來對“時”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。 其流程圖如下所示: 時十位、個位,分十位、個位改變了 設(shè)置鬧鈴標(biāo)志 是否設(shè)置了鬧鈴 清除鬧鈴標(biāo)志 判當(dāng)前時間是設(shè)定時間 中斷返回 中斷返回 Y N Y 鬧鈴判別處理 圖5.1 圖5.2 考慮到實用性,在該電子鐘的設(shè)計中修改定時或調(diào)整時間時采用了閃爍,在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計數(shù)的秒,分,時。 在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時器中斷置標(biāo)志位,再與位選相互結(jié)合的方法來控制調(diào)時或定時中的閃爍。時,分,秒顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對其計數(shù),計數(shù)的同時采用了定時器比較的方法,比較當(dāng)前計數(shù)時間與定時時間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù),鬧鐘響。 第四章 Proteus軟件仿真 本次課程設(shè)計所采用的程序調(diào)試軟件為VM集成調(diào)試軟件,所采用的仿真軟件 Proteus6 Professional軟件。 本次試驗的效果圖如下所示: 性能及誤差分析 該電子鐘有四個按鍵: K1, K2、K3和K4鍵。K1、設(shè)置顯示時間和鬧鐘的小時;K2、設(shè)置顯示時間的小時以及設(shè)置鬧鐘的開關(guān);K3、設(shè)置分鐘和鬧鐘的分鐘;K4、設(shè)置完成退出。經(jīng)測試該電子鐘在軟件的編程過程中所產(chǎn)生的誤差比較小。另外在中斷的過程中,只會在第一次計時時產(chǎn)生時間的偏移,而它所產(chǎn)生累計誤差很小,可以忽略。 仿真部分采用Proteus6 Professional軟件,此軟件功能強(qiáng)大且操作較為簡單,可以很容易的實現(xiàn)各種系統(tǒng)的仿真。 總結(jié) 通過本次畢業(yè)設(shè)計較系統(tǒng)地掌握有關(guān)單片機(jī)控制的設(shè)計思想和設(shè)計方法,主要對AT89C51的結(jié)構(gòu)、功能、內(nèi)部資源等了解并對其進(jìn)行測試和加以應(yīng)用的知識得到學(xué)習(xí)。由于是在我們短學(xué)期實習(xí)之后才來始寫的,我們實習(xí)做的是電子鐘,所以對時鐘有了一定的掌握。我在原來的功能上增加了音樂鬧鐘的功能。。 在本設(shè)計中盡量做到了硬件電路簡單穩(wěn)定,充分發(fā)揮軟件編程的優(yōu)點,減小因元器件精度不夠引起的誤差。 由于時間有限和本身知識水平的發(fā)揮,我們認(rèn)為本系統(tǒng)還有需要改進(jìn)和提高的地方,例如選用更高精度的元器件,硬件電路更加精確穩(wěn)定,軟件測量算法進(jìn)一步的改進(jìn)與完善等。 致謝 雖然這次畢業(yè)設(shè)計的時間不是很長,但畢業(yè)設(shè)計卻是自己獨立思考完成的,首先我對任務(wù)按時間進(jìn)行了分工,每天按時完成任務(wù),再然,課后的創(chuàng)新思考,也成了我近期的參考事項,最后,經(jīng)過不斷的實習(xí)演練,才能確保順利完成優(yōu)質(zhì)的畢業(yè)設(shè)計。因為是自己的單獨設(shè)計,剛開始時,心里總有些緊張與茫然,不知如何入手,但我們的指導(dǎo)老師具有高度的責(zé)任感與敬業(yè)精神,在他們的指導(dǎo)下,我才能順利的完成這項工作,他們在指導(dǎo)我的同時也讓我深深的感受到了生活中的激情與處事方式,我深深的感謝他們對我的栽培。 通過這次畢業(yè)設(shè)計,使我對所學(xué)的理論知識有了實踐的演練,操作能力得到了很大的提高。 我認(rèn)為理論知識畢竟是書本上的,是抽象的,而我們的生活是需要實際操作的,只有通過實際的操作演練與理論相結(jié)合,才能使我們真正的學(xué)到更多我們想象不到的知識,而在這三年的學(xué)習(xí)生活中我們就是缺少了理論和實踐的緊密結(jié)合,而本次畢業(yè)設(shè)計則恰恰像一場及時雨,讓我們通過親身模擬學(xué)會如何把理論知識應(yīng)用于實踐。給了我充分的鍛煉機(jī)會。獲益非淺! 感謝學(xué)校和老師對我們的栽培! 參考文獻(xiàn) 1、潘永雄.新編單片機(jī)原理與應(yīng)用. 西安電子科技大學(xué)出版社,2002年 2、張友德,趙志英,涂時亮.單片機(jī)微型機(jī)原理應(yīng)用與實驗. 復(fù)旦大學(xué)出版社,2000年 3、周航慈、朱兆優(yōu)、李躍忠.智能儀器原理與設(shè)計. 北京航空航天大學(xué)出版社,2005年 4、江秀漢.可編程序控制器原理及應(yīng)用(第二版).西安電子科技大學(xué)出版社,2003年 5、沈慶陽、郭庭吉.單片機(jī)實踐與應(yīng)用.清華大學(xué)出版社,2002年 6、竇振中.單片機(jī)外圍器件實用手冊存儲器分冊.北京航空航天大學(xué)出版社,1998年 7、關(guān)德新,馮文全.單片機(jī)外圍器件實用手冊電源器件分冊.北京航空航天大學(xué)出版社,1998年 8、何立民.單片機(jī)應(yīng)用技術(shù)選編,北京航空航天大學(xué)出版社,1993年 9、李建忠.單片機(jī)原理及運用. 西安電子科技大學(xué)出版社,2001年 10、吳金戎、沈慶陽.8051單片機(jī)實踐與應(yīng)用.清華大學(xué)出版社 ,2001年 11、趙曉安.MCS-51單片機(jī)原理及應(yīng)用.天津大學(xué)出版社,2001年 12、馮建華、趙亮.單片機(jī)應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā). 人民郵電出版社, 2004年 13、何立民.MCS51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計.北京航空航天大學(xué)出版社, 1999年 14、李榮正、陳學(xué)軍.PIC單片機(jī)實驗教程. 北京航空航天大學(xué)出版社,2006年 15、張義和、陳敵北.例說8051.人民郵電出版社,2006年 附錄 源程序代碼 K1 EQU P1.0 ;在程序開始前定義變量 K2 EQU P1.1 K3 EQU P1.2 K4 EQU P1.3 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME ORG 001BH LJMP TIME1 ORG 0100H MAIN:MOV SP,#50H MOV 20H,#00H ;時間 BIN SECOND MOV 21H,#00H ; BIN MINUTE MOV 22H,#00H ; BIN HOUR MOV 23H,#01H ;鬧鈴 BIN MINUTE MOV 24H,#01H ; BIN HOUR MOV 25H,#00H ;定義一個標(biāo)志位 MOV 30H,#00H ;時間 BCD SECOND MOV 31H,#00H ; MOV 32H,#00H ; BCD MINUTE MOV 33H,#00H ; MOV 34H,#00H ; BCD HOUR MOV 35H,#00H ; MOV 36H,#01H ;鬧鈴 BCD MINUTE MOV 37H,#00H ; MOV 38H,#01H ; BCD HOUR MOV 39H,#00H ; MOV TMOD,#11H ;16位計數(shù)器 T0,方式1 MOV TH0,#03CH ;賦初值 MOV TL0,#0B0H MOV IE,#10000111B ;開中斷 T0,EA=1 SETB ET1 SETB ET0 SETB TR0;T0啟動計數(shù) MOV R2,#14H ;計數(shù)器 MOV P2,#0FFH LOOP:LCALL TIMEPRO ; 調(diào)用現(xiàn)在時間與鬧鈴時間比較程序 LCALL DISPLAY1 ; 調(diào)用現(xiàn)在時間顯示子程序 JB K1,M1 ; 判斷按鍵是否按下 LCALL XIAOZHEN1 ; 調(diào)用消抖程序 MOV C,25H.0 JC A1 A1:CLR 25H.0 LCALL SETTIME ; 調(diào)用設(shè)置現(xiàn)在時間子程序 LJMP LOOP M1:JB K2,M2 LCALL XIAOZHEN2 MOV C,25H.0 JC A2 A2:CLR 25H.0 LCALL SETATIME ; 調(diào)用設(shè)置鬧鐘的程序 LJMP LOOP M2:JB K4,M3 A3:LCALL XIAOZHEN3 MOV C,25H.0 JC A4 A4:CLR 25H.0 M3:LJMP LOOP SETTIME: L0 LCALL DISPLAY1 JB K2,L1 LCALL XIAOZHEN4 MOV C,25H.0 JC A5 A5:CLR 25H.0 INC 22H MOV A,22H CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0 L1:JB K3,L2 LCALL XIAOZHEN5 MOV C,25H.0 JC A6 A6:CLR 25H.0 INC 21H MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11:MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A LJMP L0 GO12:MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A LJMP L0 L2:JB K4,L0 LCALL XIAOZHEN3 MOV C,25H.0 JC AX AX:CLR 25H.0 RET SETATIME: LCALL DISPLAY2 ;調(diào)用鬧鐘設(shè)置,鬧鈴響時的顯示程序 N0:LCALL DISPLAY2 JB K3,N1 LCALL XIAOZHEN6 MOV C,25H.0 JC A7 A7:CLR 25H.0 INC 24H MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB K1,N2 LCALL XIAOZHEN7 MOV C,25H.0 JC A8 A8:CLR 25H.0 INC 23H MOV A,23H CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV B,#0AH DIV AB MOV 36H,B MOV 37H,A LJMP N0 GO22:MOV B,#0AH DIV AB MOV 38H,B MOV 39H,A LJMP N0 N2:JB K4,N0 LCALL XIAOZHEN3 MOV C,25H.0 JC A9 A9:CLR 25H.0 RET TIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX XX:LJMP START BK:RET START:JNB K4,S2 MAIN1: MOV 40H,#00H ;設(shè)簡譜碼指針初始值 NEXT: MOV A,40H ;簡譜碼指針暫存累加器A MOV DPTR,#TABLE ;設(shè)簡譜碼 MOVC A,@A+DPTR CJNE A,#00H,PLAY ;取到的簡譜碼不是結(jié)束碼,傳PLAY取節(jié)拍碼 LJMP STOP ;是結(jié)束碼,退出 PLAY: MOV R1,A ;R1暫存簡譜碼 ANL A,#0FH ;取節(jié)拍碼 MOV R2,A MOV A,R1 ANL A,#0F0H ;取音符碼 CJNE A,#00H,MUSIC ;音符碼不為0,調(diào)發(fā)音子程序 CLR TR1 ;音符碼為0,不發(fā)音 LJMP DEL MUSIC:SWAP A DEC A MOV 52H,A ADD A,52H MOV R3,A MOV DPTR,#TABLE1 ;取相應(yīng)計數(shù)值 MOVC A,@A+DPTR MOV TH1,A ;暫存高位字節(jié) MOV 51H,A MOV A,R3 INC A MOVC A,@A+DPTR ;取相應(yīng)計數(shù)值的低位字節(jié) MOV TL1,A ;暫存低位字節(jié) MOV 50H,A SETB TR1 ;啟動定時器 DEL: LCALL DELAY INC 40H ;指向下一個簡譜碼 LJMP NEXT STOP: CLR TR1 ;停止計時器 LJMP MAIN1 TIME1:PUSH ACC ;現(xiàn)場保護(hù) PUSH PSW CPL P3.7 ;P3.7反相輸出,演奏音樂 MOV TL1,50H ;重設(shè)計數(shù)值 MOV TH1,51H POP PSW POP ACC RETI DELAY:MOV R7,#02H ;4/4曲調(diào),演示125ms子程序 DELA1:MOV R6,#125 DELA2:MOV R5,#248 DJNZ R5,$ DJNZ R6,DELA2 DJNZ R7,DELA1 DJNZ R2,DELAY RET S2:LJMP LOOP TABLE1:DW 64524,64580,64684,64777 ;簡碼值 DW 64820,64898,64968,65030,65058 DW 64400,64260 TABLE:DB 42H,62H,72H,41H,61H,41H,31H,22H,0B2H ;歌曲《三個和尚》 DB 62H,61H,61H,71H,61H,41H,64H DB 0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H DB 0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H DB 42H,62H,72H,41H,61H,41H,31H,22H,0B2H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 0A2H,21H,32H,42H,62H,61H,41H,62H,71H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 62H,61H,42H,62H,71H,61H,72H,62H,71H DB 62H,61H,71H,32H,42H,64H DB 00H XIAOZHEN1:LCALL DISPLAY1 JB K1,XIAOZHEN1 MOV C,K1 JC XIAOZHEN1 LCALL DELAY5 MOV C,K1 JC XIAOZHEN1 STOP1:MOV C,K1 JNC STOP1 LCALL DELAY5 MOV C,K1 JNC STOP1 SETB 25H.0 RET XIAOZHEN2:LCALL DISPLAY2 JB K2,XIAOZHEN2 MOV C,K2 JC XIAOZHEN2 LCALL DELAY5 MOV C,K2 JC XIAOZHEN2 STOP2:MOV C,K2 JNC STOP2 LCALL DELAY5 MOV C,K2 JNC STOP2 SETB 25H.0 RET XIAOZHEN3:LCALL DISPLAY1 JB K4,XIAOZHEN3 MOV C,K4 JC XIAOZHEN3 LCALL DELAY5 MOV C,K4 JC XIAOZHEN3 STOP3:MOV C,K4 JNC STOP3 LCALL DELAY5 MOV C,K4 JNC STOP3 SETB 25H.0 RET XIAOZHEN4:LCALL DISPLAY1 JB K2,XIAOZHEN4 MOV C,K2 JC XIAOZHEN4 LCALL DELAY5 MOV C,K2 JC XIAOZHEN4 STOP4:MOV C,K2 JNC STOP4 LCALL DELAY5 MOV C,K2 JNC STOP4 SETB 25H.0 RET XIAOZHEN5:LCALL DISPLAY1 JB K3,XIAOZHEN5 MOV C,K3 JC XIAOZHEN5 LCALL DELAY5 MOV C,K3 JC XIAOZHEN5 STOP5:MOV C,K3 JNC STOP5 LCALL DELAY5 MOV C,K3 JNC STOP5 SETB 25H.0 RET XIAOZHEN6:LCALL DISPLAY2 JB K3,XIAOZHEN6 MOV C,K3 JC XIAOZHEN6 LCALL DELAY5 MOV C,K3 JC XIAOZHEN6 STOP6:MOV C,K3 JNC STOP6 LCALL DELAY5 MOV C,K3 JNC STOP6 SETB 25H.0 RET XIAOZHEN7:LCALL DISPLAY2 JB K1,XIAOZHEN7 MOV C,K1 JC XIAOZHEN7 LCALL DELAY5 MOV C,K1 JC XIAOZHEN7 STOP7:MOV C,K1 JNC STOP7 LCALL DELAY5 MOV C,K1 JNC STOP7 SETB 25H.0 RET DELAY5:MOV R4,#14H DL00:MOV R5,#0FFH DL11:DJNZ R5,DL11 DJNZ R4,DL00 RET TIME:PUSH ACC PUSH PSW MOV TH0,#03CH MOV TL0,#0B0H DJNZ R2,RET0 MOV R2,#14H MOV A,20H CLR C INC A CJNE A,#3CH,GO1 MOV 20H,#0 MOV 30H,#0 MOV 31H,#0 MOV A,21H INC A CJNE A,#3CH,GO2 MOV 21H,#0H MOV 32H,#0 MOV 33H,#0 MOV A,22H INC A CJNE A,#18H,GO3 MOV 22H,#00H MOV 34H,#0 MOV 35H,#0 AJMP RET0 GO1:MOV 20H,A MOV B,#0AH DIV AB MOV 31H,A MOV 30H,B AJMP RET0 GO2:MOV 21H,A MOV B,#0AH DIV AB MOV 33H,A MOV 32H,B AJMP RET0 GO3:MOV 22H,A MOV B,#0AH DIV AB MOV 35H,A MOV 34H,B AJMP RET0 RET0:POP PSW POP ACC RETI DISPLAY1:MOV R0,#30H MOV R3,#0FEH MOV A,R3 PLAY1:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A JNB ACC.6,LD1 INC R0 MOV R3,A LJMP PLAY1 LD1:RET DISPLAY2:PUSH ACC PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3 PLAY2:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A JNB ACC.6,LD2 JNC R0 MOV R3,A LJMP PLAY2 LD2:POP PSW POP ACC RET DL1:MOV R7,#05H DL:MOV R6,#0FFH DL6:DJNZ R6,$ DJNZ R7,DL RET DSEG1:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END 第 21 頁 共 24 頁- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 數(shù)字 音樂 鬧鐘 設(shè)計
鏈接地址:http://m.appdesigncorp.com/p-6653249.html