基于单片机数字音乐盒的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精心整理
单片机实物设计
题目:单片机音乐盒设计
班级:K0312416-17
通过
个按
1.1设计目标................................................................................................
第二章软件设计与分析 .......................................................................................
2.1软件设计的组成 ....................................................................................
2.2各部分软件分析 ....................................................................................
2.2.1延时165MS,即十六分音符子函数.............................................
2.2.2延时1MS子函数.........................................................................
2.2.3定时器0中断子函数.................................................................
精心整理
2.2.4播放音乐子函数 .........................................................................
2.5定时器1中断子函数 .....................................................................
2.6按键扫描子函数.............................................................................
2.2.7主函数 ........................................................................................
2.3总源程序 ................................................................................................ 第三章软件仿真 ...................................................................................................
3.仿真图.......................................................................................................
3.1
总结
第一章工作原理
1.1设计目标
具体要求是:以单片机为核心,设计一个数字音乐盒:
利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从
2.2各部分软件分析
2.2.1延时165MS,即十六分音符子函数
//延时165MS,即十六分音符子函数
voiddelay1(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=19000;y>0;y--); }
2.2.2延时1MS子函数
2.2.4播放音乐子函数
//播放音乐子函数
voidsong()
{
uinttemp;
ucharaa;//aa是简谱
c=0;
while(1)
{
if(count2==0)
{
break;
else
{
TR1=0;
BEEP=1;//关蜂鸣器
}
delay1(temp%16);//取数的低4位
TR1=0; //唱完一个音停10MS
BEEP=1;
delay2(10);
TR1=1;
c++;
}
TR1=0;
BEEP=1;
{
num1++;
if(num1==1)
{
TR1=0;
aa=count2;
count2=0;
}
if(num1==2)
{
num1=0;
count2=aa;
TR1=1;
}
write_date('l'); write_com(0x80+3); write_date('c'); write_com(0x80+4); write_date('o'); write_com(0x80+5); write_date('m');
write_com(0x80+6);
write_date('e');
write_com(0x80+7);
write_date('');
write_com(0x80+8);
write_date('t');
write_com(0x80+9);
IT1=1;//下降沿时触发中断EX0=1;//开外部中断0
IT0=1;//下降沿时触发中断count2=0;//唱第一首歌LCD1602_init();
while(1)//大循环