• 大小: 116KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 51单片机  

资源简介

利用51单片机、喇叭、数码管制作一个简易的数字电子琴,可以播放音符、曲子,并在数码管显示音调或曲号。同时具有数字钟功能,在数码管上显示小时、分钟时间。

资源截图

代码片段和文件信息

#include     		//52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int 
uchar  code dis[]={0x060x5b0x4f0x660x6d0x7d0x070x7f0x080x400x010x390x5E0x790x710x3F};  //1-F 、0
uint  code yinse[]={636286383664020641036426064400645246458064694647776482064898649686503065058651106516465178652176525265283};//低1~7、中1~7、高1~7
uchar code music1[]={88121213131211111010998121211111010912121111101098812121313121111101099810080};//音调
uchar code music2[]={4810048571157137134568464864857115710080};
uchar code music3[]={121012101213121013128891012109100101210080};
uchar code music4[]={58101287101212131415131210988810988891099610910080};
uint code de1[]={222222422222242222224222222422222242222224};//节奏
uint code de2[]={11014111141111410.50.51141111411114};
uint code de3[]={21116111142112112014};
uint code de4[]={1212121212121611212112121121226};
uchar code dis1[]={0x3F0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5E0x790x71};
uint time=100;
uchar own[50];
uchar index=0;
char jilu=0;
char bofang=0;
//key 8 低音 9中音 10高音    14 手动  15自动
char mode=0;//手动
uchar yindiao=0;//低音 初值yinse[num+yindiao*7]
sbit rect_wave=P2^3;
sbit dula=P2^6; //申明U1锁存器的锁存端  
sbit wela=P2^7; //申明U2锁存器的锁存端
uchar code table[]={0x060x5b0x4f0x660x6d0x7d0x070x7C0x080x400x010x390x5E0x790x710x3F};
uint th=0;
uchar show[]={0x000x080x3F0x3F0x3f0x3F};//六个数码管显示的内容
void delayms(uint xms)
{
uint ij;
for(i=xms;i>0;i--)       //i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}

void int_timer ()//定时器0初始化 输出一定频率的方波
{
TMOD=0x11;
TH0=th/256;
TL0=th%256;
EA=1;
ET0=1;
TR0=1;
}

void Timer0_ISR(void) interrupt 1
{
TH0=th/256;
TL0=th%256;
rect_wave=!rect_wave;
}


void simple(uchar numuint tim)//播放单个音符
{   
th=yinse[num];
  int_timer();
  delayms(tim);
  TR0=0;//关闭中断
  rect_wave=1;
}
void music (uchar mu[]uint d[])//播放曲子
{ uint k;
    for(k=0;mu[k]!=80;k++)
{   for(;mu[k]!=100;k++)
{
time=d[k]*300;
simple(mu[k]-1time);//time 音符的节奏拍子长短
delayms(10);
}
 delayms(80);
}
jilu=0;
  bofang=0;
}
void mus(uchar mu[]) //播放储存的曲子
{ uint k;
    for(k=0;mu[k]!=80;k++)
{   for(;mu[k]!=100;k++)
{

simple(mu[k]-1300);
delayms(300);
}
 delayms(80);
}
}
void notsimple(uchar num)//播放曲子 判断曲号/储存的曲子
{  
 switch(num)
        {
          case 0:  
               music(music1de1);
               break;
          case 1:
 music(music2de2);
               break;
          case 2:
               music(music3de3);
               break;
          case 3:
               music(music4de4);
               break;
d

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     114747  2019-01-11 13:13  基于51单片机的数字电子琴\HL-1原理图.pdf

     文件       5746  2019-01-11 13:16  基于51单片机的数字电子琴\music.c

    .......     70766  2019-01-11 13:16  基于51单片机的数字电子琴\music.uvgui.15520

    .......      4667  2019-01-11 13:16  基于51单片机的数字电子琴\music.uvopt

    .......     13900  2019-01-11 13:16  基于51单片机的数字电子琴\music.uvproj

     目录          0  2019-01-11 13:14  基于51单片机的数字电子琴\Listings

     目录          0  2019-01-11 13:14  基于51单片机的数字电子琴\objects

     目录          0  2019-01-11 13:16  基于51单片机的数字电子琴

----------- ---------  ---------- -----  ----

               209826                    8


评论

共有 条评论