基于51單片機的音樂盒的設(shè)計.doc_第1頁
基于51單片機的音樂盒的設(shè)計.doc_第2頁
基于51單片機的音樂盒的設(shè)計.doc_第3頁
基于51單片機的音樂盒的設(shè)計.doc_第4頁
基于51單片機的音樂盒的設(shè)計.doc_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于AT89C51單片機的音樂盒的設(shè)計單片機原理及應(yīng)用是高校工程專業(yè)的一門專業(yè)基礎(chǔ)課,該門課程具有很強的實踐性。通過課程的學(xué)習,使我能夠掌握基本概念、基本理論和基本技能,為今后從事相應(yīng)的生產(chǎn)設(shè)計和科研工作打下一定的基礎(chǔ)。因此,除了在課堂的理論學(xué)習和做實驗外,課程設(shè)計也是一個重要的實踐學(xué)習環(huán)節(jié)。通過課程設(shè)計,進一步培養(yǎng)我們理論聯(lián)系實際的能力,學(xué)會正確地分析工程實際問題,善于查閱參考文獻,準確地選擇相應(yīng)的數(shù)據(jù)、參數(shù),具備全面地解決實際問題的素質(zhì),同時課程設(shè)計也為今后的畢業(yè)設(shè)計打下基礎(chǔ)。單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51單片機是各單片機中最為典型和最有代表性的一種。本音樂播放器是利用89C51單片機結(jié)合內(nèi)部定時系統(tǒng),設(shè)計一個簡易的微電腦音樂盒。引 言單片機原理及應(yīng)用是高校工程專業(yè)的一門專業(yè)基礎(chǔ)課,該門課程具有很強的實踐性。通過課程的學(xué)習,使我能夠掌握基本概念、基本理論和基本技能,為今后從事相應(yīng)的生產(chǎn)設(shè)計和科研工作打下一定的基礎(chǔ)。因此,除了在課堂的理論學(xué)習和做實驗外,課程設(shè)計也是一個重要的實踐學(xué)習環(huán)節(jié)。通過課程設(shè)計,進一步培養(yǎng)我們理論聯(lián)系實際的能力,學(xué)會正確地分析工程實際問題,善于查閱參考文獻,準確地選擇相應(yīng)的數(shù)據(jù)、參數(shù),具備全面地解決實際問題的素質(zhì),同時課程設(shè)計也為今后的畢業(yè)設(shè)計打下基礎(chǔ)。單片機自20世紀70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51單片機是各單片機中最為典型和最有代表性的一種。本音樂播放器是利用89C51單片機結(jié)合內(nèi)部定時系統(tǒng),設(shè)計一個簡易的微電腦音樂盒。1概述通過按鍵給單片機的P2口輸入低電平,進而利用程序來判斷是否執(zhí)行某一播放功能。而利用單片機的定時器0中斷來控制播放樂曲。1.1 課題意義音樂盒的起源,可追溯至中世紀歐洲文藝復(fù)興時期。當時為使教會的鐘塔報時,而將大小的鐘表裝上機械裝置,被稱為“可發(fā)出聲音的組鐘”。音樂盒有著300多年的發(fā)展歷史,是人類文明發(fā)展的歷史見證。傳統(tǒng)的音樂盒多是機械音樂盒,其工作原理是通過齒輪帶動一個帶有鐵釘?shù)蔫F桶轉(zhuǎn)動,鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機械音樂盒放音時為了讓音色穩(wěn)定,必須放平不能動搖,而且價格昂貴,不能實現(xiàn)大批量生產(chǎn)。本文設(shè)計的音樂盒,是基于單片機設(shè)計制作的電子式音樂盒。與傳統(tǒng)的機械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動力來源是電池,制作工藝簡單,可進行批量生產(chǎn),所以價格便宜?;趩纹瑱C制作的電子式音樂盒,控制功能強大,可根據(jù)需要選歌,使用方便。根據(jù)存儲容量的大小,可以盡可能多的存儲歌曲。另外,可以設(shè)計彩燈外觀效果,使音樂盒的功能更加豐富。1.2設(shè)計方案設(shè)計一個基于AT89C51系列單片機的音樂盒,利用按鍵切換演奏出不同的樂曲。1.3研究內(nèi)容1)電路工作模式:演奏音樂模式。演奏完整的一首的歌曲,隨著音樂變化,蜂鳴器隨著發(fā)出音樂聲。2)按下按鍵進入演奏音樂模式,再按切換歌曲,共兩首歌曲。2 設(shè)計原理通過按鍵給單片機的P2口輸入低電平,進而利用程序來判斷是否執(zhí)行某一播放功能。而利用單片機的定時器0中斷來控制播放樂曲。3 時鐘振蕩電路、復(fù)位電路利用12MHZ的晶振做外部時鐘,AT89C51中有一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體(陶瓷)諧振器一起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1,C2雖然沒有什么嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。電路如下圖1。圖1 晶振電路、復(fù)位電路4 蜂鳴器電路利用NPN管(9012)放大驅(qū)動?;鶚O接10K歐姆的電阻,發(fā)射極接蜂鳴器,集電極接電源。蜂鳴器電路連接如下圖2圖2 蜂鳴器電路5 控制電路本次設(shè)計中,按鍵有7個.鍵分別接于7根I/O線(P2口),各按鍵在實物連接上相互獨立,彼此的工作狀態(tài)互不影響,單片機自帶上拉電阻因此無需外接上拉電阻,用查詢法可完成此按鍵功能。電路連接如下圖3圖3 鍵盤控制電路6 仿真調(diào)試及說明6.1調(diào)試結(jié)果圖4 仿真調(diào)試6.2性能分析用AT89C51單片機的I/O口產(chǎn)生一定頻率的方波,驅(qū)動蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂曲。共有4支樂曲,每首樂曲都由相應(yīng)的按鍵控制,并且有開關(guān)鍵、暫停鍵、上一曲以及下一曲控制鍵。將源程序?qū)雴纹瑱C后,在proteus軟件中進行仿真。我通過仿真發(fā)現(xiàn),按下按鍵時,存在一定的延時,不能立刻反應(yīng),當按下按鍵時,應(yīng)必須有足夠的時間。7 系統(tǒng)軟件設(shè)計 圖5 源程序流程圖7 音調(diào)、節(jié)拍以及編碼的確定方法一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和節(jié)拍表示一個音符唱多長的時間。7.1.1 音調(diào)的確定不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時樂音的發(fā)音,所以叫“音調(diào)”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個等份,每一個等份叫一個“半音”。兩個音之間的距離有兩個“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,CD、DE、FG、GA、AB兩音之間隔著一個黑鍵,他們之間的距離就是全音;EF、BC兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上號或者b號的叫變化音。叫升記號,表示把音在原來的基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用定時器計時這半個周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。2)利用AT89C51的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計數(shù)器計時956us/1us=956,在每次技術(shù)956次時將I/O反相,就可得到中音DO(523Hz)。計數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi2FrN:計算值;Fi:內(nèi)部計時一次為1us,故其頻率為1MHz;4) 其計數(shù)值的求法如下:T=65536-N=65536-Fi2Fr例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的計算值T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=650595) C調(diào)各音符頻率與計數(shù)值T的對照表如表4.1所示。表4.1 C調(diào)各音符頻率與計數(shù)值T的對照表7.1.2 節(jié)拍的確定若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動),而且可以調(diào)節(jié)各個音的快滿度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點,有些人慢一點,只要聽的悅耳就好。音持續(xù)時間的長短即時值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識,我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對于單片機來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機的定時/計數(shù)器來產(chǎn)生這樣的方波頻率信號。因此,需要弄清楚音樂中的音符和對應(yīng)的頻率,以及單片機定時計數(shù)的關(guān)系。表4.2節(jié)拍與節(jié)拍碼對照7.1.3 編碼do re mi fa so la si分別編碼為17,重音do編為8,重音re編為9,停頓編為0。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調(diào)作為編碼的高4位,而播放時間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個編碼。以0xff作為曲譜的結(jié)束標志。舉例1:音調(diào)do,發(fā)音長度為兩拍,即二分音符,將其編碼為0x18。舉例2:音調(diào)re,發(fā)音長度為半拍,即八分音符,將其編碼為0x22歌曲播放的設(shè)計。先將歌曲的簡譜進行編碼,儲存在一個數(shù)據(jù)類型為unsigned char 的數(shù)組中。程序從數(shù)組中取出一個數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時器0,使之定時操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時時間,接著調(diào)用軟件延時。表4.4 簡譜對應(yīng)的簡譜碼、T值、節(jié)拍數(shù)8 總結(jié)通過對單片機的學(xué)習,發(fā)現(xiàn)對單片機的硬件設(shè)計,軟件設(shè)計掌握的深度不夠,但通過此次課程設(shè)計,卻改變了很多,首先對于硬件電路的工作原理有了進一步的學(xué)習,同樣就有了進一步的認識;其次軟件方面,在程序的設(shè)計,程序的調(diào)試方面都學(xué)到了很多東西,這是第一次編寫單片機的大程序,很有成就感。在一個好的氛圍里才能踏下心來做東西,在這幾天課設(shè)的時間里,編程中出現(xiàn)問題時,一定要戒驕戒躁,腳踏實地,認真看書,仔細分析,仔細調(diào)試,就一定會發(fā)現(xiàn)錯誤,克服困難,我也是這么做的,這在課設(shè)中十分重要。 在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前沒有做過這樣的設(shè)計但通過這次設(shè)計我學(xué)會了很多東西,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,比如寫一個程序看其功能很少認為編寫程序簡單,但到編程的時候才發(fā)現(xiàn)一些細微的知識或低級錯誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學(xué)精弄懂并且要細心才行,只學(xué)習理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習中,要理論聯(lián)系實際,把所學(xué)的理論知識用到實際當中,學(xué)習單機片機更是如此,程序只有在經(jīng)常的練習的過程中才能提高,我想這就是我在這次課程設(shè)計中的最大收獲。參考文獻 1 胡有彬.現(xiàn)代微機原理與接口技術(shù)M.北京:電子工業(yè)出版社,2002.2 張友德,趙志英,涂時亮.單片微型機原理.應(yīng)用與實驗M.上海:復(fù)旦大學(xué)社,2003.3 張洪潤,張亞凡.單片機原理及應(yīng)用M.北京:清華大學(xué)出版社,2005.4 張靖武,周靈彬.單片機系統(tǒng)的Proteus設(shè)計與仿真M.北京:電子工業(yè)出社,2007. 5 何立明.單片機應(yīng)用系統(tǒng)設(shè)計M.北京:北京航空航天大學(xué)出版社,1990.6 凌玉華.單片機原理及應(yīng)用系統(tǒng)設(shè)計M.長沙:中南大學(xué)出版社,2006.7 張毅剛.MCS-51單片機應(yīng)用設(shè)計M.哈爾賓:哈爾賓工業(yè)大學(xué)出版社,1997. 8 譚浩強.C程序設(shè)計M.北京:清華大學(xué)出版社,2009.9 王思明,張金敏,張鑫等.單片機原理及應(yīng)用系統(tǒng)設(shè)計M.北京:科學(xué)出版社,2012.附錄 源程序代碼#include #define uchar unsigned char#define uint unsigned intsbit BEEP = P14; /蜂鳴器sbit k0=P20;sbit k1=P21;sbit k2=P22;sbit k3=P23;sbit k4=P24;sbit k5=P25;sbit k6=P26;uint code Tone_Delay_Table= 64021,64103,64260,64400,64524,64580,64684,64777, 64820,64898,64968,65030,65058,65110,65157,65178 ;uchar code Song1_Tone=1, 1, 5, 5, 6, 6, 5,4, 4, 3 ,3, 2, 2, 1,5, 5, 4, 4, 3, 3, 2, 5, 5, 4, 4, 3, 3, 2,1,1, 5, 5, 6, 6 ,5,4 ,4, 3, 3, 2, 2, 1,0xff;uchar code Song1_Time=2,2,2,2,2,3,4,2,2,2,2,2,2,4,2,2,2,2,2,2,4,2,2,2,2,2,2,5,2,2,2,2,2,2,5,2,2,2,2,2,2,5,0xFF;uchar code Song2_Tone=1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1, 5,6,5,4,3,1 ,1,5,1,0xFF;uchar code Song2_Time=2,2,3,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,0xFF;uchar code Song3_Tone = 1,3,3,3,3,5,4,2,5,3,7,6,5,5,7,4,4,3,6,7,2,1,0xFF;uchar code Song3_Time = 2,1,1,2,1,1,1,2,1,1,3,2,1,1,2,4,1,1,2,1,1,1,0xFF; uchar code Song4_Tone = 8,9,2,3,7,6,2,3,10,11,1,2,3,1,2,3,3,4,5,6,5,3,5,6,5,3,5,3,2,1,1,2,3,0xFF; uchar code Song4_Time = 3,6,7,2,4,5,8,1,2,2,5,5,1,9,1,1,1,1,6,1,1,2,4,1,1,2,1,1,1,1,1,2,2,1,0xFF;uchar Song_Index = 0, Tone_Index = 0; /音樂片段索引,音符索引uchar *Song_Tone_Pointer, *Song_Time_Pointer; /音符指針,延時指針uchar i = 0; uchar j=0,k=0,m=0; /從當前數(shù)組中取音符的位置void DelayMS(uint ms) /延時 uchar t; while(ms-) for (t = 0; t 120; t+); void play0() /按鍵產(chǎn)生的INT0 ET0=1; TR0 = 0;k0=1; Song_Index = ( Song_Index + 1) % 4; /切換到下一音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從下一段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play1() ET0=1; TR0 = 0;k1=1; Song_Index = ( Song_Index + 3) % 4; /切換到上一段音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; i = 0;/從上一段音樂的第0個音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play2() m=!m; TR0 = 0;k2=1;if(m=0) j=1; TR0=0; ET0=0; if(m=1) ET0=1; k=1;if(j=1) /播放被暫停的音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; /從本一段音樂的第i個音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 Song_Index = ( Song_Index + 1) % 4; /播放下一首音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break;continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; if (j=0)j=1; Song_Tone_Pointer = Song1_Tone; /開始播放音樂 Song_Time_Pointer = Song1_Time; i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 Song_Index = ( Song_Index + 1) % 4; /播放下一段音樂 switch (Song_Index) case 0: Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; break; case 1: Song_Tone_Pointer = Song2_Tone; Song_Time_Pointer = Song2_Time; break; case 2: Song_Tone_Pointer = Song3_Tone; Song_Time_Pointer = Song3_Time; break;case 3: Song_Tone_Pointer = Song4_Tone; Song_Time_Pointer = Song4_Time; break; continue; TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play3() ET0=1; TR0 = 0; k3=1;/切換到第一段音樂 Song_Tone_Pointer = Song1_Tone; Song_Time_Pointer = Song1_Time; Song_Index=0; /從第一段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play4() ET0=1; TR0 = 0;k4=1;Song_Tone_Pointer = Song2_Tone;/切換到第二段音樂 Song_Time_Pointer = Song2_Time; Song_Index=1 ; i=0; /從第二段音樂的第0個音符開始 while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play5() ET0=1; TR0 = 0;k5=1;Song_Tone_Pointer = Song3_Tone; /切換到第三段音樂 Song_Time_Pointer = Song3_Time; Song_Index=2; /從第三段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void play6() ET0=1; TR0 = 0;k6=1; Song_Tone_Pointer = Song4_Tone;/切換到第四段音樂Song_Time_Pointer = Song4_Time; Song_Index=3; /從第四段音樂的第0個音符開始 i = 0; while (k0=1&k1=1&k2=1&k3=1&k4=1&k5=1&k6=1) Tone_Index = Song_Tone_Pointeri; if ( Tone_Index = 0xFF ) i = 0; DelayMS(2000); /每段音樂播放結(jié)束后停頓一段時間 continue; /繼續(xù)播放 TR0 = 1; DelayMS( Song_Time_Pointer Tone_Index * 240); TR0 = 0; i+; return; void Timer0_Play_Music() interrupt 1 / T0 定時器控制播放 TH0 = Tone_Delay_Table Tone_Index / 256; TL0 = Tone_Delay_Table Tone_Index % 256; BEEP = BEEP; void main() / 主程序 TMOD = 0x01; IE = 0x82; /許可 INTO 和 TO 中斷 TR0 = 0; while(1)if(k0=0&k=1) DelayMS(2000); play0();m=1;if(k1=0&k=1) DelayMS(2000); play1();m=1;if(k2=0) DelayMS(2000); play2();if(k3=0&k=1) DelayMS(2000); play3();m=1;if(k4=0&k=1) DelayMS(2000); play4();m=1;if(k5=0&k=1) DelayMS(2000); play5();m=1;if(k6=0&k=1) DelayMS(2000); play6();m=1; 設(shè)計題目指導(dǎo)教師綜合閱評意見平時成績020材料成績040指導(dǎo)教師a您好,為你提供優(yōu)秀的畢業(yè)論文參考資料,請您刪除以下內(nèi)容,O(_)O謝謝!AnationalsurveywasrecentlylaunchedtoevaluatetheeyehealthofChinesechildrenandteenagers.OnJune6,ChinasannualNationalDayforEyeCare,theChinaYouthDevelopmentServiceCenterandZhejiangMedicine,aleadinglistedChinesepharmaceuticalcompany,jointlyannouncedthekickoffofthesurvey.Inaboutonemonth,aquestionnairecompiledbytopeyecaremedicalexpertsinChinawillbedistributedthroughmultipleonlinepartners,includingH,aswellasthroughofflinesurveyeventsheldinuniversities,middleschoolsandprimaryschoolsacrossthecountry.Areportwillbereleasedbasedonthesurveystatisticsandanalysis,andmostimportantly,guidelinesforparentsandyouthonhowtocarefortheeyesandpreventmyopiaagrowingprobleminChinasdigitizedsociety,willalsobeattachedonthereport.Myopiaisnotonlyadiseasethatmakespeopleseethingsblurrily,butalsoleadstoseverecomplications,suchasglaucoma(increasedpressurewithintheeyeball),andcancauseblindness,saidZhouYuehua,anestablishedeyecarespecialistwithBeijingTongrenHospital.Itisveryimportantforparentsandchildrentoknowabouttheriskandcarefortheireyes.Thereareabout450millionmyopiapatientsinChina.AmongChinesemyopiapatients,30millionareseverepatients,accordingtoZhouTheprevalenceofmyopiaamonghighschoolandcollegestudentsismorethan70percent,andthesituationiscontinuouslyworsening,headded.SunZhu,directorwiththeChinaYouthDevelopmentServiceCenter,saidlonghoursofstudy,lackofexercise,especiallyoutdooractivities,andattachmenttoelectronicscreenaresomeofthetopreasonsbehindthewidespreadmyopiaproblems,andtheincreaseofyoungerpatients,althoughChinahasmadegreatprogressinimprovingthehardwarefacilitiesandlightingconditionsinschools.Hesaidhehopesthesurveywillalertpeopleonthethreateningsituation,andalsohelpmedicalexpertstobetterguidelineparentsandchildrensbehaviorstocareforeyes,basedonthetimelyandfactualstatisticsthesurveycollected.Aseriesoffollow-upeventswillalsobeheldinsixcities,includingJinaninShandongprovince,andChangshainHunanprovince,toeducatepeopleonhowtocareforeyesafterthesurveystarted. More and more Chinese are jogging to get and stay fit. Most joggers will run alone, but some will jog with friends or even coaches. The Beijing Olympic Forest Park is one of the most popular spots. It is packed with runners in the afternoon, usually after work, and at weekends. Jogging after a whole days work can be a way to unwind. It is true for He Wenjun, whose workplace is right near the forest park. She discovered her athletic aptitude at the age of seven, when she began playing tennis. Then she turned to jogging, and she has persevered with it for 10 years. I come to jog almost every day after work, whenever I have time. I think jogging is good for my health. And for me, a girl, it helps me to achieve to eternal goal, to keep slim, He said. He says she prefers jogging alone, so she can focus better. She loves jogging, even during Beijings smoggy days. If the smog is severe, Ill hold off jogging for a while. But if I really want to get away from work, Ill wear a mask, or just ignore the smog and go on jogging, she said. For those who are not so athletic, jogging also has its attractions. Wu Houbin started roughly two years ago, when he was severely obese. Within two months, his weight dropped from 82 kilograms to 64 kilograms. The success helped him recover health, and he has made friends. Jogging does not require speed, but stamina. If you want to stick to the game, you need to take it as a mission,

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論