国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機音樂播放器設計

2018-01-02 11:20王怡
科學與財富 2018年32期
關鍵詞:蜂鳴器單片機軟件

王怡

摘 要:在工業(yè)控制現場,監(jiān)測結果通常要以聲音的形式進行播報,以提醒操作人員進行處理。蜂鳴器是一種簡單可靠,成本低廉的聲音播報設備。本文介紹了一種以51單片機作為控制核心,以蜂鳴器為發(fā)聲器件的音樂播放器的設計。首先介紹了該裝置的硬件構成及設計原理,其次介紹了軟件設計的基本原理。

關鍵詞:蜂鳴器;音樂播放;單片機;軟件;硬件設計原理

Abstract: In the field of industrial control, monitoring results are usually broadcast in the form of sound to remind operators to process. Buzzer is a simple, reliable, low-cost audio broadcasting device. This paper introduces the design of a music player based on the 51 MCU as the control core and the buzzer as the voice producing device. First, the hardware structure and design principle of the device are introduced. Secondly, the basic principle of software design is introduced.

Keywords: Buzzer; music player; MCU; software; hardware; design principle

引言

蜂鳴器是一種簡單可靠,成本低廉的聲音播報設備。在一些要求比較簡單的場合,只要蜂鳴器具備發(fā)聲和不發(fā)生兩種特性,就能解決問題。而在一些要求比較高的場合,則需要蜂鳴器發(fā)出不同曲調不同長度的聲音以對不同情況進行播報。本文所介紹的,就是一款能利用蜂鳴器播放音樂的裝置。

1 總體架構

本裝置的核心是一顆51單片機,聲音播報設備是一顆無源蜂鳴器。蜂鳴器能在單片機的控制下播放音樂。同時,電路板上還有一個行列式鍵盤,可以通過鍵盤按鍵的輸入來控制音樂播放的速度以及選擇不同的音樂進行播放。

2 硬件電路設計原理

(1)蜂鳴器驅動電路設計

蜂鳴器輸入端所需要的驅動電流視具體型號不同,一般從十幾毫安到幾十毫安不等。51單片機并行I/O口的驅動能力則從幾毫安到十幾毫安不等。因此,通常需要在單片機的并行I/O口和蜂鳴器的輸入端之間加上可以放大驅動電流的電路。三級管或場效應管是一個不錯的選擇,其驅動原理簡單,價格也低廉。具體的電路設計如圖1所示:

(2)行列式鍵盤掃描電路設計

本裝置除了能播放音樂片段之外,還有如選歌、快進、慢進、暫停、播放等控制功能。這些操作需要通過鍵盤操作進行輸入。本設計選用了16鍵的4×4行列式鍵盤。該鍵盤的具體電路設計如圖2所示:

3 軟件設計原理

樂曲的播放需要實現曲調和節(jié)拍的控制。不同曲調的播放通過向蜂鳴器發(fā)出不同頻率的方波就可以實現。比如:要讓蜂鳴器發(fā)出低音的1,只要向蜂鳴器發(fā)送一個262Hz的方波即可。而要發(fā)出中音的3,則要發(fā)送一個659Hz的方波。節(jié)拍就是一個曲調持續(xù)的時間。因此,樂曲的播放總結起來其實就是兩個要素:(1)控制單片機I/O口發(fā)出某固定頻率的方波;(2)控制該方波的持續(xù)時間。何時應發(fā)出何種頻率的方波,該方波持續(xù)多長時間,由具體樂譜中的曲調和節(jié)拍決定。軟件設計時通常直接存儲在不同的數組中。

本裝置利用單片機的兩個定時器來分別實現對曲調和節(jié)拍的控制。這種方法代碼短,對CPU的時間占用率低,是一種十分高效的實現方法?;诖朔椒?,用蜂鳴器播放《上學歌》的核心代碼如下所示:

#include

sbit BELL=P1^2;

int i_m=0,i_s=0,j_s=0;

unsigned char t1_cz_1=0XFC,t1_cz_0=0X44;

unsigned char music_table[]={0xfc,0x44,0xfc,0xac,0xfd,0x09, 0xfc,0x44,0xfd,0x82,0xfd,0xc8, 0xfd,0xc8,0xfe,0x22,0xfd,0xc8,

0xfd,0x82,0xfd,0xc8,0xfd,0xc8, 0xfe,0x22,0xfd,0x82,0xfd,0xc8,

0xfd,0x09,0xfd,0xc8,0xfd,0x82, 0xfd,0x09,0xfd,0x82,0xfd,0x09,

0xfc,0x44,0xfc,0xac,0xfd,0x09, 0xfc,0x44};

unsigned char step_table[]={5,5,5,5,10,5,5,5,5,10, 5,5,10,5,5,10,5,5,5,5,5,5,5,5,20};

main()

{

TH0=0X70; //T0用于產生基本節(jié)拍,一次中斷0.04s

TL0=0X00;

TH1=0XFC; //T1用于產生發(fā)出音符所需的周期性

TL1=0X44; //脈沖,初始化為中音的"1"(64580d=fc44h)

TMOD=0X11; //T0、T1均為方式1定時,不用門控

IE=0X8a; //中斷使能

TR0=1; //T0、T1開始計數

TR1=1;

while(1)

;

}

void timer0_int() interrupt 1

{

int temp;

TL0=0X70; //重設初值

TH0=0X00;

j_s++;

temp=step_table[i_s]-j_s;

if(temp==0)

{

i_s++;

i_m=i_m+2;

j_s=0;

if(i_m==50)

i_m=0;

if(i_s==25)

i_s=0;

}

t1_cz_1=music_table[i_m];

t1_cz_0=music_table[i_m+1];

}

void timer1_int() interrupt 3

{

TH1=t1_cz_1; //重設初值

TL1=t1_cz_0;

BELL=~BELL;

}

在以上代碼中,定時計數器0用于產生節(jié)拍,一次中斷時間設計為40ms。定時計數器1用于產生曲調。樂曲中所有節(jié)拍都是基于定時計數器0這個40ms的基準時間產生的。而數組step_table中,則存儲了每一個節(jié)拍對應的該基準時間的個數。當一個曲調對應的節(jié)拍時間完成后,在定時計數器0中,會向存儲定時計數器1初值的全局變量t1_cz_1和t1_cz_2裝入新的初值。而在定時計數器1的下一次中斷中,該初值被重裝,新的曲調便產生了。

4 結束語

本文介紹了一種基于51單片機的音樂播放裝置裝置的設計。包括該裝置的整體架構、以及軟硬件設計原理的及介紹。該設計成本低廉,功能也很豐富。

參考文獻

[1]Maxim Technology,Datasheet of MAX232,19-0175;Rev 5;10/03.

[2]張毅剛,彭喜元,彭宇.單片機原理及應用[M].高等教育出版社,2009.

猜你喜歡
蜂鳴器單片機軟件
電動自行車產品車速提示音檢測現狀和整改技術研究(2)
禪宗軟件
掌控板制作簡易鋼琴
基于單片機的SPWM控制逆變器的設計與實現
基于單片機的層次漸變暖燈的研究
基于單片機的便捷式LCF測量儀
單片機驅動蜂鳴器的程序設計
軟件對對碰
豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
Microchip推出兩個全新PIC單片機系列
手游| 辽源市| 寿光市| 磴口县| 萨迦县| 许昌市| 宣武区| 宁海县| 万山特区| 孙吴县| 临桂县| 宝鸡市| 和林格尔县| 汉寿县| 蓝山县| 仁怀市| 张掖市| 手游| 博湖县| 日土县| 陆良县| 南康市| 邢台市| 怀化市| 临城县| 涟源市| 交口县| 惠东县| 五原县| 米易县| 阳泉市| 林州市| 南涧| 民县| 邻水| 达日县| 永清县| 临汾市| 喀什市| 东城区| 彩票|