基于51单片机简易电子琴代码
时间: 2023-06-17 16:03:15 浏览: 86
以下是一个基于51单片机的简易电子琴代码:
```c
#include<reg52.h>
sbit LSA=P2^2; //定义共阳极数码管引脚
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5; //定义蜂鸣器引脚
unsigned int code duanma[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0~F的16进制数码
void delayms(unsigned int xms) //延时函数
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main(void)
{
unsigned char i;
P2=0x00; //初始值
while(1)
{
for(i=0;i<16;i++) //循环16进制数0~F
{
P0=duanma[i]; //输出数码管显示0~F
LSA=1;LSB=1;LSC=1; //消隐
delayms(500); //延时500ms
}
}
}
```
以上代码实现了数字0~F在数码管的显示,每个数字显示时间为500ms。其中,`duanma`数组存储了0~F的16进制数码,`delayms`函数实现了延时,`LSA`、`LSB`、`LSC`分别是控制数码管位选的3个引脚。在 `main` 函数中,循环调用 `duanma` 数组中的16个数码并在数码管上显示,以实现简易电子琴的效果。
相关推荐














