keil5电子琴代码
时间: 2023-12-12 08:04:02 浏览: 91
以下是一个基于Keil5的51单片机电子琴代码的示例:
```c
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; // 数码管显示表
uchar code music[] = {0x3c, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00}; // 音符表
sbit beep = P1^5; // 蜂鸣器控制引脚
sbit key1 = P2^0; // 按键1
sbit key2 = P2^1; // 按键2
sbit key3 = P2^2; // 按键3
sbit key4 = P2^3; // 按键4
sbit key5 = P2^4; // 按键5
sbit key6 = P2^5; // 按键6
sbit key7 = P2^6; // 按键7
sbit key8 = P2^7; // 按键8
void delay(uint i) // 延时函数
{
uint j, k;
for(j = i; j > 0; j--)
for(k = 125; k > 0; k--);
}
void main()
{
uchar i = 0;
while(1)
{
if(key1 == 0) // 按键1按下
{
beep = 1; // 蜂鸣器响
P0 = music[0]; // 数码管显示第一个音符
delay(100); // 延时
beep = 0; // 蜂鸣器停止响
P0 = table[7]; // 数码管不显示
}
if(key2 == 0) // 按键2按下
{
beep = 1;
P0 = music[1];
delay(100);
beep = 0;
P0 = table[7];
}
if(key3 == 0) // 按键3按下
{
beep = 1;
P0 = music[2];
delay(100);
beep = 0;
P0 = table[7];
}
if(key4 == 0) // 按键4按下
{
beep = 1;
P0 = music[3];
delay(100);
beep = 0;
P0 = table[7];
}
if(key5 == 0) // 按键5按下
{
beep = 1;
P0 = music[4];
delay(100);
beep = 0;
P0 = table[7];
}
if(key6 == 0) // 按键6按下
{
beep = 1;
P0 = music[5];
delay(100);
beep = 0;
P0 = table[7];
}
if(key7 == 0) // 按键7按下
{
beep = 1;
P0 = music[6];
delay(100);
beep = 0;
P0 = table[7];
}
if(key8 == 0) // 按键8按下
{
beep = 1;
P0 = music[7];
delay(100);
beep = 0;
P0 = table[7];
}
}
}
```
该代码使用了P0口控制数码管显示,使用了P1.5口控制蜂鸣器,使用了P2口控制按键输入。按下不同的按键会发出不同的音调。你可以根据需要修改音符表和延时时间来调整音调和音长。
阅读全文