日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C51单片机播放音乐《起风了》

發(fā)布時(shí)間:2024/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C51单片机播放音乐《起风了》 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單片機(jī)控制蜂鳴器發(fā)聲的基本原理和方法:只需對(duì)驅(qū)動(dòng)口輸出驅(qū)動(dòng)電平并通過(guò)放大電路放大驅(qū)動(dòng)電流就能使蜂鳴器發(fā)出聲音。改變引腳的頻率,就可以調(diào)整蜂鳴器的音調(diào),產(chǎn)生各種不同的聲音。
同時(shí)改變輸出電平的高低電平占空比,則可以控制蜂鳴器的聲音大小

下面給出代碼

main.c

(這里注意要把數(shù)組類(lèi)型從char改為int要不然字符數(shù)組存不下,音樂(lè)不會(huì)完整播放),更改SPEED可改變曲子的播放速度。

#include <REGX52.H>#include "Delay.h" #include "Timer0.h"//蜂鳴器端口定義 sbit Buzzer=P2^5;//播放速度,值為四分音符的時(shí)長(zhǎng)(ms) #define SPEED 700//音符與索引對(duì)應(yīng)表,P:休止符,L:低音,M:中音,H:高音,下劃線:升半音符號(hào)# #define P 0 #define L1 1 #define L1_ 2 #define L2 3 #define L2_ 4 #define L3 5 #define L4 6 #define L4_ 7 #define L5 8 #define L5_ 9 #define L6 10 #define L6_ 11 #define L7 12 #define M1 13 #define M1_ 14 #define M2 15 #define M2_ 16 #define M3 17 #define M4 18 #define M4_ 19 #define M5 20 #define M5_ 21 #define M6 22 #define M6_ 23 #define M7 24 #define H1 25 #define H1_ 26 #define H2 27 #define H2_ 28 #define H3 29 #define H4 30 #define H4_ 31 #define H5 32 #define H5_ 33 #define H6 34 #define H6_ 35 #define H7 36//索引與頻率對(duì)照表 unsigned int FreqTable[]={0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283, };//樂(lè)譜 unsigned int code Music[]={//音符,時(shí)值,//1M2,3,M1,1,M2,3,M1,1,M2,2,M3,2,M5,2,M3,2,M2,3,M1,1,M2,3,M1,1,M2,1,M3,1,M2,1,M1,1,L5,2,P,2,M2,3,M1,1,M2,3,M1,1,M2,2,M3,2,M5,2,M3,2,M2,3,M3,1,M2,2,M1,1,M2,5,P,4,M2,3,M1,1,M2,3,M1,1,M2,2,M3,2,M5,2,M3,2,M2,3,M3,1,M2,2,M1,1,L6,3,P,2,M3,1,M2,1,M1,1,M2,1,M1,2,P,2,M3,1,M2,1,M1,1,M2,1,M1,2,P,2,M3,1,M2,1,M1,1,M2,1,M1,4,P,6,M1,2,M2,2,M3,2,M1,2,M6,2,M5,1,M6,3,P,1,M1,1,M7,2,M6,1,M7,3,P,2,M7,2,M6,1,M7,3,M3,2,H1,1,H2,1,H1,1,M7,1,M6,2,M5,2,M6,2,M5,1,M6,2,M5,1,M6,1,M5,1,M6,2,M5,1,M2,2,M5,1,M5,1,M3,5,P,4,M1,2,M2,2,M3,2,M1,2,M6,2,M5,1,M6,3,P,1,M1,1,M7,2,M6,1,M7,3,P,2,M7,2,M6,1,M7,3,M3,2,H1,1,H2,1,H1,1,M7,1,M6,2,M5,2,M6,2,H3,4,M5,2,M6,2,H3,3,M5,1,M5,1,M6,11,P,2,H1,2,H2,2,H3,2,H6,1,H5,3,H6,1,H5,3,H6,1,H5,3,H2,1,H3,3,H6,1,H5,3,H6,1,H5,3,H6,1,H5,2,H3,1,H3,3,H2,2,H1,1,M6,2,H1,3,H2,2,H1,1,M6,2,H1,2,H3,6,H2,1,H3,1,H2,2,P,2,H1,2,H2,2,H3,2,H6,1,H5,3,H6,1,H5,3,H6,1,H5,2,P,1,H2,1,H3,2,H6,1,H5,3,H6,1,H5,3,H6,1,H5,2,H3,2,H3,1,H2,2,H1,1,M6,2,H3,2,H2,2,H1,1,M6,3,H1,2,H1,8,M6,1,H3,3,H2,2,H1,1,M6,1,M6,1,H3,2,H2,2,H1,1,M6,3,H1,7,H1,8,P,8,0xFF//終止標(biāo)志 };unsigned int FreqSelect,MusicSelect;void main() {Timer0Init();while(1){if(Music[MusicSelect]!=0xFF) //如果不是停止標(biāo)志位{FreqSelect=Music[MusicSelect]; //選擇音符對(duì)應(yīng)的頻率MusicSelect++;Delay(SPEED/4*Music[MusicSelect]); //選擇音符對(duì)應(yīng)的時(shí)值MusicSelect++;TR0=0;Delay(5); //音符間短暫停頓TR0=1;}else //如果是停止標(biāo)志位{TR0=0;while(1);}} }void Timer0_Routine() interrupt 1 {if(FreqTable[FreqSelect]) //如果不是休止符{/*取對(duì)應(yīng)頻率值的重裝載值到定時(shí)器*/TL0 = FreqTable[FreqSelect]%256; //設(shè)置定時(shí)初值TH0 = FreqTable[FreqSelect]/256; //設(shè)置定時(shí)初值Buzzer=!Buzzer; //翻轉(zhuǎn)蜂鳴器IO口} }

Timer0.c

#include <REGX52.H>/*** @brief 定時(shí)器0初始化* @param無(wú)* @retval 無(wú) */ void Timer0Init()//1毫秒@11.0592MHz {TMOD &= 0xF0; //設(shè)置定時(shí)器模式TMOD |= 0x01; //設(shè)置定時(shí)器模式TL0 = 0x66; //設(shè)置定時(shí)初始值TH0 = 0xFC; //設(shè)置定時(shí)初始值TF0 = 0; //清除TF0標(biāo)志TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí)ET0=1; //打開(kāi)定時(shí)器0中斷EA=1; //開(kāi)總中斷PT0=0; }/*定時(shí)器終端模板函數(shù) void Timer0_Routine() interrupt 1 {static unsigned int T0Count;TL0 = 0x66; //設(shè)置定時(shí)初始值TH0 = 0xFC; //設(shè)置定時(shí)初始值T0Count++;if(T0Count>=1000){T0Count=0;P2_0=~P2_0;} } */

Timer0.h

#ifndef __TIMER0_H__//防重復(fù)定義 #define __TIMER0_H__void Timer0Init();#endif

Delay.c

#include <REGX52.H> void Delay(unsigned int xms) {unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);} }

Delay.h

#ifndef __DELAY_H__ #define __DELAY_H__void Delay(unsigned int xms);#endif

總結(jié)

以上是生活随笔為你收集整理的C51单片机播放音乐《起风了》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.伊人网 | 国模在线视频 | 国产午夜精品一区二区三区四区 | 999精品 | 特大黑人娇小亚洲女mp4 | 亚洲色婷婷久久精品av蜜桃 | 国产激情第一页 | 美女视频黄免费 | 日韩不卡一区二区三区 | 国产精品 欧美激情 | 亚洲视频导航 | 精品人妻伦一二三区久久 | xxxxx毛片| 波多野结衣黄色片 | 黄网站欧美内射 | 在线成人一区二区 | 欧美性免费 | 天天天天天天干 | 成人一区二区三区仙踪林 | 激情六月 | 丁香六月婷婷综合 | 妺妺窝人体色www在线下载 | 成人99 | 少妇伦子伦精品无吗 | 东方av在线免费观看 | 国产一区视频观看 | 欧美在线免费视频 | 欧美日韩在线二区 | www.色视频 | 欧美不卡影院 | 日韩美女网站 | 国产一区二区三区网站 | 亚洲伦理中文字幕 | 亚洲欧美另类国产 | 中文在线а√在线 | 国模在线观看 | 91九色国产视频 | 欧美色图影院 | 欧洲精品久久一区二区 | 色偷av| 岛国a视频| 青青草91 | 天堂va蜜桃一区二区三区 | 色偷偷亚洲 | 精品一区二区视频在线观看 | 97se亚洲综合| 成人免费高清视频 | 日韩av在线播放一区 | 五月网| av最新资源| 欧美一区欧美二区 | 欧美在线一二三区 | 人人插人人射 | 黑名单上的人全集免费观看 | 黄网站在线免费看 | 免费啪啪网 | 99精品免费观看 | 在线观看国产91 | 色婷婷综合激情 | 那里有毛片看 | 精品国内自产拍在线观看视频 | 久久怡春院| 天堂在线中文网 | 国产资源在线免费观看 | 自拍偷拍亚洲区 | 色狠狠久久av大岛优香 | 欧美私人情侣网站 | 在线免费黄| 久久精品黄aa片一区二区三区 | 国模一区二区三区 | 91在线免费视频 | 亚洲一区二区在线免费观看 | 在线免费黄色网 | 欧美精品黑人猛交高潮 | 色激情网 | 国产在线免费视频 | 韩国伦理片观看 | 精品肉丝脚一区二区三区 | 北条麻妃一区二区三区 | 天天操夜夜摸 | 少妇日皮视频 | 激情图片网站 | 亚洲免费黄网 | 国产精品1页 | 美国一级片网站 | www.久久伊人 | 美女一级片| 国产chinese男男网站大全 | 欧美一区二区福利 | 视频在线日韩 | 在线视频 中文字幕 | 超碰人人99 | 日本男人的天堂 | 国产第99页 | av手机免费在线观看 | 国产破处在线 | 日韩人妻精品一区二区 | 特黄一区 | 黄色片在线观看视频 |