这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » ai8051u蜂鸣器伪程序

共1条 1/1 1 跳转至

ai8051u蜂鸣器伪程序

工程师
2025-06-18 07:41:55     打赏

#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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]