STC89C52RC C语言代码O接口输出蜂鸣器循环发出do、re、mi、fa、sol、la、xi的声音各1秒
时间: 2023-07-04 16:21:09 浏览: 52
好的,下面是STC89C52RC的C语言代码,实现O口输出蜂鸣器发出do、re、mi、fa、sol、la、xi的声音各1秒的循环:
```c
#include <reg52.h> //包含STC89C52RC芯片的头文件
sbit BUZZ=P1^2; //定义BUZZ蜂鸣器接口
void delay_ms(unsigned int i) //延时函数,单位毫秒(ms)
{
unsigned int j,k;
for(j=0;j<i;j++)
for(k=0;k<125;k++);
}
void main()
{
while(1)
{
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
BUZZ=1; //输出高电平,蜂鸣器发声
delay_ms(1000); //延时1秒
BUZZ=0; //输出低电平,蜂鸣器停止发声
delay_ms(500); //延时0.5秒,做出音符间的间隔效果
}
}
```
代码中使用了一个延时函数`delay_ms()`,单位为毫秒(ms),用来控制发声时间和音符之间的间隔时间。其中,`BUZZ=1`表示输出高电平,蜂鸣器发声;`BUZZ=0`表示输出低电平,蜂鸣器停止发声。在主函数中,使用`while(1)`进行循环,实现连续发出七个音符的循环效果。