单片机电子琴程序+详细注解Word文档下载推荐.docx
- 文档编号:21289201
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:15
- 大小:16.78KB
单片机电子琴程序+详细注解Word文档下载推荐.docx
《单片机电子琴程序+详细注解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机电子琴程序+详细注解Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
voiddelay1s(void)
{
unsignedchari,k;
for(k=100;
k>
0;
k--)
for(i=100;
i>
i--);
}
/**************************************************/
/******************定时器0中断*******************/
voidTIMER0(void)interrupt1
TH0=STH0;
TL0=STL0;
PWM1=~PWM1;
}
/*************************************************/
/******************定时器1中断*******************/
voidint0()interrupt3//采用中断3控制节拍节拍延时
{TH1=0xd8;
TL1=0xef;
n--;
/****************频率延时程序*******************/
voiddelay(unsignedcharm)//控制频率延时
{
unsignedi=3*m;
while(--i);
/************************************************/
/***************************毫秒延时子程序**************************/
voiddelayms(unsignedchara)
while(--a);
//采用while(--a)不要采用while(a--);
/*******************************************************************/
/**************************设置1-8曲调值*************************/
unsignedintcodetab[]={0xfc43,0xfd08,0,0,0xfd20,0xfd32,0,0,0xfd81,0xfdc7,0,0,0xfe05,0xfe21,0,0,};
/***************************************************************/
/**************以下对应数码管0-f**************************/
unsignedcharcodetable[]={
0x03,0x9f,0x25,0x0d,
0x99,0x49,0x41,0x1f,
0x01,0x09,0x11,0xc1,
0x63,0x85,0x61,0x71,0xff};
/*********************第一首音乐老男孩***************************/
unsignedcharcodemusic_tab_1[]={
/*1*/
0x20,0x20,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x20,
0x20,0x20,0x1c,0x20,0x20,0x20,0x24,0x20,
0x26,0x20,0x1c,0x20,0x19,0x20,0x18,0x10,
0x19,0x10,0x20,0x30,0x01,0x20,0x20,0x10,0x20,0x10,
0x1c,0x20,0x30,0x20,0x30,0x20,0x2b,0x20,
0x26,0x20,0x20,0x20,0x01,0x20,0x20,0x20,
0x24,0x20,0x20,0x20,0x26,0x10,0x2b,0x20,0x30,0x10,
0x2b,0x60,
/*2*/
//1176711237755
0x30,0x40,0x18,0x20,0x19,0x20,0x1c,0x20,0x19,0x10,
0x18,0x10,0x18,0x20,0x2b,0x20,0x13,0x20,0x19,0x20,
0x19,0x20,0x20,0x10,0x20,0x10,
//63221117
0x1c,0x20,0x13,0x10,0x15,0x10,0x15,0x20,0x18,0x20,
0x18,0x40,0x18,0x20,0x19,0x20,
//6711237755
0x1c,0x20,0x19,0x10,0x18,0x10,0x18,0x20,0x15,0x20,
0x13,0x20,0x19,0x20,0x19,0x20,0x20,0x10,0x20,0x10,
//632211
0x18,0x60,
//00000
0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x40,0x01,0x60,
//1155555577755
0x18,0x10,0x18,0x10,0x10,0x20,0x10,0x10,0x10,0x10,
0x10,0x20,0x10,0x20,0x10,0x20,0x19,0x10,0x19,0x10,
//55556511112
0x10,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0x0e,0x20,
0x10,0x20,0x18,0x10,0x18,0x10,0x18,0x20,0x18,0x10,
0x15,0x10,
//3244332443
0x13,0x20,0x15,0x10,0x12,0x10,0x12,0x20,0x13,0x20,
//32443
//5511
0x10,0x40,0x10,0x20,0x18,0x10,0x18,0x10,
//55555577755
0x10,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0x10,0x20,
0x10,0x20,0x19,0x10,0x19,0x10,0x19,0x20,0x20,0x10,
0x20,0x10,
//3244332171
0x13,0x20,0x15,0x10,0x18,0x10,0x18,0x20,0x19,0x10,
0x01,0x40,0x01,0x40,
//第二次
/*3*/
/*4*/
//33535
0x01,0x40,0x01,0x40,
//结尾
//321712133423342
0x13,0x20,0x15,0x20,0x18,0x30,0x19,0x10,0x18,0x10,0x15,0x10,
0x18,0x40,0x13,0x40,0x13,0x40,0x12,0x40,0x15,0x40,
0x00
};
/*********************************************************************/
/*******************第二首音乐机器猫**************************/
unsignedcharcodemusic_tab_2[]={0x40,0x20,0x39,0x10,0x30,0x20,0x26,0x10,0x1c,0x20,0x26,0x20,0x20,0x40,
0x20,0x20,0x1c,0x10,0x20,0x20,0x26,0x10,0x24,0x20,0x26,0x10,0x2b,0x40,
0x39,0x20,0x2b,0x10,0x2b,0x20,0x24,0x10,0x19,0x20,0x19,0x10,0x1c,0x20,
0x20,0x10,0x24,0x40,0x24,0x20,0x26,0x20,0x39,0x40,0x33,0x40,0x30,0x40,
0x2b,0x40,
0x40,0x20,0x39,0x10,0x30,0x20,0x26,0x10,0x1c,0x20,0x26,0x20,0x20,0x40,
0x20,0x20,0x1c,0x10,0x20,0x20,0x26,0x10,0x24,0x20,0x26,0x10,0x2b,0x40,
0x39,0x20,0x2b,0x10,0x2b,0x20,0x24,0x10,0x19,0x20,0x19,0x10,0x1c,0x20,
0x20,0x10,0x24,0x40,0x24,0x20,0x26,0x20,0x33,0x40,0x2b,0x40,0x30,0x40,
0x1c,0x40,0x1c,0x20,0x20,0x20,0x24,0x20,0x20,0x10,0x1c,0x10,0x20,0x40,
0x2b,0x20,0x26,0x10,0x24,0x20,0x2b,0x10,0x20,0x40,
0x1c,0x40,0x20,0x40,0x24,0x40,0x2b,0x40,0x19,0x20,0x1c,0x10,0x20,0x20,
0x1c,0x10,0x20,0x20,0x24,0x20,0x20,0x20,0x1c,0x20,0x26,0x40,0x2b,0x20,
0x30,0x40,0xff};
/******************************************************************************/
/*******************以下为主函数部分**************************/
voidmain(void)
unsignedcharp,m;
//m为频率常数变量
unsignedchari=0;
TMOD=0x11;
//设置定时器模式都为模式1
IE=0x8a;
//中断使能
TH1=0xd8;
P2=0xa0;
P3=0x0f;
I2CCON=0xE8;
SetTime(a);
//设置时间
SwitchRTC
(1);
LCDInitialize();
//液晶初始化
while
(1)
P1=0xf0;
P2=0xbf;
lie0=0;
//扫描第一列以下以此类推
temp=P1;
temp=temp&
0x0f;
if(temp!
=0x0f)
{
delay1s();
//去键盘抖动
temp=P1;
temp=temp&
if(temp!
=0x0f)
{
switch(temp)
case0x0e:
key=0;
break;
case0x0d:
key=4;
case0x0b:
key=8;
case0x07:
key=12;
}
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp&
0x0f;
while(temp!
=0x0f)
{
temp=P1;
}
TR0=0;
}
}
lie1=0;
if(temp!
switch(temp)
key=1;
key=5;
key=9;
key=13;
temp=temp&
while(temp!
{
temp=P1;
temp=temp&
}
TR0=0;
lie2=0;
key=2;
key=6;
key=10;
key=14;
lie3=0;
key=3;
key=7;
key=11;
key=15;
switch(key)
{case0,4,8,12,1,5,9,13,8,7,10,11,15:
break;
case2:
play_1:
{
a_1:
p=music_tab_1[i];
if(p==0x00){i=0,delayms(1000);
gotoplay_1;
}//如果碰到结束符,延时1秒,回到开始再来一遍
elseif(p==0xff){i=i+1;
delayms(100),TR1=0;
gotoa_1;
}//若碰到休止符,延时100ms,继续取下一音符
else{m=music_tab_1[i++],n=music_tab_1[i++];
}//取频率常数和节拍常数
TR1=1;
//开定时器1
while(n!
=0)PWM1=~PWM1,delay(m);
//等待节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 程序 详细 注解