版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)纹瑱C(jī)課程設(shè)計(jì)題目:基于單片機(jī)的數(shù)字音樂(lè)盒設(shè)計(jì)專業(yè):機(jī)電一體化系部:機(jī)械工程系姓名:班級(jí):309-2班PAGE4基于單片機(jī)的數(shù)字音樂(lè)盒設(shè)計(jì)任務(wù)書(shū)一、任務(wù)設(shè)計(jì)一款基于AT89C51單片機(jī)的數(shù)字音樂(lè)盒。二、設(shè)計(jì)要求(1)利用單片機(jī)的I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂(lè)曲。(2)共有10首音樂(lè),每首樂(lè)曲都由相應(yīng)的按鍵控制,并有開(kāi)關(guān)鍵、暫停鍵、上一曲及下一曲控制鍵;(3)利用LCD液晶顯示歌曲的序號(hào)、播放時(shí)間,開(kāi)機(jī)時(shí)顯示英文歡迎提示字符。目錄任務(wù)書(shū) 1目錄 21概述 51。1單片機(jī)數(shù)字音樂(lè)盒有關(guān)介紹 51.2LED顯示屏控制技術(shù)狀況 91。3本設(shè)計(jì)任務(wù) 102總體方案論證與設(shè)計(jì) 122.1單片機(jī)的選取 122.2LED顯示方式 132。3LED驅(qū)動(dòng)模塊 132.4系統(tǒng)總體結(jié)構(gòu)框圖 143系統(tǒng)硬件設(shè)計(jì) 153。1AT89C51芯片功能和硬件連接 153。2LED顯示器 183。3鍵盤 193.4系統(tǒng)復(fù)位電路的設(shè)計(jì) 203。5時(shí)鐘電路模塊 203。6輸出顯示電路 213.7音頻輸出部分 213。8整體硬件電路 234系統(tǒng)軟件設(shè)計(jì) 254。1主模塊的設(shè)計(jì) 254.2外部中斷源系統(tǒng)設(shè)計(jì) 264。3基本顯示模塊設(shè)計(jì) 274.4系統(tǒng)初始化程序 284.5音調(diào)、節(jié)拍以及編碼的確定方法 284。6程序流程圖 334。7文檔頂端程序清單 355調(diào)試結(jié)果 465。1系統(tǒng)總電路圖 465.2運(yùn)行結(jié)果及分析 46總結(jié) 48參考文獻(xiàn) 49 1概述傳統(tǒng)的音樂(lè)盒多是機(jī)械音樂(lè)盒,其工作原理是通過(guò)齒輪帶動(dòng)一個(gè)帶有鐵釘?shù)蔫F桶轉(zhuǎn)動(dòng),鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂(lè)盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào).另外,機(jī)械音樂(lè)盒放音時(shí)為了讓音色穩(wěn)定,必須放平不能動(dòng)搖,而且價(jià)格昂貴,不能實(shí)現(xiàn)大批量生產(chǎn).基于單片機(jī)設(shè)計(jì)制作的電子式音樂(lè)盒。與傳統(tǒng)的機(jī)械式音樂(lè)盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂(lè)。電子式音樂(lè)盒動(dòng)力來(lái)源是電池,制作工藝簡(jiǎn)單,可進(jìn)行批量生產(chǎn),所以價(jià)格便宜?;趩纹瑱C(jī)制作的電子式音樂(lè)盒,控制功能強(qiáng)大,可根據(jù)需要選歌,使用方便。所放歌曲的節(jié)奏可以根據(jù)需要進(jìn)行設(shè)置,根據(jù)存儲(chǔ)容量的大小,可以盡可能多的存儲(chǔ)歌曲。另外,可以設(shè)計(jì)彩燈外觀效果,增設(shè)放歌時(shí)間、序號(hào)顯示燈功能,使音樂(lè)盒的功能更加豐富.1.1單片機(jī)數(shù)字音樂(lè)盒有關(guān)介紹電子音樂(lè)已廣泛地應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域。其類型從音樂(lè)卡片到CD、MP3等多種多樣,制作原理也各不相同。聲音是通過(guò)振動(dòng)產(chǎn)生的。單片機(jī)對(duì)某一I/O引腳以一定的頻率循環(huán)置1和清0,這一引腳便產(chǎn)生一定頻率的方波,該方波通過(guò)放大后作用于揚(yáng)聲器便產(chǎn)生一定頻率的聲音。若改變輸出方波的頻率,產(chǎn)生的聲音也就改變了。通過(guò)控制輸出方波的時(shí)間長(zhǎng)短,聲音的長(zhǎng)短也就得到控制。因此,根據(jù)樂(lè)譜,單片機(jī)就可產(chǎn)生電子音樂(lè)。音樂(lè)中最關(guān)鍵的兩個(gè)要素是音符和節(jié)拍.單片機(jī)控制的音樂(lè)發(fā)生器系統(tǒng)由硬件電路和軟件兩部分構(gòu)成。利用單片機(jī)控制的電子音樂(lè)發(fā)生器軟硬件上具有獨(dú)特的優(yōu)點(diǎn),系統(tǒng)的開(kāi)發(fā)周期短,成本低,電路制作容易。更換歌曲時(shí),硬件電路無(wú)需作任何修改,只需修改軟件即可實(shí)現(xiàn)。軟件編程時(shí),可用51系列單片機(jī)的匯編語(yǔ)言或C51語(yǔ)言實(shí)現(xiàn)。同時(shí)還可根據(jù)個(gè)人的習(xí)好通過(guò)軟件改變節(jié)拍的延時(shí)時(shí)間,增加電子音樂(lè)的趣味性。1.1。1發(fā)音原理介紹發(fā)音原理:播放一段音樂(lè)需要的是兩個(gè)元素,一個(gè)是音調(diào),另一個(gè)是音符。首先要了解對(duì)應(yīng)的音調(diào),音調(diào)主要由聲音的頻率決定,同時(shí)也與聲音強(qiáng)度有關(guān).對(duì)一定強(qiáng)度的純音,音調(diào)隨頻率的升降而升降;對(duì)一定頻率的純音、低頻純音的音調(diào)隨聲強(qiáng)增加而下降,高頻純音的音調(diào)卻隨強(qiáng)度增加而上升。另外,音符的頻率有所不同?;谏厦娴膬?nèi)容,這樣就對(duì)發(fā)音的原理有了一些初步的了解.音符的發(fā)音主要靠不同的音頻脈沖.利用單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器0,使其工作在模式1,定時(shí)中斷,然后控制P3.7引腳的輸出音樂(lè)。只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)這個(gè)半周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。1。1.2音符頻率的產(chǎn)生音符及定時(shí)器初始值:例如:中音1(do)的音頻=523HZ,周期T=1/523s=1912定時(shí)器/計(jì)數(shù)器0的定時(shí)時(shí)間為:T/2=1912/2=956定時(shí)器956的計(jì)數(shù)值=定時(shí)時(shí)間/機(jī)器周期=956/1=956(時(shí)鐘頻率=12MHZ)裝入T0計(jì)數(shù)器初值為65536-956=64580將64580裝入T0寄存器中,啟動(dòng)T0工作后,每計(jì)數(shù)956次時(shí)將產(chǎn)生溢出中斷,進(jìn)入中斷服務(wù)時(shí),每次對(duì)P3。0引腳的輸出值進(jìn)行取反,就可得到中音DO(523HZ)的音符音頻。將51單片機(jī)內(nèi)部定時(shí)器工作在計(jì)數(shù)器模式1下,改變計(jì)數(shù)初值TH0,TL0以產(chǎn)生不同的頻率。下表1.1是C調(diào)各音符頻率與計(jì)數(shù)初值T的對(duì)照表:表1.1音符頻率(Hz)/初值()音符頻率(Hz)/初值()低1DO262/63627中1DO523/64580高1DO1042/65056低2RE294/63835中2RE589/64687高2RE1245/65134低3M330/64021中3M661/64780高3M1318/65157低4FA350/64107中4FA700/64822高4FA1397/65178低5SO393/64264中5SO786/64900高5SO1568/65217低6LA441/64402中6LA882/64969高6LA1760/65252低7SI495/64526中7SI990/65031高7SI1967/65282音符、音符編碼及定時(shí)器初始值:為了產(chǎn)生音符,必須求出音符低音5—高音5的計(jì)數(shù)初值.例如C調(diào)的低1DO的THTL=65536—50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536—500000/1042=65056。為了方便寫(xiě)譜,對(duì)其進(jìn)行簡(jiǎn)單的編碼,在編程時(shí),根據(jù)音符編碼(表1.2)查找對(duì)應(yīng)的計(jì)數(shù)初值.比如說(shuō)音樂(lè)是C調(diào)的,那么出現(xiàn)低音的5SO,直接將代碼寫(xiě)為1;出現(xiàn)低音6LA,直接寫(xiě)一個(gè)2的代碼;出現(xiàn)低音7SI,直接寫(xiě)一個(gè)3代碼。表1。2音符編碼表音符音符編碼音符音符編碼不發(fā)音0低5SO1低6LA2低7SI3中1DO4中2RE5中3M6中4FA7中5SO8中6LA9中7SIA高1DOB高2REC高3MD高4FAE高5SOF高6LAG1.1。3節(jié)拍的產(chǎn)生與編碼:音樂(lè)中的節(jié)拍用延時(shí)時(shí)間產(chǎn)生。例如,1拍=0。4s,1/4拍=0。1s,以此類推。假設(shè)1/4拍執(zhí)行一次延時(shí)程序,則1/2拍就執(zhí)行兩次延時(shí)程序,所以只要求出1/4拍的延時(shí)時(shí)間,其余節(jié)拍就是它的倍數(shù)。為了方便,將節(jié)拍數(shù)也進(jìn)行了編碼,并且計(jì)算了樂(lè)譜節(jié)拍編程時(shí)的延時(shí)時(shí)間,如表1.3和表1。4所示。表1。3節(jié)拍數(shù)編碼表按1/4拍為一個(gè)延時(shí)時(shí)間的節(jié)拍編碼與節(jié)拍對(duì)應(yīng)的表按1/8拍為一個(gè)延時(shí)時(shí)間的節(jié)拍編碼與節(jié)拍對(duì)應(yīng)的表節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍節(jié)拍編碼節(jié)拍11/466/411/866/822/488/422/888/833/4A10/433/8A10/844/4C12/444/8C12/855/4F15/455/8表1。4樂(lè)譜節(jié)拍編程時(shí)的時(shí)間延時(shí)表樂(lè)譜節(jié)拍1/4拍的延時(shí)時(shí)間樂(lè)譜節(jié)拍1/8拍的延時(shí)時(shí)間4/4125ms4/462ms3/4187ms3/494ms2/4250ms2/4125ms音符編碼和節(jié)拍編碼完成后,在編程時(shí),每個(gè)音符占一個(gè)字節(jié),高四位是音符編碼,低四位是節(jié)拍編碼.1.2LED顯示屏控制技術(shù)狀況顯示屏的控制系統(tǒng)包括輸入接口電路、信號(hào)控制、轉(zhuǎn)換和數(shù)字化處理電路及輸出接口電路等,涉及的具體技術(shù)很多,其關(guān)鍵技術(shù)包括串行傳輸與并行傳輸技術(shù)、動(dòng)態(tài)掃描與靜態(tài)鎖存技術(shù)、自動(dòng)檢測(cè)及遠(yuǎn)程控制技術(shù)等。1.2。1串行傳輸與并行傳輸技術(shù)LED顯示屏的數(shù)據(jù)傳輸方式主要有串行和并行兩種。日前普遍采用串行控制技術(shù),顯示屏每個(gè)單元內(nèi)部的不同驅(qū)動(dòng)電路和各級(jí)聯(lián)單元之間,每個(gè)時(shí)鐘僅傳送一位數(shù)據(jù).采用這種方式的驅(qū)動(dòng)IC種類較多,不同顯示單元之間的聯(lián)線較少,可減少顯示單元的數(shù)據(jù)傳輸驅(qū)動(dòng)元件,從而提高整個(gè)系統(tǒng)的可靠性和性價(jià)比,具體工程實(shí)現(xiàn)也較為容易。1.2.2動(dòng)態(tài)掃描與靜態(tài)鎖存技術(shù)LED顯示屏控制系統(tǒng)實(shí)現(xiàn)顯示信息的刷新技術(shù)有動(dòng)態(tài)掃描和靜態(tài)鎖存兩種方式。一般室內(nèi)顯示屏多采用動(dòng)態(tài)掃描技術(shù),即一行發(fā)光二極管共用一行驅(qū)動(dòng)寄存器,根據(jù)共用一行驅(qū)動(dòng)寄存器的發(fā)光二極管像素?cái)?shù)目,分為1/4、1/16掃描等。室外顯示屏基本上采用靜態(tài)鎖存技術(shù),即每一個(gè)發(fā)光一極管都對(duì)應(yīng)有一個(gè)驅(qū)動(dòng)寄存器,無(wú)需時(shí)分工作,從而保證了每一個(gè)發(fā)光一極管的亮度占空比為100%.動(dòng)態(tài)掃描法可以大大減少控制器的I/O口,因此應(yīng)用較廣。1。2.3自動(dòng)檢測(cè)及遠(yuǎn)程控制技術(shù)LED顯示屏的構(gòu)成復(fù)雜,特別是室外顯示屏,供電、環(huán)境亮度、環(huán)境溫度條件等都直接影響顯示屏的正常運(yùn)行。在LED顯示屏的控制系統(tǒng)中,因根據(jù)需要對(duì)溫度、亮度、電源等進(jìn)行自動(dòng)檢測(cè)控制,也可根據(jù)需要,遠(yuǎn)程實(shí)現(xiàn)對(duì)顯示屏的亮度、色度調(diào)節(jié)、圖像水平和垂直位置的調(diào)節(jié)以及工作方式的轉(zhuǎn)換等。1.3本設(shè)計(jì)任務(wù)隨著人類社會(huì)的發(fā)展,人們對(duì)視覺(jué)、聽(tīng)覺(jué)方面的享受提出了越來(lái)越高的要求。小小的音樂(lè)盒可以給人們帶來(lái)美好的回憶,提高人們的精神文化享受.傳統(tǒng)的音樂(lè)盒多是機(jī)械型的,體積笨重,發(fā)音單調(diào),不能實(shí)現(xiàn)批量生產(chǎn)。本文設(shè)計(jì)的音樂(lè)盒是以單片機(jī)為核心元件的電子式音樂(lè)盒,體積小,重量輕,能演奏和旋音樂(lè),功能多,使用方便,可以批量生產(chǎn),具有一定的商業(yè)價(jià)值.本設(shè)計(jì)是基于單片機(jī)控制的數(shù)字音樂(lè)盒的設(shè)計(jì),由單片機(jī)AT89C51芯片和LED數(shù)碼若該設(shè)計(jì)使用數(shù)字電路完成,所設(shè)計(jì)的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來(lái)實(shí)現(xiàn),焊接的過(guò)程比較復(fù)雜,成本也非常高.若用單片機(jī)來(lái)設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過(guò)軟件編程來(lái)完成,那么就降低了硬件電路的復(fù)雜性,而且其成本也有所降低,所以在該設(shè)計(jì)中采用單片機(jī)利用AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫(xiě)或用編程器編程。另外,AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內(nèi)有128B的RAM、32條I/O口線、2個(gè)16位定時(shí)計(jì)數(shù)器、5個(gè)中斷源、一個(gè)全雙工串行口等.在該設(shè)計(jì)中利用單片機(jī)I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出各種不同的音調(diào),從而演奏樂(lè)曲,并能夠由LCD顯示信息.鍵盤在單片機(jī)應(yīng)用系統(tǒng)中能實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù),傳送命令等功能,是人工干預(yù)單片機(jī)的主要手段.本設(shè)計(jì)采用4*4鍵盤,16*2LCD,七段顯示數(shù)碼管LED。在開(kāi)機(jī)按鈕按下時(shí)有英文歡迎提示字符,播放時(shí)顯示歌曲序號(hào)(或名稱)。在演奏過(guò)程中可通過(guò)功能鍵選擇樂(lè)曲,暫停,播放。2總體方案論證與設(shè)計(jì)本設(shè)計(jì)是基于單片機(jī)的數(shù)字音樂(lè)盒設(shè)計(jì),由單片機(jī)AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成的一個(gè)單片機(jī)電子數(shù)字音樂(lè)盒。要求利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào)并采用LCD顯示信息,從而演奏樂(lè)曲,開(kāi)機(jī)時(shí)有英文歡迎提示字符,播放時(shí)顯示歌曲序號(hào)(或名稱),可通過(guò)功能鍵選擇樂(lè)曲,暫停,播放。本設(shè)計(jì)采用4*4鍵盤,16*2LCD,七段顯示數(shù)碼管LED。下面對(duì)各模塊的設(shè)計(jì)逐一進(jìn)行論證比較。2.1單片機(jī)的選取首先選擇單片機(jī)中最為普遍的MCS51系列。其中AT89C2051是美國(guó)ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機(jī),片內(nèi)含2kbytes的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PEROM)和128bytes的隨機(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)大的AT89C2051單片機(jī)可應(yīng)用于許多高性價(jià)比的應(yīng)用場(chǎng)合.主要性能:和MCS-51產(chǎn)品兼容;2KB可重編程FLASH存儲(chǔ)器(1000次);2.7-6V電壓范圍;全靜態(tài)工作:0Hz—24KHz2級(jí)程序存儲(chǔ)器保密鎖定128*8位內(nèi)部RAM15條可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器6個(gè)中斷源可編程串行通道高精度電壓比較器(P1.0,P1。1,P3。6)直接驅(qū)動(dòng)LED的輸出端口由于完成核心功能—-音頻輸出只需一個(gè)I/O口,并且額外功能LED移位顯示可根據(jù)所選單片機(jī)的剩余I/O口進(jìn)行設(shè)計(jì),因此AT89C2051足以滿足基本要求.其20個(gè)引腳體積小巧,內(nèi)部2k字節(jié)的程序存儲(chǔ)器容量適中,低壓低頻工作條件,并且價(jià)格低廉容易購(gòu)得。綜上,本次設(shè)計(jì)選擇AT89C2051單片機(jī)。2.2LED顯示方式方案一:靜態(tài)顯示。將一幀圖像中的每一個(gè)二極管的狀態(tài)分別用0和1表示,若為0,則表示LED無(wú)電流,即暗狀態(tài);若為1則表示二極管被點(diǎn)亮。若給每一個(gè)發(fā)光二極管一個(gè)驅(qū)動(dòng)電路,一幅畫(huà)面輸入以后,所有LED的狀態(tài)保持到下一幅畫(huà)。對(duì)于靜態(tài)顯示方式,所需的譯碼驅(qū)動(dòng)裝置很多,引線多而復(fù)雜,成本高,且可靠性也較低。方案二:動(dòng)態(tài)顯示。對(duì)一幅畫(huà)面進(jìn)行分割,對(duì)組成畫(huà)面的各部分分別顯示,是動(dòng)態(tài)顯示方式。動(dòng)態(tài)顯示方式,可以避免靜態(tài)顯示的問(wèn)題。但設(shè)計(jì)上如果處理不當(dāng)易造成亮度低,閃爍問(wèn)題。因此合理的設(shè)計(jì)既應(yīng)保證驅(qū)動(dòng)電路易實(shí)現(xiàn),又要保證圖像穩(wěn)定、無(wú)閃爍。動(dòng)態(tài)顯示采用多路復(fù)用技術(shù)的動(dòng)態(tài)掃描顯示方式,復(fù)用的程度不是無(wú)限增加的,因?yàn)槔脛?dòng)態(tài)掃描顯示使我們看到一幅穩(wěn)定畫(huà)面的實(shí)質(zhì)是利用了人眼的暫留效應(yīng)和發(fā)光二極管發(fā)光時(shí)間的長(zhǎng)短,發(fā)光的亮度等因素。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)掃描刷新頻率(發(fā)光二極管的停閃頻率)為50Hz,發(fā)光二極管導(dǎo)通時(shí)間≥1ms時(shí)顯示亮度較好,無(wú)閃爍感。鑒于上述原因,采用方案二.2.3LED驅(qū)動(dòng)模塊方案一:采用靜態(tài)鎖存方式,將每一個(gè)LED發(fā)光管的一端接至單片機(jī)的一個(gè)I/O口,另一端通過(guò)電阻接電源。這種方法可以直接驅(qū)動(dòng)LED,原理簡(jiǎn)單,驅(qū)動(dòng)能力強(qiáng),LED的亮度也可以通過(guò)限流電阻調(diào)節(jié),非常方便,但此種方法太浪費(fèi)單片機(jī)的I/O口,只適合于較小的系統(tǒng).方案二:采用動(dòng)態(tài)掃描方式,通過(guò)三極管驅(qū)動(dòng)并聯(lián)在一起的LED發(fā)光管的一端(共陰或共2端),LED發(fā)光管的另一腳接通用I/O口,控制其亮滅。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。比較以上兩種方案,系統(tǒng)設(shè)計(jì)中采用方案二。2。4系統(tǒng)總體結(jié)構(gòu)框圖3系統(tǒng)硬件設(shè)計(jì)本設(shè)計(jì)中用到了AT89C51單片機(jī),4*4鍵盤,蜂鳴器,2LCD等硬件電路常用元器件.3。1AT89C51芯片功能和硬件連接AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS—51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。3.1.1主要特性:·與MCS-51兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器
·壽命:1000寫(xiě)/擦循環(huán)
·數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz—24Hz
·三級(jí)程序存儲(chǔ)器鎖定
·128*8位內(nèi)部RAM
·32可編程I/O線
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路3。1。2管腳說(shuō)明(如圖3。1):圖3。1VCC:供電電壓.GND:接地.
P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫(xiě)“1"時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入.并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào).
P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流.當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入.作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:
管口管腳備選功能
P3。0RXD(串行輸入口)
P3。1TXD(串行輸出口)
P3.2/INT0(外部中斷0)
P3。3/INT1(外部中斷1)
P3.4T0(記時(shí)器0外部輸入)
P3。5T1(記時(shí)器1外部輸入)
P3。6/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)
P3。7/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間.
ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的.然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖.如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高.如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào).在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP:/EA保持低電平時(shí),在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器.在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2:來(lái)自反向振蕩器的輸出.
3.1。3振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。3.1.4芯片擦除:整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來(lái)完成.在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行.此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。3。2LED顯示器LED(LightEmittingDiode)是發(fā)光二極管英文名稱的縮寫(xiě)。LED顯示器是由發(fā)光二極管構(gòu)成的,所以在顯示器前面冠以“LED”。LED顯示器在單片機(jī)系統(tǒng)中的應(yīng)用非常普遍.3。2。1LED顯示器的結(jié)構(gòu)常用的LED顯示器為8段。每一個(gè)段對(duì)應(yīng)1個(gè)發(fā)光二極管,這種顯示器有共陽(yáng)極和共陰極兩種:共陰極LED顯示器的發(fā)光二極管的陰極連接在一起,通常此公共陰極接地。當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。同樣,共陽(yáng)極LED顯示器的發(fā)光二極管的陽(yáng)極連接在一起,通常此公共陽(yáng)極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。為了使LED顯示器顯示不同的符號(hào)或數(shù)字,就要把不同段的發(fā)光二極管點(diǎn)亮,這樣就要為L(zhǎng)ED提供代碼,因?yàn)檫@些代碼可使LED相應(yīng)的段發(fā)光,從而顯示不同字型,因此該代碼稱為段碼.7段發(fā)光二極管,再加上1個(gè)小數(shù)點(diǎn)位,共計(jì)8位。因此提供給LED顯示器的段碼正好是1B。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如下表3。1:表3.18段LED結(jié)構(gòu)及外形代碼位D7D6D5D4D3D2D1D0顯示位dpgfEdcba3。2.2LED顯示器工作原理由N個(gè)LED顯示塊可以拼接成N位的LED顯示器。如圖是LED顯示器的結(jié)構(gòu)原理圖3.2.N個(gè)LED顯示器有N個(gè)位選線和8*N位根段碼線。段碼線控制顯示字符的字型,而位選線為各個(gè)LED顯示塊中各段的公共端,它控制該LED顯示位的亮或暗。LED顯示器有靜態(tài)顯示和動(dòng)態(tài)顯示兩種。3。3鍵盤鍵盤在單片機(jī)應(yīng)用系統(tǒng)中能實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù),傳送命令等功能,是人工干預(yù)單片機(jī)的主要手段。3.3。1鍵盤輸入的特點(diǎn)鍵盤實(shí)質(zhì)上是一級(jí)按鍵開(kāi)關(guān)的集合。通常,鍵盤開(kāi)關(guān)利用了機(jī)械觸點(diǎn)的合、斷作用。3.3.2按鍵的確認(rèn)鍵的閉合與否,反映在行線輸出電壓上就呈現(xiàn)高電平或低電平,如果高電平表示鍵斷開(kāi),低電平則表示鍵閉合,通過(guò)對(duì)行線電平高低狀態(tài)的檢測(cè),便可確認(rèn)按鍵按下與否.為了確保CPU對(duì)一次按鍵動(dòng)作只確認(rèn)一次按鍵有效,必須消除抖動(dòng)的影響。按鍵輸入電路由4*4矩陣鍵盤組成,P1口作為輸入控制按鍵,其中P1。0~P1.3掃描行,P1。4~P1.7掃描列。3.3.3如何消除按鍵的抖動(dòng)采用軟件來(lái)消除按鍵抖動(dòng)的基本思想是:在一次檢測(cè)到有鍵按下時(shí),該鍵所對(duì)應(yīng)的行線為低電平,執(zhí)行一段延時(shí)10MS的子程序后,確認(rèn)該行線電平是不否仍為低電平,如果仍為低電平,則確認(rèn)為該行確實(shí)有鍵按下。當(dāng)按鍵松開(kāi)時(shí),行線的低電平變?yōu)楦唠娖?,?zhí)行一段延時(shí)10MS的子程序后,檢測(cè)該行線為高電平,說(shuō)明按鍵確實(shí)已經(jīng)松開(kāi).3.4系統(tǒng)復(fù)位電路的設(shè)計(jì)智能系統(tǒng)一般應(yīng)有手動(dòng)或上電復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)通常有兩種方式:RC復(fù)位電路和專用μP監(jiān)控電路。前者實(shí)現(xiàn)簡(jiǎn)單,成本低,但復(fù)位可靠性相對(duì)較低;后者成本較高,但復(fù)位可靠性高,尤其是高可靠重復(fù)復(fù)位.對(duì)于復(fù)位要求高、并對(duì)電源電壓進(jìn)行監(jiān)視的場(chǎng)合,大多采用這種方式。本次課程設(shè)計(jì)采用了上電按鈕電平復(fù)位電路,如圖3。2圖3.23。5時(shí)鐘電路模塊時(shí)鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘是保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。為達(dá)到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,另外有兩個(gè)22P的獨(dú)石電容,兩晶振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳.具體連接圖如圖3。3所示:圖3。33。6輸出顯示電路用P2。0~P2.2作為L(zhǎng)CD的RS、R/W、E的控制信號(hào);用P0。0~P0.7作為L(zhǎng)CD的D0~D7的控制信號(hào)。由于P0口作為輸出,應(yīng)加上拉電阻。3。7音頻輸出部分整個(gè)輸出部分由一個(gè)100uF電容、兩個(gè)S9013NPN三極管和一個(gè)蜂鳴器/喇叭組成,原理圖如右圖所示:100uF電容是用來(lái)濾波的,兩個(gè)NPN三極管起到放大信號(hào)的作用,最后由蜂鳴器/喇叭表現(xiàn)出信號(hào)。用P3。7口控制蜂鳴器。輸出顯示電路如圖3。4所示:圖3。4輸出顯示電路3.8整體硬件電路如圖3。5所示:圖3.5音樂(lè)盒硬件電路原理圖3.8。1原理說(shuō)明:當(dāng)鍵盤有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂(lè)曲。同時(shí)啟動(dòng)定時(shí)器T1,顯示樂(lè)曲播放的時(shí)間,并驅(qū)動(dòng)LCD,顯示歌曲號(hào)及播放時(shí)間。 1)
硬件電路中用P1。0~P1。7控制按鍵,其中P1。0~P1.3掃描行,P1。4~P1。7掃描列;2)用P2。0~P2。2作為L(zhǎng)CD的RS、R/W、E的控制信號(hào);3)用P0。0~P0.7作為L(zhǎng)CD的D0~D7的控制信號(hào);
4)用P3.7口控制蜂鳴器;
5)電路為12MHz晶振頻率工作,起振電路中C1,C2均為30pf。3.8。2鍵盤按鍵鍵盤按鍵分布如下:012
3
45
6
7
89ABCDE
F
按鍵功能說(shuō)明:1—A十首歌曲C下一首歌曲D上一首歌曲E暫停F開(kāi)機(jī)畫(huà)面PAGEPAGE48 --4系統(tǒng)軟件設(shè)計(jì)4。1主模塊的設(shè)計(jì)主模塊是系統(tǒng)軟件的主框架。結(jié)構(gòu)化程序設(shè)計(jì)一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構(gòu)建。它的合理與否關(guān)系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖6所示:圖64。2外部中斷源系統(tǒng)設(shè)計(jì)在本設(shè)計(jì)中中斷源是采用外部中斷0方式,其入口地址是0003H。其中斷響應(yīng)級(jí)別最高。(1)定時(shí)器/計(jì)數(shù)器工作方式寄存器TMOD用于選擇定時(shí)器/計(jì)數(shù)器的工作方式和工作模式。其格式如下表4.1:TMODD7D6D5D4D3D2D1D0GATEM1M0GATEM1M0T1方式字段T0方式字段表4。1下面表4.2對(duì)TMOD各位進(jìn)行說(shuō)明:門控位—GATE工作方式選擇位—M1、M0M1M0工作方式00方式0,為13位定時(shí)器/計(jì)數(shù)器01方式1,為16位定時(shí)器/計(jì)數(shù)器10方式2,8位的常數(shù)自動(dòng)重新裝載的定時(shí)器/計(jì)數(shù)器11方式3,僅適用于T0表4.2其中,在本設(shè)計(jì)中采用方式1的16位定時(shí)器/計(jì)數(shù)器?!?jì)數(shù)器模式和定時(shí)器模式選擇位=0,為定時(shí)器模式。=1,為計(jì)數(shù)模式.定時(shí)器/計(jì)數(shù)器控制寄存器TCON,其格式如下表4.3:TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0ITO表4.3其各位的功能如下:TF1、TF0—計(jì)數(shù)溢出標(biāo)志位當(dāng)計(jì)數(shù)器溢出時(shí),該位置1。TR1、TR0—計(jì)數(shù)運(yùn)行控制位4.3基本顯示模塊設(shè)計(jì)基本顯示模塊設(shè)計(jì)的重點(diǎn)是由顯示代碼取得相應(yīng)的段碼,顯示段碼數(shù)據(jù)的并行發(fā)送,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好.程序流程如圖4。4所示。圖4。44。4系統(tǒng)初始化程序RSBITP2.0;定義液晶顯示端口標(biāo)RWBITP2。1EBITP2。2L50MSEQU60HL1MSEQU61HL250MSEQU62HSECEQU65HMINEQU64HHOUEQU63HORG0000HLJMPMAINLJMPTT0ORG001BHLJMPT1INTORG1000HMAIN:液晶初始化MOVSP,#70HMOVP0,#01H;清屏CALLENABLEMOVP0,#38H;8位,2行顯示LCALLENABLEORG000BH4。5音調(diào)、節(jié)拍以及編碼的確定方法一般說(shuō)來(lái),單片機(jī)演奏音樂(lè)基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說(shuō)不能像電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂(lè)只需弄清楚兩個(gè)概念即可,也就是“音調(diào)"和節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。4.5。1音調(diào)的確定不同音高的樂(lè)音是用C、D、E、F、G、A、B來(lái)表示,這7個(gè)字母就是音樂(lè)的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來(lái)米發(fā)梭拉西”的讀音,這是唱曲時(shí)樂(lè)音的發(fā)音,所以叫“音調(diào)",即Tone.把C、D、E、F、G、A、B這一組音的距離分成12個(gè)等份,每一個(gè)等份叫一個(gè)“半音”。兩個(gè)音之間的距離有兩個(gè)“半音”,就叫“全音”。在鋼琴等鍵盤樂(lè)器上,C–D、D–E、F–G、G–A、A–B兩音之間隔著一個(gè)黑鍵,他們之間的距離就是全音;E–F、B–C兩音之間沒(méi)有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號(hào)或者b號(hào)的叫變化音。﹟叫升記號(hào),表示把音在原來(lái)的基礎(chǔ)上升高半音,b叫降記音,表示在原來(lái)的基礎(chǔ)上降低半音.例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294Hz)的一倍。 1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。 2)利用AT89C51的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。 此外結(jié)束符和休止符可以分別用代碼00H和FFH來(lái)表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。 3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次技術(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)。 計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下: N=Fi2Fr N:計(jì)算值; Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHz;其計(jì)數(shù)值的求法如下:T=65536-N=65536—Fi2Fr例如:設(shè)K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz).高音的DO(1046Hz)的計(jì)算值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=65059C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表4。4所示。表4.4C低音頻率T參數(shù)中音頻率T參數(shù)高音頻率T參數(shù)Do2621908229Do523956115Do10465757Do﹟2771805217Do﹟554903108Do﹟11095454Re2941701204Re587852102Re11755151Re﹟3111608193Re﹟62280497Re﹟12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa﹟3701351162Fa﹟74067681Fa﹟14804141So3921276153So78463877So15683838So﹟4151205145So﹟83160272So﹟16613636La4401136136La88056868La17603434La﹟4641078129La﹟93253664La﹟18653232Si4941012121Si98850661Si197630304.5.2節(jié)拍的確定若要構(gòu)成音樂(lè),光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂(lè)具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快滿度.“節(jié)拍”,即Beat,簡(jiǎn)單說(shuō)就是打拍子,就像我們聽(tīng)音樂(lè)不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4拍為0。125s。至于1拍多少s,并沒(méi)有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽(tīng)的悅耳就好.音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂(lè)是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成音樂(lè)。了解音樂(lè)的一些基礎(chǔ)知識(shí),我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂(lè)。對(duì)于單片機(jī)來(lái)說(shuō),產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生這樣的方波頻率信號(hào)。因此,需要弄清楚音樂(lè)中的音符和對(duì)應(yīng)的頻率,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。表4。5節(jié)拍與節(jié)拍碼對(duì)照節(jié)拍碼節(jié)拍數(shù)節(jié)拍碼節(jié)拍數(shù)11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖4.5為節(jié)拍碼的對(duì)照。如果1拍為0。4秒,1/4拍實(shí)0。1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù),如表4.5為1/4和1/8節(jié)拍的時(shí)間設(shè)定。表4.51/4和1/8節(jié)拍的時(shí)間設(shè)定曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125毫秒調(diào)4/462毫秒調(diào)3/4187毫秒調(diào)3/494毫秒調(diào)2/4250毫秒調(diào)2/4125毫秒4.5.3編碼doremifasolasi分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長(zhǎng)度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個(gè)十六分音符,編為4,其它的播放時(shí)間以此類推.音調(diào)作為編碼的高4位,而播放時(shí)間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個(gè)編碼。以0xff作為曲譜的結(jié)束標(biāo)志。舉例1:音調(diào)do,發(fā)音長(zhǎng)度為兩拍,即二分音符,將其編碼為0x18.舉例2:音調(diào)re,發(fā)音長(zhǎng)度為半拍,即八分音符,將其編碼為0x22歌曲播放的設(shè)計(jì)。先將歌曲的簡(jiǎn)譜進(jìn)行編碼,儲(chǔ)存在一個(gè)數(shù)據(jù)類型為unsignedchar的數(shù)組中.程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時(shí)器0,使之定時(shí)操作蜂鳴器,得出相應(yīng)的音調(diào);接著分離出該數(shù)的低4位,得到延時(shí)時(shí)間,接著調(diào)用軟件延時(shí)。表4。6簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、T值、節(jié)拍數(shù)簡(jiǎn)譜發(fā)音簡(jiǎn)譜碼T值節(jié)拍碼節(jié)拍數(shù)5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF652174.6程序流程圖本設(shè)計(jì)的程序流程如下:先從主程序開(kāi)始,接著初始化變量及LCD接口,然后初始化方波發(fā)生器、晶振管,使LCD顯示信息,就進(jìn)入了開(kāi)機(jī)狀態(tài),等待動(dòng)作—-選擇按鍵,包括播放鍵,暫停鍵,停止鍵,當(dāng)然也可以選擇返回;加入選擇的是播放鍵,LCD上就會(huì)-7-現(xiàn)實(shí)歌曲編號(hào),與此同時(shí)演奏相應(yīng)的樂(lè)曲,此時(shí),你可以按上一曲或下一曲鍵,使其演奏上一個(gè)或者先一個(gè)樂(lè)曲。其流程圖如下:主程序流程圖LCD顯示流程圖4.7文檔頂端程序清單RSBITP2。0 ;引腳定義,定義液晶顯示端口標(biāo)號(hào)RWBITP2。1EBITP2。2L50MSEQU60H;工作內(nèi)存定義L1MSEQU61HL250MSEQU62HSECEQU65HMINEQU64HHOUEQU63H ORG 0000HLJMP MAIN ORG 000BH;定時(shí)器T0溢出中斷入口地址 LJMP TT0 ORG 001BH;定時(shí)器T1溢出中斷入口地址LJMP T1INTORG 1000HMAIN:;液晶初始化 MOV SP,#70HMOV P0,#01H;清屏CALL DISPLAYMOV P0,#38H;8位,2行顯示LCALL DISPLAYMOV P0,#0FH;屏顯on,光標(biāo)on,閃爍onLCALL DISPLAYMOV P0,#06H;計(jì)數(shù)地址加1,顯示幕onLCALL DISPLAYLCALL INITIL;內(nèi)存初始化WAIT:LCALL KEY;鍵盤掃描,是否有鍵按下,否則等待LCALL MODD LJMP WAITKEY: NOP NOP LCALL KS JNZ K1 ;有按鍵轉(zhuǎn)到K1 LCALL KAIJI LCALL SOPXN: LJMP KEYK1: LCALL MODD LCALL MODD LCALL KS JNZ K2 LJMP KEYK2: MOV R2,#0FEH;讀鍵盤 MOV R4,#00HK3: MOV A,R2 MOV P1,A MOV A,P1JB ACC.4,L1;為1跳轉(zhuǎn),第一行無(wú)按鍵 MOV A,#00H LJMP LKL1: JB ACC。5,L2 MOV A,#04H LJMP LKL2: JB ACC。6,L3 MOV A,#08H LJMP LKL3: JB ACC.7,NEXT1 MOV A,#0CHLK: ADD A,R4 PUSH ACCK4: LCALL DELAY1;若同時(shí)有其他按鍵,則等待 LCALL KS JNZ K4 MOV R3,#07H CLR A MOV R0,#30H MOV R1,#31HMM1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R3,MM1 POP ACC MOV @R0,A RETNEXT1: INC R4 ;列掃描 MOV A,R2 JNB ACC。3,N2 LJMP N1N2: LJMP KEYN1: RL A MOV R2,A LJMP K3KS: MOV A,#0F0H;判斷P1口 MOV P1,A NOP NOP MOV A,P1 CPL A ANL A,#0F0H RETDELAY1:SETB RS0DL:MOV R5,#0AHDL2:MOV R6,#63DL3:NOPNOPDJNZ R6,DL3DJNZ R5,DL2CLR RS0RETINITIL:;30H—37H初值為零MOV R3,#08H MOV R0,#30HM1: MOV @R0,#00H INC R0 DJNZ R3,M1 RETMODD:;顯示MOV P0,#8EHCALL DISPLAYMOV A,37HMOV DPTR,#TABLE3MOVC A,@A+DPTRCALL WRITE2RETKAIJI: MOV A,37H;開(kāi)機(jī)提示字 CJNE A,#0FH,DFFMOV P0,#80H;設(shè)光標(biāo)地址CALL DISPLAYMOV DPTR,#TABLE1;寫(xiě)數(shù)據(jù)CALL WRITE1DFF: RET;按鍵值播放歌曲SOP: MOV A,37H CJNE A,#01H,A11 LCALL MODD MOV 52H,#HIGHTABLE10 MOV 53H,#LOWTABLE10 LCALL INITILE2 LCALL MAIN0A11: CJNE A,#02H,A22 LCALL MODD MOV 52H,#HIGHTABLE20 MOV 53H,#LOWTABLE20 LCALL INITILE2 lcall MAIN0A22: CJNE A,#03H,A33 LCALL MODD MOV 52H,#HIGHTABLE30 MOV 53H,#LOWTABLE30 LCALL INITILE2 lcall MAIN0A33: CJNE A,#04H,A44 LCALL MODD MOV 52H,#HIGHTABLE40 MOV 53H,#LOWTABLE40 LCALL INITILE2 lcall MAIN0A44: CJNE A,#05H,A55 LCALL MODD MOV 52H,#HIGHTABLE50 MOV 53H,#LOWTABLE50 LCALL INITILE2 lcall MAIN0A55: CJNE A,#06H,A66 LCALL MODD MOV 52H,#HIGHTABLE60 MOV 53H,#LOWTABLE60 LCALL INITILE2 lcall MAIN0A66: CJNE A,#07H,A77 LCALL MODD MOV 52H,#HIGHTABLE70 MOV 53H,#LOWTABLE70 LCALL INITILE2 lcall MAIN0A77: CJNE A,#08H,A88 LCALL MODD MOV 52H,#HIGHTABLE80 MOV 53H,#LOWTABLE80 LCALL INITILE2 lcall MAIN0A88: CJNE A,#09H,A99 LCALL MODD MOV 52H,#HIGHTABLE90 MOV 53H,#LOWTABLE90 LCALL INITILE2 lcall MAIN0A99: CJNE A,#0AH,AAA LCALL MODD MOV 52H,#HIGHTABLE100 MOV 53H,#LOWTABLE100 LCALL INITILE2 lcall MAIN0AAA: RETINITILE2: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00HMOV A,HOU MOV B,#10 DIV AB ADD A,#30H;將BCD嗎轉(zhuǎn)化為ASIIC碼MOV P0,#0C8H;顯示小時(shí)十位 CALL DISPLAY CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H;顯示小時(shí)個(gè)位 CALL DISPLAY CALL WRITE2 MOV A,#3AH MOV P0,#0DH;顯示冒號(hào) CALL DISPLAY CALL WRITE2 MOV A,MIN MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH;顯示分十位 CALL DISPLAY CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CCH;顯示分個(gè)位 CALL DISPLAY CALL WRITE2 MOV A,#3AH MOV P0,#0CDH;顯示冒號(hào) CALL DISPLAY CALL WRITE2 MOV A,SEC MOV B,#10 DIV AB ADD A,#30HMOV P0,#0CEH;顯示秒十位 CALL DISPLAY CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH;顯示秒個(gè)位 CALL DISPLAY CALL WRITE2 MOV P0,#0C0H;設(shè)光標(biāo)地址 CALL DISPLAY MOV DPTR,#TABLE2;寫(xiě)數(shù)據(jù) CALL WRITE1 RETDISPLAY: CLR RS;寫(xiě)指令 CLR RW CLR E LCALL DELAY SETB E RETWRITE1: MOV R1,#00H;寫(xiě)數(shù)據(jù)A1: MOV A,R1 MOVC A,@A+DPTR CALL WRITE2 INC R1 CJNE A,#0FEH,A1;未到字符串末尾繼續(xù) RETWRITE2: MOV P0,A SETB RS CLR RW CLR E CALL DELAY SETB E RETDELAY: MOV R4,#05D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,90H,88H,83H,0C6H,0A1H,86H,8EHTAB1:DB89H,86H,0C7H,0C7H,0C0HTAB2:DB0C6H,88H,0C0HTABLE1:DB'WELCOMHERE',0FEHTABLE2:DB’DFFWB',0FEHTABLE4:DB'CAU’,0FEHTABLE3:DB30H,31H,32H,33hDB34H,35H,36H,37HDB38h,39H,41H,42HDB43H,44H,45H,46H MAIN0: MOV TMOD,#11H;播放歌曲程序 MOV IE,#8aHMOVTH1,#3cHMOVTL1,#0b0H LCALL KS JNZ TTM12 MOV 40H,#00HNEXT20:MOV A,40H MOV DPH,52H MOV DPL,53H MOVC A,@A+DPTR MOV R2,A JZ STOP ANL A,#0FH MOV R1,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP W1SING:DEC A MOV 22H,A RL A MOV DPTR,#TABLE00 MOVC A,@A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL0,A MOV 20H,A SETB TR0 SETB TR1W1:LCALL DELAY30 INC 40H LCALL KS ;有鍵跳出 JNZ STOP LJMP NEXT20STOP:CLR TR0 CLR TR1LJMPMAIN0TTM12:LCALL K2 MOV A,37H CJNE A,#0EH,TTM13 CLR TR1 LCALL DELAY1TTM120: LCALL KS LCALL DELAY1 JZ TTM120LCALL K2 MOV A,37H CJNE A,#0EH,TTM120 SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14 MOV A,52H INC A MOV 52H,A MOV A,53H INC A MOV 53H,A MOV A,36H INC A MOV 37H,A LJMP TTM2TTM14: CJNE A,#0DH,TTM2 MOV A,52H DEC A MOV 52H,A MOV A,53H DEC A MOV 53H,A MOV A,36H DEC A MOV 37H,ATTM2: RETTT0: PUSH ACC;定時(shí)器中斷子程序0 PUSH PSW MOV TL0,20H MOV TH0,21H CPL P3。7 POP PSW POP ACC RETI;定時(shí)器中斷子程序1T1INT:MOV TH1,#3CH;定時(shí)器中斷子程序1MOV TL1,#0B0H DJNZ L50MS,X4 MOV L50MS,#20SECSET:;每秒種時(shí)鐘刷新秒顯示一次MOV A,SECMOV B,#10 DIV AB ADD A,#30HMOV P0,#0CEH;顯示秒十位 CALL DISPLAY CALL WRITE2MOV A,B ADD A,#30H MOV P0,#0CFH;顯示秒個(gè)位 CALL DISPLAY CALL WRITE2MOV A,SEC INC A MOV SEC,A XRL A,#60X4: JNZ OUTMINSET:MOV SEC,#00H;*每分鐘刷新分顯示一次 MOV A,MIN INC A MOV MIN,AMOV B,#10 DIV AB ADD A,#30HMOV P0,#0CBH;顯示分十位 CALL DISPLAY CALL WRITE2MOV A,B ADD A,#30H MOV P0,#0CCH;顯示分個(gè)位 CALL DISPLAY CALL WRITE2 MOV A,MIN MOV B,#3 MUL ABMOV B,#100 DIV AB MOV R2,A MOV A,#10 XCH A,B DIV ABMOV A,MIN XRL A,#60 JNZ OUTHOUSET: MOV MIN,#00H;每小時(shí)刷新小時(shí)顯示一次 MOV A,HOU MOV B,#10 DIV AB ADD A,#30H;將BCD嗎轉(zhuǎn)化為ASIIC碼 MOV P0,#0C8H;顯示小時(shí)十位 CALL DISPLAY CALL WRITE2MOV A,B ADD A,#30H MOV P0,#0C9H;顯示小時(shí)個(gè)位 CALL DISPLAY CALL WRITE2MOV A,HOU INC A MOV HOU,A XRL A,#10 JNZ OUT SJMP OVERFLOWOUT: RETI;溢出處理OVERFLOW: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H RETIDELAY30: MOV R7,#2W2:MOV R4,#125W3:MOV R3,#248 DJNZ R3,$ DJNZ R4,W3 DJNZ R7,W2 DJNZ R1,DELAY30 RETTABLE00: DW64580,64684,64777,64820 DW64898,64968,65030,64260 DW64400,64524,65058,63835,64021TABLE10: ;第一首《精忠報(bào)國(guó)》DB66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H DB32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H DB24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H DB12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H DB66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H DB22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H DB62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H DB64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H DB52H,62H,7FH,74H,04H,58H,6FH DB00TABLE20: ;第二首《月亮代表我的心》DB02H,82H DB16H,32H,54H,02H,52H DB0A6H,32H,54H,02H,52H DB64H,74H,0B6H,64H DB52H,5CH,32H,22H DB16H,12H,14H,32H,22H DB16H,12H,14H,22H,32H DB26H,12H,94H,22H,32H DB2CH DB32H,52H DB36H,22H,14H,54H DB0ACH,92H,0A2H DB96H,0A2H,96H,82H DB3CH,54H DB36H,22H,14H,54H DB0ACH,92H,0A2H DB16H,12H,14H,22H,32H DB2CH,02H,82H DB16H,32H,56H,12H DB0A6H,32H,56H,52H DB66H,72H,0B6H,62H DB62H,52H,58H,32H,22H DB16H,12H,14H,32H,22H DB16H,12H,14H,22H,32H DB26H,92H,0A4H,12H,22H DB1CH DB00TABLE30:;第三首《看我七十二變》DB0d4H,84H,94H,82H,92H DB12H,22H,82H,92H,02H,92H,82H,0d2H DB82H,92H,14H,84H,02H,0d1H,0d1H DB0c2H,0d2H,84H,0d2H,0d2H,82H,82H DB84H,82H,82H,94H,82H,0d2H DB82H,82H,82H,92H,02H,82H,82H,0d2H DB0c4H,84H,0d4H,92H,0d2H DB82H,0d2H,82H,92H,98H DB04H,94H,88H DB04H,94H,88H DB04H,94H,88H DB04H,94H,88H,04H DB32H,32H,22H,12H,02H,92H,12H,92H DB32H,32H,22H,12H,02H,92H,12H,92H DB32H,32H,22H,12H,02H,92H,12H,22H DB54H,44H,34H,12H,22H DB34H,22H,12H,02H,92H,12H,92H DB32H,32H,22H,12H,02H,92H,12H,92H DB32H,32H,22H,12H,02H,92H,12H,22H DB54H,44H,32H,22H,12H,92H DB00 TABLE40:;第四首《同一首歌》DB88h,14h,24h,36H,42H,34H,14H,28H,14H,94H DB1fH,88H,14H,24H,34H,32H,42H,54H,14H DB46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H DB76H,62H,68H,54H,52H,62H,74H,62H,52H,3fH DB46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H DB92H,84H,94H,1fH,0b8H,68H,46H,52H,68H DB74H,72H,72H,74H,62H,52H,3fH,0b8H,68H DB46H,52H,68H,64H,62H,62H,64H,42H,32H,2fH DB58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12H DB94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fH DB00TABLE50:;第五首《大?!?DB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H DB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H DB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cH DB82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H DB22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H DB22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52H DB62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22HDB12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生室醫(yī)療器具管理制度
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院護(hù)理會(huì)診制度
- 診所衛(wèi)生與安全管理制度
- 垃圾存放點(diǎn)衛(wèi)生工作制度
- 化學(xué)實(shí)驗(yàn)室衛(wèi)生規(guī)章制度
- 村委會(huì)村莊衛(wèi)生管理制度
- 車間員工衛(wèi)生間管理制度
- 倉(cāng)庫(kù)衛(wèi)生物品管理制度
- 衛(wèi)生員安全管理制度匯編
- 理發(fā)店衛(wèi)生消毒管理制度
- 實(shí)習(xí)生醫(yī)德醫(yī)風(fēng)培訓(xùn)
- 橫穿公路管道施工方案
- 真空澆注工安全操作規(guī)程(3篇)
- 快樂(lè)讀書(shū)吧:非洲民間故事(專項(xiàng)訓(xùn)練)-2023-2024學(xué)年五年級(jí)語(yǔ)文上冊(cè)(統(tǒng)編版)
- GB/T 19609-2024卷煙用常規(guī)分析用吸煙機(jī)測(cè)定總粒相物和焦油
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)
- 高處安全作業(yè)票(證)模板
- (正式版)JTT 728.2-2024 裝配式公路鋼橋+第2部分:構(gòu)件管理養(yǎng)護(hù)報(bào)廢技術(shù)要求
- 醫(yī)源性藥物依賴防范和報(bào)告專家講座
- 年度生產(chǎn)經(jīng)營(yíng)分析報(bào)告
- (正式版)實(shí)習(xí)崗位-OFFER通知書(shū)
評(píng)論
0/150
提交評(píng)論