基于51单片机的8键电子琴的程序
时间: 2023-11-12 21:06:53 浏览: 110
dianziqin.rar_C51电子琴_电子琴 16
以下是一个基于51单片机的8键电子琴的程序示例:
```c
#include <reg51.h> // 51单片机头文件
sbit BEEP = P1^7; // 蜂鸣器控制引脚
void delay(unsigned int ms) // 延时函数
{
unsigned int i, j;
for (i = ms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
while(1)
{
if(P3 != 0xFF) // 检测按键是否按下
{
switch(P3) // 判断按下的键
{
case 0xFE: // 按下第1个键
BEEP = 0; // 发声
delay(100); // 延时
BEEP = 1; // 停止发声
break;
case 0xFD: // 按下第2个键
BEEP = 0; // 发声
delay(200); // 延时
BEEP = 1; // 停止发声
break;
case 0xFB: // 按下第3个键
BEEP = 0; // 发声
delay(300); // 延时
BEEP = 1; // 停止发声
break;
case 0xF7: // 按下第4个键
BEEP = 0; // 发声
delay(400); // 延时
BEEP = 1; // 停止发声
break;
case 0xEF: // 按下第5个键
BEEP = 0; // 发声
delay(500); // 延时
BEEP = 1; // 停止发声
break;
case 0xDF: // 按下第6个键
BEEP = 0; // 发声
delay(600); // 延时
BEEP = 1; // 停止发声
break;
case 0xBF: // 按下第7个键
BEEP = 0; // 发声
delay(700); // 延时
BEEP = 1; // 停止发声
break;
case 0x7F: // 按下第8个键
BEEP = 0; // 发声
delay(800); // 延时
BEEP = 1; // 停止发声
break;
}
}
}
}
```
程序通过检测P3口的状态来判断是否有按键被按下,然后根据按下的键来控制蜂鸣器发出不同的音频。在延时函数中,可以通过改变delay函数中的参数来控制不同键所发出的音频时长。
阅读全文