單片機(jī)演奏一個(gè)音符,是通過(guò)引腳,周期性的輸出一個(gè)特定頻率的方波。? 這就需要單片機(jī),在半個(gè)周期內(nèi)輸出低電平、另外半個(gè)周期輸出高電平,周而復(fù)始。?
?半個(gè)周期的時(shí)間是多長(zhǎng)呢?眾所周知,周期為頻率的倒數(shù),可以通過(guò)音符的頻率計(jì)算出半周期。? 演奏時(shí),要根據(jù)音符頻率的不同,把對(duì)應(yīng)的、半個(gè)周期的定時(shí)時(shí)間初始值,送入定時(shí)器,再由定時(shí)器按時(shí)輸出高低電平。
? 下面是個(gè)網(wǎng)上廣泛流傳的單片機(jī)音樂(lè)演奏程序,它可以循環(huán)的播放“世上只有媽媽好”這首樂(lè)曲。很多人都關(guān)心如何修改這個(gè)樂(lè)曲的內(nèi)容,但是不知如何入手。 做而論道對(duì)這個(gè)程序,給出說(shuō)明,希望對(duì)大家有所幫助,以后大家自己就能夠編寫(xiě)進(jìn)去新的樂(lè)曲。? 在這個(gè)程序中,有兩個(gè)數(shù)據(jù)表,其中存放了事先算好的、各種音符頻率所對(duì)應(yīng)的、半周期的定時(shí)時(shí)間初始值。? 有了這些數(shù)據(jù),單片機(jī)就可以演奏從低音、中音、高音和超高音,四個(gè)八度共28個(gè)音符。??
演奏樂(lè)曲時(shí),就根據(jù)音符的不同數(shù)值,從半周期數(shù)據(jù)表中找到定時(shí)時(shí)間初始值,送入定時(shí)器即可控制發(fā)音的音調(diào)。? 比如把表中的0xF2和0x42送到定時(shí)器,定時(shí)器按照這個(gè)初始值來(lái)產(chǎn)生中斷,輸出的方波,人們聽(tīng)起來(lái),這就是低音1。? 樂(lè)曲的數(shù)據(jù),也要寫(xiě)個(gè)數(shù)據(jù)表,程序中以 code unsigned char sszymmh[] 命名。
?這個(gè)表中每三個(gè)數(shù)字,說(shuō)明了一個(gè)音符,它們分別代表: 第1個(gè)數(shù)字是音符的數(shù)值1234567之一,代表多來(lái)咪發(fā)...; 第二個(gè)數(shù)字是0123之一,代表低音、中音、高音、超高音; 第三個(gè)數(shù)字是時(shí)間長(zhǎng)度,以半拍為單位。 樂(lè)曲數(shù)據(jù)表的結(jié)尾是三個(gè)0。 程序如下:? #include
常州音斯達(dá)電子有限公司是一家集研發(fā)、生產(chǎn)、銷售為一體的電聲企業(yè),是全球一流的微型聲學(xué)器件制造商之一,擁有自主制造模具,生產(chǎn)零部件的能力。 位于常州武進(jìn)區(qū)洛陽(yáng)鎮(zhèn)工業(yè)園區(qū)遙洛路43號(hào)。毗鄰太湖,有長(zhǎng)江港口、空運(yùn)機(jī)場(chǎng)、高速公路,交通運(yùn)輸十分便利。 公司擁有測(cè)試儀器和全自動(dòng)機(jī)加工等生產(chǎn)設(shè)備100余臺(tái)(套),已建立了專業(yè)的產(chǎn)品研發(fā)團(tuán)隊(duì)和高素質(zhì)的品質(zhì)管理團(tuán)隊(duì),并培養(yǎng)了一大批優(yōu)秀的熟練工人,現(xiàn)有員工200余人。 公司自創(chuàng)立以來(lái),始終專注于電聲器件的研發(fā)和制造,主要產(chǎn)品包括傳感器、揚(yáng)聲器、蜂鳴器、麥克風(fēng)、受話器、陶瓷元器件等,廣泛應(yīng)用在家電,移動(dòng)通訊設(shè)備、汽車和醫(yī)療器械等領(lǐng)域。 音斯達(dá)本著“品質(zhì)第一、開(kāi)拓創(chuàng)新、客戶至上、持續(xù)發(fā)展”的經(jīng)營(yíng)理念,充分拓展海內(nèi)外資源,產(chǎn)品遠(yuǎn)銷北美洲、歐洲、東南亞等地。