用单片机奏出生日快乐歌 请教高手,下面是51单片机蜂鸣器演奏“生日快乐”的汇编程序:

\u6c42\uff1a \u752851\u5355\u7247\u673ac\u8bed\u8a00\u64cd\u4f5c\u4f7f\u8702\u9e23\u5668\u594f\u51fa\u201c\u795d\u4f60\u751f\u65e5\u5feb\u4e50\u201d\u97f3\u4e50\u7684\u5168\u90e8\u7a0b\u5e8f\uff01

#include
sbit speaker=P1^2;
unsigned char timer0h,timer0l,time;
//\u751f\u65e5\u6b4c
code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,
5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,
5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,
4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4};
// \u97f3\u9636\u9891\u7387\u8868 \u9ad8\u516b\u4f4d
code unsigned char FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
} ;
// \u97f3\u9636\u9891\u7387\u8868 \u4f4e\u516b\u4f4d
code unsigned char FREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
void delay(unsigned char t)
{
unsigned char t1;
unsigned long t2;
for(t1=0;t1<t;t1++)
{
for(t2=0;t2<8000;t2++)
{
;
}
}
TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
speaker=!speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);
}

void main(void)
{
unsigned char k,i;
TMOD=1; //\u7f6eCT0\u5b9a\u65f6\u5de5\u4f5c\u65b9\u5f0f1
EA=1;
ET0=1;//IE=0x82 //CPU\u5f00\u4e2d\u65ad,CT0\u5f00\u4e2d\u65ad
while(1)
{
i=0;
while(i<75){ //\u97f3\u4e50\u6570\u7ec4\u957f\u5ea6 \uff0c\u5531\u5b8c\u4ece\u5934\u518d\u6765
k=sszymmh[i]+7*sszymmh[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=sszymmh[i+2];
i=i+3;
song();
}
}
}

\u7a0b\u5e8f\u4e2d\uff0c\u6ce8\u91ca\u5df2\u7ecf\u591f\u591a\u4e86\u3002
\u5982\u679c\u8fd8\u662f\u5f04\u4e0d\u4e86\uff0c\u4e0d\u5982\u6362\u4e00\u4e2a\u601d\u8def\u3002

\u770b\u770b\u4e0b\u9762\u7684\uff0c\u4e5f\u8bb8\u597d\u7406\u89e3\u4e00\u4e9b\uff1a

http://hi.baidu.com/do_sermon/item/8cff22baf5142245bb0e1247
http://hi.baidu.com/do_sermon/item/7665ea126f32075df0090e47

如果对你有用,请采纳!
/* 名称:播放音乐
说明:程序运行时播放生日快乐歌, 未使用定时器中断,所有频率完全用延时实现
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;
//生日快乐歌的音符频率表,不同频率由不同的延时来决定
uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
212,212,106,126,159,169,190,119,119,126,159,142,159,0};
//生日快乐歌节拍表,节拍决定每个音符的演奏长短
uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);//播放函数
void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{ //播放各个音符,SONG_LONG 为拍子长度
for(j=0;j<SONG_LONG[i]*20;j++)
{
BEEP=~BEEP;
//SONG_TONE 延时表决定了每个音符的频率for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
i++;
}
}
void main()
{
BEEP=0;
while(1)
{
PlayMusic(); //播放生日快乐
DelayMS(500); //播放完后暂停一段时间
}
}

  • 鐢ㄥ崟鐗囨満濂忓嚭鐢熸棩蹇箰姝
    绛旓細/* 鍚嶇О锛氭挱鏀鹃煶涔 璇存槑锛氱▼搴忚繍琛屾椂鎾斁鐢熸棩蹇箰姝锛 鏈浣跨敤瀹氭椂鍣ㄤ腑鏂紝鎵鏈夐鐜囧畬鍏ㄧ敤寤舵椂瀹炵幇 / include<reg51.h> define uchar unsigned char define uint unsigned int sbit BEEP=P3^7;//鐢熸棩蹇箰姝岀殑闊崇棰戠巼琛紝涓嶅悓棰戠巼鐢变笉鍚岀殑寤舵椂鏉ュ喅瀹 uchar code SONG_TONE[]={212,212,190,212,159...
  • 璺眰涓涓鍗曠墖鏈虹敓鏃ュ揩涔愭瓕C璇█绋嬪簭.
    绛旓細include <reg52.h> define uint unsigned int define uchar unsigned char sbit BEEP=P1^2;//鎺ュ枃鍙垨铚傞福鍣ㄧ殑鎺ュ彛 uint h,i;uint hz;uchar jiep;bit flag;uint code fre[]={ 64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};uchar code song[]={6,9...
  • 鍗曠墖鏈89C52鏀炬瓕鍚屾椂闂伅
    绛旓細姝岀殑璇濇槸鐢熸棩蹇箰姝 鍨嬪彿89C52RC 鐏槸璺戦┈鐏 鏉ュ洖闂偅绉嶆庝箞瀹炵幇鍟 灞曞紑  鎴戞潵绛 鍒嗕韩 寰俊鎵竴鎵 缃戠粶绻佸繖璇风◢鍚庨噸璇 鏂版氮寰崥 QQ绌洪棿 涓炬姤 娴忚54 娆 鍙変腑1涓垨澶氫釜涓嬮潰鐨勫叧閿瘝,鎼滅储鐩稿叧璧勬枡銆備篃鍙洿鎺ョ偣鈥滄悳绱㈣祫鏂欌濇悳绱㈡暣涓棶棰樸 鍗曠墖鏈 鏀炬瓕 闂伅 鎼滅储璧勬枡 鏈湴鍥剧墖 鍥剧墖閾炬帴 浠g爜 鎻愪氦鍥炵瓟 ...
  • 鍗曠墖鏈鎬庝箞瀹炵幇婕斿涓ら姝(鐢熸棩蹇箰+涓ゅ彧鑰佽檸) 姹囩紪璇█
    绛旓細;闊充箰鐢熸棩蹇箰鐨勬挱鏀 numtim equ 20h EQUei equ 21h EQUwei equ 22h EQUnled equ 23h EQU 000hORGp startJMPg 00bh jORGtim0 oJMP100h ORGart:; JB P3.7,$ ;妫娴嬫挱鏀炬寜閿槸鍚︽寜涓 mov tmod,#00000001b MOV mov ie,#10000010b MOV mov numtim,#01h startMOVov 30h,#00h next...
  • 姹: 鐢51鍗曠墖鏈c璇█鎿嶄綔浣胯渹楦e櫒濂忓嚭鈥滅浣鐢熸棩蹇箰鈥闊充箰鐨勫叏閮ㄧ▼搴...
    绛旓細//鐢熸棩姝 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,...
  • 鍗曠墖鏈楂樻墜甯繖鐢 at89s52鑺墖 鍐欎釜鐢熸棩蹇箰姝鐨勭▼搴!!
    绛旓細ORG 0000H LJMP INITIAL ORG 000BH LJMP TONE_INT ORG 001BH LJMP BEAT_INT INITIAL:MOV TMOD,#11H MOV IE,#10001010B MOV SP,#70H START:CLR F0 MOV R7,#00H MOV R6,#00H LOOP: CALL LOAD_TONE CALL LOAD_BEAT JNB F0,$ ;杩欎釜寰堥噸瑕侊紝F0=0,寰幆鎵ц CLR F0 LJMP LOOP ;==...
  • 姹傚姪鈥滃熀浜巗tc51鍗曠墖鏈鐨鐢熸棩蹇箰姝鈥
    绛旓細鍏跺疄寰堝鏄撶殑鍛傛壘涓涓鍗曠墖鏈鏈灏忕郴缁熸澘鎴栬呭紑鍙戞澘锛岀劧鍚庢帴濂借渹楦e櫒鐢佃矾銆傚湪缃戜笂鎵句竴涓渹楦e櫒濂忎箰鐨勪緥绋嬶紝鏀瑰ソI/O锛屽氨鍙互濂忎箰浜嗐傚啀鎵句竴涓渹楦e櫒璧颁篃鐨勮緟鍔╄蒋浠讹紝杈撳叆鐢熸棩姝岀殑绠璋憋紝灏卞彲浠濂忕敓鏃ユ瓕浜嗐
  • 姹 鍗曠墖鏈涓敤姹囩紪璇█鍐欑殑绠鍗曠殑闊充箰婕旂ず
    绛旓細MOV DPTR,#TABLE ;鐢熸棩蹇箰鐨凾ABLE JMP CON MUSIC1: CJNE A,#01,MUSIC2 MOV DPTR,#TABLE1 JMP CON MUSIC2:CJNE A,#02,MUSIC3 MOV DPTR,#TABLE2 JMP CON MUSIC3:CJNE A,#03,MUSIC4 MOV DPTR,#TABLE3 JMP CON MUSIC4:CJNE A,#04,MUSIC5 MOV DPTR,#TABLE4 JMP CON MUSIC5:CJNE...
  • 姹備竴娈鍗曠墖鏈绋嬪簭,瑕佹眰鑳芥挱鏀鐢熸棩蹇箰姝(鎵惧埌涓娈电▼搴忓府鍔犺繘鍘),鍙 ...
    绛旓細杩欎釜浣犲彲浠ュ湪璁剧疆涓涓.c鏂囦欢锛屽氨鏄棯鐑佺伅瀛愮▼搴忥紝闂儊鐏▼搴忥紝鎴戠敤鐨勪竴绉掍竴闂紝include <reg51.h> include <intrins.h> typedef unsigned char uint8;void timer1_init(){ TMOD=0x10;TH1=0xb1;TL1=0xe0;TR1=1;} void main(){ uint8 counter;timer1_init();P1=0xfe;while(1){ if(TF1=...
  • 鍗曠墖鏈虹敓鏃ュ揩涔愭瓕鐨勯煶闀垮拰闊宠皟琛ㄤ粈涔堟剰鎬?
    绛旓細鎰忔濆氨鏄瘡涓綆闊冲拰涓煶锛岄珮闊崇殑dao锛宺an锛宮i锛宖a锛宻ao锛宭a锛寈i锛岄兘鏈夊搴旂殑棰戠巼锛岃岃繖浜涢鐜囦笉鍚屾墠鑳借浜轰滑鍚埌鏄偊鑰崇殑姝屾洸銆傚搴旂殑缂栫爜鍜岄煶璋冭〃鏀炬暟缁勫嵆鍒╃敤鍗曠墖鏈瀹氭椂鍣ㄤ骇鐢熶笉鍚岀殑pwm娉紝鑰屼骇鐢熶笉鍚岀殑闊宠皟浜嗐備篃灏变骇鐢熶簡闊充箰 绾墜鎵擄紝濡傛灉婊℃剰鏈涢噰绾筹紒
  • 扩展阅读:生日快乐歌原唱完整版 ... 生日快乐五线谱简单 ... 生日专用歌曲大全 ... 生日快乐简单短句高级 ... 51单片机蜂鸣器生日歌 ... 生日最快乐原唱 ... 祝你生日快乐歌曲原唱 ... 网络流行的生日歌 ... 生日快乐制作一键生成器 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网