讓蜂鳴器發(fā)出兩種不同的聲調(diào)很容易,只要給蜂鳴器的控制信號發(fā)送不同頻率的脈沖就可以實現(xiàn)了,以下以延時方式來做。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供天全網(wǎng)站建設(shè)、天全做網(wǎng)站、天全網(wǎng)站設(shè)計、天全網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、天全企業(yè)網(wǎng)站模板建站服務(wù),10余年天全做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
下面用beep函數(shù)發(fā)音,按鍵 1,2,3,4,5,6,7,8 對應(yīng) 多來米發(fā)少。。按換行鍵結(jié)束。0.3秒一個音,不要按得太快。
將51單片機的P2口連接到蜂鳴器的一個管腳上,另外一個管腳接地。
alarm()就能,如果你有擁有speaker和定時器的單片機的話,通過定時器的設(shè)置,輸出PWM波就是聲音。要使用有比較寄存器的定時器。
將上面的步驟優(yōu)化下,一個DIY的音樂播放器就成功了。我上面說的只是控制了聲音的頻率和時間,其實還可以控制響度。對于一些特殊的設(shè)備,控制音色也不是不可能。這種程序我在大一的時候?qū)戇^。現(xiàn)在想起來不難的。
sound 控制音調(diào), delay 控制時間長短,不能控制音量。
1、打開Keil后選擇【File】下的【new】新建一個空白文檔。將編輯好的程序源碼復(fù)制到該文件中。選擇左上角的保存按鈕進(jìn)行保存,將彈出保存對話框。
2、用 Beep 函數(shù),參數(shù)1是頻率,參數(shù)2是時間長度。
3、無源蜂鳴器,需要外部提供脈沖信號才會發(fā)聲,且聲音會隨脈沖頻率變化而變化。而有源蜂鳴器內(nèi)部有振蕩器,所以只需要提供電壓(高電平)就能發(fā)聲,它們的原理不同。例如定義 一個IO連接蜂鳴器。
4、K的方波對51來說要求太高了,盡量不要用,這個程序如果頻率不對,對 “TH0=0XF6;//初始值246”這句里的0xf6調(diào)整下,向上增加數(shù)值會提高精度。
5、昨天回答過這個問題了,當(dāng)時只改了數(shù)據(jù),這里說明一下,定時器初值是-50000時,定時時間是50毫秒,中斷10次是500毫秒,產(chǎn)生一個脈沖需要需要2個10次,脈沖周期是1000毫秒,即1秒,所以頻率為1Hz。
無源蜂鳴器,需要外部提供脈沖信號才會發(fā)聲,且聲音會隨脈沖頻率變化而變化。而有源蜂鳴器內(nèi)部有振蕩器,所以只需要提供電壓(高電平)就能發(fā)聲,它們的原理不同。例如定義 一個IO連接蜂鳴器。
讓蜂鳴器發(fā)出兩種不同的聲調(diào)很容易,只要給蜂鳴器的控制信號發(fā)送不同頻率的脈沖就可以實現(xiàn)了,以下以延時方式來做。
不同的音效,就是改變頻率,改變頻率,就是改變時間。輸出腳,就用I/O口。程序內(nèi)設(shè)計一個時間中斷,如40us中斷或更短。
1、include unistd.h // 頭文件 int usleep(useconds_t usec); // 函數(shù)原型 usec -- 毫秒。整數(shù)。最大允許值:小于 1000000 返回 0 -- 表示調(diào)用執(zhí)行成功,1 -- 失敗。
2、Beep(698,500);Beep(784,500);} --- wintc 試驗上兩個。
3、使用pthread庫執(zhí)行多線程,這個是Linux下的線程庫 Windows下應(yīng)該有自己的API,不過這種東西一般還是以Linux為標(biāo)準(zhǔn)。pthread_create()創(chuàng)建一個線程,傳入fun()的函數(shù)指針就行了。
下面用beep函數(shù)發(fā)音,按鍵 1,2,3,4,5,6,7,8 對應(yīng) 多來米發(fā)少。。按換行鍵結(jié)束。0.3秒一個音,不要按得太快。
現(xiàn)在這里對計算機上的那個喇叭用Turbo C 0進(jìn)行編程,使之發(fā)出動聽的音樂《梁祝》。第一步:定義《梁祝》的每一個音符的頻率和時間,將定義好的頻率和時間寫入文件或者保存在數(shù)組里面。
sound( )函數(shù)可以用指定頻率打開PC機揚聲器直到用nosound( )函數(shù)來關(guān)閉它; clock( )函數(shù)正好用來控制發(fā)聲時間,而且它不受PC機主頻高低的影響。下面這段程序可使微機發(fā)出c調(diào)1的聲音。
1、程序就開始進(jìn)入xian()中,也就是你的顯示為9999的函數(shù)中,然后又循環(huán)到一開始的狀態(tài)。就函數(shù)已經(jīng)在你指定的地方調(diào)用了,如果有問題,就要檢查你的顯示函數(shù)和相應(yīng)硬件連接了。
2、該中斷標(biāo)志位對應(yīng)的中斷使能位必須為使能狀態(tài),即開啟該外部中斷功能。.全局中斷必須要打開,即_EINT();外部中斷的中斷入口要寫對。
3、是跳到這個中斷函數(shù)運行,運行完后跳回中斷處繼續(xù)主程序 。不是跳到寄存器組,是使用那個寄存器組。是可以寫,但這是中斷發(fā)生時,才調(diào)用這個函數(shù)。
4、中斷是成功執(zhí)行了,但是中斷的時間一過,主程序還回到中斷的下一條語句繼續(xù)循環(huán)執(zhí)行的。變慢了就是因主程序還會打斷去執(zhí)行中斷的程序。
5、很多初學(xué)單片機者往往對C51的頭文件感到很神秘,而為什么要那樣寫,甚至有的初學(xué)者喜歡問,P1口的P為什么要大寫,不大寫行不行呢?其實這樣的問題,看過本文后,就會明白。
6、①這幾個是中斷服務(wù)函數(shù)的聲明,僅僅表示當(dāng)有對應(yīng)向量的中斷產(chǎn)生時、應(yīng)跳轉(zhuǎn)到對應(yīng)的函數(shù),并不代表開啟了中斷。②一塌糊涂。
新聞名稱:C語言beep函數(shù)用法 c++beep函數(shù)
當(dāng)前地址:http://chinadenli.net/article33/dehpjss.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、電子商務(wù)、微信公眾號、服務(wù)器托管、網(wǎng)站設(shè)計公司、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)