歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

單片機數(shù)字音樂鬧鐘設(shè)計

  • 資源ID:6653249       資源大?。?span id="tpnfx13" class="font-tahoma">163.38KB        全文頁數(shù):24頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

單片機數(shù)字音樂鬧鐘設(shè)計

摘要單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51 單片機是各單片機中最為典型和最有代表性的一種。本設(shè)計是以AT89C51 芯片為核心,輔以必要的外圍電路,設(shè)計了一個結(jié)構(gòu)簡單的數(shù)字音樂鬧鐘,它由5V 直流電源供電。在硬件方面,除了CPU 外,使用六個七段LED 數(shù)碼管來進行顯示,LED 采用的是動態(tài)掃描顯示,通過LED 能夠較為準確地顯示時、分、秒。四個簡單的按鍵實現(xiàn)對時間的調(diào)整。軟件方面采用匯編語言編程。整個電子鐘系統(tǒng)能完成時間的顯示、調(diào)時和定時鬧鐘的功能。選用單片機最小系統(tǒng)應(yīng)用程序,添加比較程序、時間調(diào)整程序及音樂程序。通過時間比較程序觸發(fā)蜂鳴,實現(xiàn)鬧鐘功能,完成設(shè)計所需求的軟件環(huán)境。測試程序的可行性并用Proteus 進行仿真。關(guān)鍵字:單片機 LED 鬧鐘 目錄摘要第一章 概述1第二章 系統(tǒng)總體方案及硬件設(shè)計22.1總體設(shè)計22.3系統(tǒng)時鐘電路設(shè)計22.3系統(tǒng)復(fù)位電路的設(shè)計22.4鬧鐘指示電路設(shè)計22.5電子鬧鐘的顯示電路設(shè)計3第三章 軟件設(shè)計43.1概述43.2主模塊的設(shè)計43.3基本顯示模塊設(shè)計53.4時間設(shè)定模塊設(shè)計53.5鬧鈴功能的實現(xiàn)6第四章 PROTEUS軟件仿真8總結(jié)9致謝10參考文獻11附錄:源程序代碼12第1章 概述本設(shè)計數(shù)字音樂鬧鐘的設(shè)計,由單片機AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成的一個單片機數(shù)字音樂鬧鐘。定時鬧鐘設(shè)計可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。定時鬧鐘是用數(shù)字集成電路構(gòu)成的,用數(shù)碼管顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。單片機具有集成度高、功能強、通用性好、特別是它能耗低、價格便宜、可靠性高、抗干擾能力強和使用方便等獨特的優(yōu)點,所以單片機現(xiàn)在廣泛的應(yīng)用到家用電器、機電產(chǎn)品、兒童玩具、機器人、辦公自動化產(chǎn)品等領(lǐng)域。所以在該設(shè)計中采用單片機AT89C51來完成定時鬧鐘的設(shè)計。它是低功耗、高性能的CMOS型8位單片機。片內(nèi)帶有4KB的Flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外, AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B 的RAM、32條I/O口線、2個16位定時計數(shù)器、5個中斷源、一個全雙工串行口等。AT89C51單片機結(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è)計準備中根據(jù)具體的要求,查找資料,然后按要求根據(jù)已學(xué)過的時鐘程序編寫定時鬧鐘的程序,依據(jù)程序利用Proteus軟件進行了仿真試驗,對出現(xià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電子鬧鐘的主電路指的是圖中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機的設(shè)計具體地說有:1)系統(tǒng)時鐘電路設(shè)計;2)系統(tǒng)復(fù)位電路設(shè)計;3)按鍵與按鈕電路設(shè)計;4)鬧鈴聲指示電路設(shè)計。2.2 系統(tǒng)時鐘電路設(shè)計對于時間要求不是很高的系統(tǒng),只要按圖進行設(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)通常有兩種方式:)RC復(fù)位電路;)專用監(jiān)控電路。前者實現(xiàn)簡單,成本低,但復(fù)位可靠性相對較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位。對于復(fù)位要求高、并對電源電壓進行監(jiān)視的場合,大多采用這種方式。本次畢業(yè)設(shè)計采用了上電按鈕電平復(fù)位電路。2.4 鬧鐘指示電路設(shè)計鬧鈴指示可以有聲或光兩種形式。本系統(tǒng)采用聲音指示。關(guān)鍵元件是蜂鳴器。蜂鳴器有無源和有源兩種,前者需要輸入聲音頻率信號才能正常發(fā)聲,后者則只需外加適當直流電源電壓即可,元件內(nèi)部已封裝了音頻振蕩電路,在得電狀態(tài)下即起振發(fā)聲。市場上的有源蜂鳴器分為3、5、6等系列,以適應(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. 0P2. 5控制,而將其相應(yīng)的段選線并聯(lián)在一起,由一個8位的I/O口控制,即P0口。譯碼顯示電路將“時”、“分”、“秒”計數(shù)器的輸出狀態(tài)靠七段顯示譯碼器譯碼,通過6位LED七段顯示器顯示出來。到達定時電路時根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實現(xiàn)鬧鈴。校時電路時用來對“時”、“分”、“秒”顯示數(shù)字進行校對調(diào)整的。第3章 軟件設(shè)計3.1 概述軟件設(shè)計的重點在于秒脈沖信號的產(chǎn)生、顯示的實現(xiàn)、以及按鍵的處理等方面。基于軟件的秒脈沖信號通常有延時法和定時中斷法。延時法一般采用查詢方式,在延時子程序前后必然需要查詢和處理的程序,導(dǎo)致誤差的產(chǎn)生,因此其秒脈沖的精度不高;中斷法的原理是,利用單片機內(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所示:系統(tǒng)初始化定時初始化中斷初始化串口初始化顯示待機指示符設(shè)定鬧鈴時間判設(shè)置鬧鈴時間否?顯示刷新啟動走時有關(guān)變量初始化刷新顯示判時或分變化否?秒指示判秒到否?鬧鈴判是否到鬧鈴時間?延時YYYY 圖 23.3 基本顯示模塊設(shè)計基本顯示模塊設(shè)計的重點是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。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í)行。“一鍵多態(tài)”即多功能鍵的實現(xiàn)思想是,根據(jù)按鍵時刻的系統(tǒng)狀態(tài),決定按鍵采取何種動作,即何種功能。其流程圖如下圖3所示:設(shè)置鍵嗎?設(shè)置模塊初始化將在編參數(shù)送顯示緩沖區(qū)閃爍標志為真?將當前位的顯示代碼置暗代碼調(diào)基本顯示模塊刷新顯示設(shè)置鍵嗎?當前編輯位下移(下一位)當前編輯的是分各位?結(jié)束設(shè)定鍵嗎?根據(jù)當前位的性質(zhì)分別進行處理(含上下限判斷) 圖43.5 鬧鈴功能的實現(xiàn)鬧鈴功能的實現(xiàn)涉及到兩個方面:鬧鈴時間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時間設(shè)定模塊的設(shè)計可參照時間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時要進行鬧鈴。當時十位、時個位、分十位、分個位中任一位發(fā)生改變(進位)時,就必須進行鬧鈴判別。譯碼顯示電路將“時”、“分”、“秒”計數(shù)器的輸出送到七段顯示譯碼驅(qū)動器譯碼驅(qū)動,通過六個七段LED顯示器顯示出來。鬧鈴電路根據(jù)計時系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后加上一個高頻或低頻信號送到放大電路驅(qū)動蜂鳴器發(fā)聲實現(xiàn)報時。校時電路是直接加一個脈沖信號到時計數(shù)器或者分計數(shù)器或者秒計數(shù)器來對“時”、“分”、“秒”顯示數(shù)字進行校對調(diào)整。其流程圖如下所示:時十位、個位,分十位、個位改變了設(shè)置鬧鈴標志是否設(shè)置了鬧鈴清除鬧鈴標志判當前時間是設(shè)定時間中斷返回中斷返回鬧鈴判別處理圖5.1 圖5.2考慮到實用性,在該電子鐘的設(shè)計中修改定時或調(diào)整時間時采用了閃爍,在編程上,首先進行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計數(shù)的秒,分,時。在顯示程序段中主要進行了閃爍的處理,采用定時器中斷置標志位,再與位選相互結(jié)合的方法來控制調(diào)時或定時中的閃爍。時,分,秒顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進行進制轉(zhuǎn)化。初始化之后,用中斷方式對其計數(shù),計數(shù)的同時采用了定時器比較的方法,比較當前計數(shù)時間與定時時間是否相等,若相等則將鬧鈴標志位置數(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軟件,此軟件功能強大且操作較為簡單,可以很容易的實現(xiàn)各種系統(tǒng)的仿真。總結(jié)通過本次畢業(yè)設(shè)計較系統(tǒng)地掌握有關(guān)單片機控制的設(shè)計思想和設(shè)計方法,主要對AT89C51的結(jié)構(gòu)、功能、內(nèi)部資源等了解并對其進行測試和加以應(yīng)用的知識得到學(xué)習。由于是在我們短學(xué)期實習之后才來始寫的,我們實習做的是電子鐘,所以對時鐘有了一定的掌握。我在原來的功能上增加了音樂鬧鐘的功能。在本設(shè)計中盡量做到了硬件電路簡單穩(wěn)定,充分發(fā)揮軟件編程的優(yōu)點,減小因元器件精度不夠引起的誤差。由于時間有限和本身知識水平的發(fā)揮,我們認為本系統(tǒng)還有需要改進和提高的地方,例如選用更高精度的元器件,硬件電路更加精確穩(wěn)定,軟件測量算法進一步的改進與完善等。致謝雖然這次畢業(yè)設(shè)計的時間不是很長,但畢業(yè)設(shè)計卻是自己獨立思考完成的,首先我對任務(wù)按時間進行了分工,每天按時完成任務(wù),再然,課后的創(chuàng)新思考,也成了我近期的參考事項,最后,經(jīng)過不斷的實習演練,才能確保順利完成優(yōu)質(zhì)的畢業(yè)設(shè)計。因為是自己的單獨設(shè)計,剛開始時,心里總有些緊張與茫然,不知如何入手,但我們的指導(dǎo)老師具有高度的責任感與敬業(yè)精神,在他們的指導(dǎo)下,我才能順利的完成這項工作,他們在指導(dǎo)我的同時也讓我深深的感受到了生活中的激情與處事方式,我深深的感謝他們對我的栽培。通過這次畢業(yè)設(shè)計,使我對所學(xué)的理論知識有了實踐的演練,操作能力得到了很大的提高。我認為理論知識畢竟是書本上的,是抽象的,而我們的生活是需要實際操作的,只有通過實際的操作演練與理論相結(jié)合,才能使我們真正的學(xué)到更多我們想象不到的知識,而在這三年的學(xué)習生活中我們就是缺少了理論和實踐的緊密結(jié)合,而本次畢業(yè)設(shè)計則恰恰像一場及時雨,讓我們通過親身模擬學(xué)會如何把理論知識應(yīng)用于實踐。給了我充分的鍛煉機會。獲益非淺!感謝學(xué)校和老師對我們的栽培!參考文獻1、潘永雄.新編單片機原理與應(yīng)用. 西安電子科技大學(xué)出版社,2002年2、張友德,趙志英,涂時亮.單片機微型機原理應(yīng)用與實驗. 復(fù)旦大學(xué)出版社,2000年3、周航慈、朱兆優(yōu)、李躍忠.智能儀器原理與設(shè)計. 北京航空航天大學(xué)出版社,2005年4、江秀漢.可編程序控制器原理及應(yīng)用(第二版).西安電子科技大學(xué)出版社,2003年5、沈慶陽、郭庭吉.單片機實踐與應(yīng)用.清華大學(xué)出版社,2002年6、竇振中.單片機外圍器件實用手冊存儲器分冊.北京航空航天大學(xué)出版社,1998年 7、關(guān)德新,馮文全.單片機外圍器件實用手冊電源器件分冊.北京航空航天大學(xué)出版社,1998年8、何立民.單片機應(yīng)用技術(shù)選編,北京航空航天大學(xué)出版社,1993年9、李建忠.單片機原理及運用. 西安電子科技大學(xué)出版社,2001年 10、吳金戎、沈慶陽.8051單片機實踐與應(yīng)用.清華大學(xué)出版社 ,2001年 11、趙曉安.MCS-51單片機原理及應(yīng)用.天津大學(xué)出版社,2001年 12、馮建華、趙亮.單片機應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā). 人民郵電出版社, 2004年 13、何立民.MCS51系列單片機應(yīng)用系統(tǒng)設(shè)計.北京航空航天大學(xué)出版社, 1999年 14、李榮正、陳學(xué)軍.PIC單片機實驗教程. 北京航空航天大學(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 ;定義一個標志位 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 LOOPSETTIME: 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 RETSETATIME: 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)場保護 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 00HXIAOZHEN1: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 RETXIAOZHEN2: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 RETXIAOZHEN3: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 RETXIAOZHEN5: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 RETXIAOZHEN6: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 RETXIAOZHEN7: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 RETIDISPLAY1: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:RETDISPLAY2: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 頁

注意事項

本文(單片機數(shù)字音樂鬧鐘設(shè)計)為本站會員(QQ-1****6396)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!