51单片机用8个按键控制无源蜂鸣器发8个音,代码
时间: 2024-05-10 17:19:41 浏览: 87
以下是51单片机使用8个按键控制无源蜂鸣器发8个音的代码:
```
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit beep = P1^5; //定义P1.5口接蜂鸣器
uchar code tone[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07}; //发声频率数组
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar i,j;
while(1)
{
if(P3 != 0xff) //判断是否有按键按下
{
for(i=0;i<8;i++) //遍历8个按键
{
if(P3 & (1<<i)) //判断第i个按键是否被按下
{
beep = 0; //开启蜂鸣器
for(j=0;j<50;j++) //发声时间
{
P0 = tone[i]; //设置发声频率
delay(1); //延时
}
beep = 1; //关闭蜂鸣器
}
}
}
}
}
```
在上述代码中,我们将无源蜂鸣器接在P1.5口,将8个按键接在P3口,然后定义了一个发声频率数组`tone`,其中`tone[0]`代表第1个音的频率,`tone[1]`代表第2个音的频率,以此类推。在程序中,我们使用一个无限循环来不断检测按键是否被按下,如果有按键被按下,则遍历8个按键来判断哪个按键被按下,然后根据按键的编号从`tone`数组中获取相应的频率值并设置给P0口,同时开启蜂鸣器使其发声,持续一定的时间后关闭蜂鸣器停止发声。这样,我们就可以通过按下不同的按键来控制蜂鸣器发出不同的音了。
阅读全文