【代码保留】Quarter类

#include "ioCC2530.h" void delay(unsigned int ms) { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<535;j++); } void delay_us(unsigned int us) { unsigned int i; for(i=0;i<us;i++); } void playNote(unsigned int halfPeriod, unsigned int duration) { unsigned int t, cycles; cycles = duration * 1000 / (2 * halfPeriod); for(t=0; t<cycles; t++) { P0_6 = 1; delay_us(halfPeriod); P0_6 = 0; delay_us(halfPeriod); } P0_6 = 0; delay(150); // 每个音符后停80ms,平衡“时长”和“听感” } // 乐句间长停顿(区分段落,进一步延长总时长,模拟“唱歌换气”) void phrasePause() { P0_6 = 0; delay(300); // 每段歌词结束后停300ms,避免段落拥挤 } // 音符定义(保留原音调,确保旋律准确) #define DO 568 // 中音1 #define RE 506 // 中音2 #define MI 453 // 中音3 #define FA 425 // 中音4 #define SO 382 // 中音5 #define LA 340 // 中音6 #define SI 303 // 中音7 #define DO_H 284 // 高音1(补充结尾长音,丰富旋律) #define QUARTER 500 // 四分音符(比原来延长约54%,基础单位延长) #define HALF 500 // 二分音符(=2*四分音符,时长翻倍) #define WHOLE 500 // 全音符(=4*四分音符,更长的持续时间) #define EIGHTH 500 // 八分音符(=0.5*四分音符,相应延长) void main( ) { // 引脚配置(只保留蜂鸣器必要配置,减少冗余) P0SEL &= 0xBF; // P0_6设为普通IO口 P0DIR |= 0x40; // P0_6设为输出模式 P0_6 = 0; // 初始化蜂鸣器为低电平(不发声) delay(500); // 上电等待500ms,避免启动杂音 while(1) { // -------------------------- 第一段:一闪一闪亮晶晶,满天都是小星星(约8秒) -------------------------- playNote(DO, QUARTER); playNote(DO, QUARTER); playNote(SO, QUARTER); playNote(SO, QUARTER); playNote(LA, QUARTER); playNote(LA, QUARTER); playNote(SO, HALF); phrasePause(); // 乐句停顿300ms playNote(FA, QUARTER); // 4 playNote(FA, QUARTER); // 4 playNote(MI, QUARTER); // 3 playNote(MI, QUARTER); // 3 playNote(RE, QUARTER); // 2 playNote(RE, QUARTER); // 2 playNote(DO, HALF); // 1(长音) phrasePause(); // 乐句停顿300ms // -------------------------- 第二段:挂在天空放光明,好像许多小眼睛(约8秒) -------------------------- playNote(SO, QUARTER); playNote(SO, QUARTER); playNote(FA, QUARTER); playNote(FA, QUARTER); playNote(MI, QUARTER); playNote(MI, QUARTER); playNote(RE, HALF); phrasePause(); // 乐句停顿300ms playNote(SO, QUARTER); playNote(SO, QUARTER); playNote(FA, QUARTER); playNote(FA, QUARTER); playNote(MI, QUARTER); playNote(MI, QUARTER); playNote(RE, HALF); phrasePause(); delay(500); } }优化发声,更贴近原曲小星星
最新发布
09-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值