《C语言程序设计:生日快乐歌》由会员分享,可在线阅读,更多相关《C语言程序设计:生日快乐歌(4页珍藏版)》请在金锄头文库上搜索。
1、#include#include #define uchar unsigned char#define uint unsigned intsbit BEEP=P15;/生日快乐歌的音符频率表,不同频率由不同的延时来决定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,1
2、2,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0; void delayms(uint xms)/延时程序uint i,j;for(i=xms;i0;i-)for(j=110;j0;j-); void xg0()/效果0 uint a,b;a=0xee;delayms(1000);/延时1秒for(b=4;b0;b-)/点亮次数P0=a;/灯1和5亮delayms(1000);a=_crol_(a,1);/循环左移1位void xg1()/效果1 uint a,b;a=0x77;delayms(1000);for(b=4;b0;b-)P0=a;/灯4和8
3、亮delayms(1000);a=_cror_(a,1);/循环右移1位void xg2()/效果2P0=0xe7;/灯4与5亮delayms(1000);P0=0xdb;/灯3和6亮delayms(1000);P0=0xbd;/灯2和7亮delayms(1000);P0=0x7e;/灯1和8亮delayms(1000);void xg3()/效果3P0=0x7e;/灯1和8亮delayms(1000);P0=0xbd;/灯2和7亮delayms(1000);P0=0xdb;/灯3和6亮delayms(1000);P0=0xe7;/灯4与5亮delayms(1000);/播放函数void Pl
4、ayMusic() uint i=0,j,k;while(SONG_LONGi!=0|SONG_TONEi!=0) /播放各个音符,SONG_LONG 为拍子长度for(j=0;jSONG_LONGi*20;j+)BEEP=BEEP;/SONG_TONE 延时表决定了每个音符的频率for(k=0;kSONG_TONEi/3;k+);delayms(10);i+; void main()BEEP=0;while(1)PlayMusic(); /播放生日快乐BEEP=1;xg0();P0=0xff;delayms(1000);xg1();P0=0xff;delayms(1000);xg2();P0=0xff;delayms(1000);xg3(); P0=0xff;delayms(1000);P1.5口