#include <ai8051u.h> // 定义蜂鸣器控制引脚 sbit Buzzer = P5^0; // 音符频率表(Hz) unsigned int code Tone[] = { 262, 294, 330, 349, 392, 440, 494, 523 }; // 延时函数 void Delay(unsigned int time) { unsigned int i, j; for(i = 0; i < time; i++) for(j = 0; j < 123; j++); } // 播放单个音符 void PlayTone(unsigned int tone, unsigned int duration) { unsigned int period; unsigned int i; if(tone > 0) { period = 1000000 / tone; // 计算周期(微秒) for(i = 0; i < duration * 1000 / period; i++) { Buzzer = 1; Delay(period / 2); Buzzer = 0; Delay(period / 2); } } else { Delay(duration); // 静音 } } // 播放生日快乐歌 void PlayHappyBirthday() { // 生日快乐歌的音符序列 unsigned char code Song[] = { 5, 5, 6, 5, 1, 7, 5, 5, 6, 5, 2, 1, 5, 5, 5, 3, 1, 7, 6, 4, 4, 3, 1, 2, 1 }; // 每个音符的持续时间(毫秒) unsigned char code Duration[] = { 300, 300, 600, 600, 600, 900, 300, 300, 600, 600, 600, 900, 300, 300, 300, 600, 600, 600, 900, 300, 300, 600, 600, 600, 900 }; unsigned char i; for(i = 0; i < sizeof(Song); i++) { PlayTone(Tone[Song[i] - 1], Duration[i]); Delay(50); // 音符间的间隔 } } // 主函数 void main() { while(1) { PlayHappyBirthday(); Delay(2000); // 播放完后暂停2秒 } }
共1条
1/1 1 跳转至页
ai8051u蜂鸣器伪程序

共1条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |