树莓派蜂鸣器唱歌c语言,关于蜂鸣器唱歌程序

各位大神好,一直对蜂鸣器唱歌很感兴趣,前几天在我们这个论坛发现了一个关于蜂鸣器唱歌的程序,程序如下:

/************************************************

跳线设置:

1.蜂鸣器和继电器 共用p2.2 ,跳线J5设置到23端选中蜂鸣器

2.J7拔掉,双排针除PSEN外全部插上

效果:

1,生日快乐歌曲

相关知识点:

1,利用单片机的定时器精准定时

************************************************/

#include"AT89x52.h"

#define uchar unsigned char

#define uint unsigned int

sbit P22=P2^2;

uchar i,j,time1,time2;

uint code array1[]={

400,400,650,650,650,1200,

400,400,650,650,650,1200,

400,400,650,650,650,650,1200,

400,400,650,650,650,1200

};

uchar code array[]={

0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x21,0xfe,0x05,

0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x51,0xfe,0x21,

0xfd,0x79,0xfd,0x79,0xfe,0xc0,0xfe,0x84,0xfe,0x21,0xfe,0x05,0xfd,0xc7,

0xfe,0x99,0xfe,0x99,0xfe,0x90,0xfe,0x21,0xfe,0x51,0xfe,0x21

};

void delay(uint m)

{

uint n;

for(;m>0;m--)

for(n=125;n>0;n--);

}

void main()

{

TMOD=0x01;

TH0=0;

TL0=0;

EA=1;

ET0=1;

TR0=1;

while(1)

{

time1=array[i++];

time2=array[i++];

if(i==50)

i=0;

delay(array1[j++]);

if(j==25)

j=0;

}

}

void init() interrupt 1

{

TR0=0;

P22=~P22;

TH0=time1;

TL0=time2;

TR0=1;

}

但是,我不太理解这程序的思路,求各位前辈高人帮我解释下,我对蜂鸣器唱歌的理解是在一段时间里面,输出不同频率的方波给蜂鸣器引脚,不知道这样对不对,另外从程序上怎么体现出来,希望高手可以帮我把这程序讲解下,最好是每行都注释一下,我是新手,谢谢你的解惑和不吝赐教!谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无源蜂鸣器是一种常用的被动式提示装置,它通过直流信号引脚来发出声音。下面是一个简单的无源蜂鸣器程序示例,使用C语言编写: ```c #include <stdio.h> #define BEEP_PIN 2 void delay(unsigned int milliseconds) { for(unsigned int i = 0; i < milliseconds * 1000; ++i) { // 延时循环,根据具体的硬件平台来确定延时时间 } } int main() { // 初始化蜂鸣器引脚 // 请根据具体硬件平台和引脚连接情况来确定初始化代码 pinMode(BEEP_PIN, OUTPUT); // 控制蜂鸣器发声 while(1) { digitalWrite(BEEP_PIN, HIGH); // 高电平激活蜂鸣器 delay(1000); // 延时1秒 digitalWrite(BEEP_PIN, LOW); // 低电平关闭蜂鸣器 delay(1000); // 延时1秒 } return 0; } ``` 这个程序通过调用延时函数来控制蜂鸣器的开关。在主循环中,首先将蜂鸣器引脚设置为高电平,然后延时1秒钟,然后将引脚设置为低电平,并再次延时1秒钟。这样循环下去,就实现了蜂鸣器的间歇性发声。 请注意,在这个示例中,使用了一个名为`delay`的自定义延时函数。具体实现细节取决于所使用的硬件平台和编译环境。以Arduino为例,可以使用`delayMicroseconds`函数来实现微秒级延时,以及`delay`函数来实现毫秒级延时。如果在其他环境下运行,请根据情况调整延时函数的实现。 上述是一个简单的无源蜂鸣器程序示例,它可以用C语言编写。具体的实现细节会根据硬件平台的不同而有所变化,比如引脚的初始化、延时的实现等。编写无源蜂鸣器程序时,还需要根据实际需求进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值