51单片机 蜂鸣器播放小星星

普中科技 a4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <REGX52.H>
#include <INTRINS.H>
 
typedef unsigned char u8;
typedef unsigned int u16; 
typedef unsigned long u32;
 
void delay_10us(u16 t)
{
     while(--t);
}
 
 
//蜂鸣器
sbit buzzer = P2^5;
 
//频率
u16 music_base_frequency[7] = { 523, 587, 670, 720, 784, 880, 988 };
#define base_time 500000
#define zero_time (100000 / 10)
 
u8 xxx[] = {
  1,0,1,0,  5,0,5,0,   6,0,6,0,  5,5,0,0,  4,0,4,0,  3,0,3,0,
  2,0,2,0,  1,1,0,0,   5,0,5,0,  4,0,4,0,  3,0,3,0,  2,2,0,0,
  5,0,5,0,  4,0,4,0,   3,0,3,0,  2,2,0,0,  1,0,1,0,  5,0,5,0,
  6,0,6,0,  5,5,0,0,   4,0,4,0,  3,0,3,0,  2,0,2,0,  1,1,0,0,
 
};
 
void main()
{
    u16 i=0;
    u16 count = 0;
    u16 delay_time = 0;
 
 
    for(i = 0; i < sizeof(xxx); ++i)
    {
        if(0 == xxx[i])
        {
            delay_10us(zero_time);
        }
        else
        {
            delay_time = 1000000 / music_base_frequency[xxx[i]] / 2;
            count = base_time / delay_time;
            delay_time = delay_time / 10;
            while(--count)
            {
                buzzer = !buzzer;
                delay_10us(delay_time);   
            }   
        }
    }
    while(1);
}

  

posted @   洋洋不得意  阅读(1069)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示