用c51写一个简易的电子琴程序
时间: 2023-09-11 10:10:09 浏览: 112
好的,以下是一个简单的 C51 电子琴程序:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit buzzer = P2^3; // 用 P2.3 控制蜂鸣器
uchar code music[] = { // 定义乐曲的频率
0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90
};
void delay_ms(uint ms) { // 延时函数,单位为毫秒
uint i, j;
for (i = ms; i > 0; i--)
for (j = 110; j > 0; j--);
}
void play_music(uchar note) { // 播放音乐
uchar i;
for (i = 0; i < note; i++) {
buzzer = 1;
delay_ms(1);
buzzer = 0;
delay_ms(1);
}
}
void main() {
uchar note = 0;
while (1) {
if (P3 != 0xff) { // 当有按键按下时
switch (P3) {
case 0xfe: note = 0; break; // 按下第一个按键,播放第一段音乐
case 0xfd: note = 1; break; // 按下第二个按键,播放第二段音乐
case 0xfb: note = 2; break; // 按下第三个按键,播放第三段音乐
case 0xf7: note = 3; break; // ...
case 0xef: note = 4; break;
case 0xdf: note = 5; break;
case 0xbf: note = 6; break;
case 0x7f: note = 7; break;
default: break;
}
play_music(music[note]); // 播放对应的音乐
}
}
}
```
这个程序使用了 8 个按键模拟钢琴键盘,按下不同的按键可以播放不同的音乐。程序中使用了一个 `play_music` 函数来播放音乐,它通过控制蜂鸣器的高低电平来实现。在 `main` 函数中,通过读取按键的状态来确定要播放的音乐,并调用 `play_music` 函数来播放。
阅读全文