c51单片机课程设计电子琴.docx
- 文档编号:3310274
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:11
- 大小:243.63KB
c51单片机课程设计电子琴.docx
《c51单片机课程设计电子琴.docx》由会员分享,可在线阅读,更多相关《c51单片机课程设计电子琴.docx(11页珍藏版)》请在冰豆网上搜索。
c51单片机课程设计电子琴
课
程
设
计
报
告
姓名:
曹飞龙
班级:
101班
学号:
10101230
课程设计名:
简易电子琴
指导老师:
胡启龙
一、概述:
本系统设计制作一个可演奏的电子琴。
综合应用了两项设计:
(1)能产生纯音,了解音调高低的控制方法,用键盘代替电子琴的键盘,控制演奏音乐。
(2)演奏一支乐曲(天空之城)。
那音阶要怎么使用C51单片机产生呢?
C51在这项工作中运用它哪些资源呢?
我们怎么实现一个按键对应一个音阶呢?
二、系统描述:
(1)我们从初中开始就知道,声音是由振动产生的,基本的这7个音阶的频率之间满足某种数学关系由低到高排列的自然音,所以我们可以通过改变单片机输出频率就可以得到不同的音阶;
(2)为了得到精确的频率(周期的倒数),我们可以使用C51单片机定时中断模块。
(3)通过判断按键是否被按下,然后执行该按键按下时的函数(在程序中是改变T1的初值得到实现)。
需要注意的是,在该程序中让8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。
例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。
记数脉冲值与频率的关系公式如下:
N=Fi/2/FrN:
记数值
Fi:
内部计时一次为1微秒.故其频率为1MHZ
Fr;要产生的频率
起记数值的求法如下:
T=65536-N=65536-Fi/2/Fr
例如:
设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音D0的T=65536-500000/262=63627
中音D0的T=65536-500000/523=64580
低音D0的T=65536-500000/1047=65059
详细的音阶频率与计数初值可参考附录一;
三、电路设计
1.单片机最小系统模块
2.三极管信号放大模块
扬声器发出对应音符模块如下:
3.按键电路模块:
四.程序设计:
本系统的程序流程图如下:
程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitkongzhi=P1^1;
sbitfm=P1^0;//蜂鸣器输出的IO口
uchartimeh,timel,i=8,t;//timeh,timel为定时器高低4位,i为演奏音符个数
ucharcodeyinyue[]={
0x63,0x71,0x83,0x71,0x82,0xA2,0x76,0x32,0x32,0x63,0x51,0x62,0x82,0x54,0x32,0x32,0x42,0x32,0x42,0x11,
0x32,0x81,0x81,0x81,0x73,0x41,0x41,0x71,0x74,0x63,0x71,0x83,0x71,0x82,0xA2,0x74,0x31,0x31,0x63,0x51,0x62,0x82,
0x54,0x31,0x42,0x83,0x71,0x71,0x83,0x91,0x91,0xA1,0x82,0x83,0x71,0x61,0x61,0x72,0x51,0x66,0xff};
//---------------------------简谱---------------------------------------
//1-7代表中音do~si,8代表高音do
ucharcodeyinfu[]={0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x81,0xff};
//----------------------------简谱音调对应的定时器初值---------------------------
ucharcodecuzhi[]={0xff,0xff,//占位符
0xFC,0x44,0xFC,0xAD,0xFD,0x0A,0xFD,0x34,0xFD,0x83,0xFD,0xC8,0xFE,0x06,
//中音do~si的T计数初值
0xFE,0x22,0xFE,0x57,0xFE,0x85,0xFE,0x9B,0xFE,0xC2,0xFE,0xE4,0xFF,0x03};//高音do的T计数初值
voiddelay1ms(unsignedintms);//延时ms毫秒子程序
voiddelay165ms(uintz);//延时165ms,即1/4拍子程序
voidkeysong();//演奏子程序
intkey();
voidsong();
main()
{kongzhi=1;
EA=1;//开总中断
ET0=1;//开定时器0
TMOD=0x01;//定时器0工作在方式1
TH0=0;
TL0=0;
TR0=1;
P3=0xff;
while
(1)
{if(kongzhi==0){song();}
else{
key();
keysong();}
}
}
voidsong()
{
uinttemp;
ucharjp;//jp是简谱1~8的变量
t=0;
while
(1)
{temp=yinyue[t];
if(temp==0xff)break;//到曲终则跳出循环
jp=temp/16;//取数的高4位作为音调
if(jp!
=0)
{
timeh=cuzhi[jp*2];//取T的高4位值
timel=cuzhi[jp*2+1];//取T的低4位值
}
else
{
TR0=0;
fm=1;//关蜂鸣器
}
delay165ms(temp%16);//取数的低4位作为节拍
TR0=0;//唱完一个音停10ms
fm=1;
delay1ms(10);
TR0=1;
t++;
}
TR0=0;
fm=1;
}
voidtimer0()interrupt1//定时器0溢出中断子程序用于产生各种音调
{
TH0=timeh;
TL0=timel;
fm=~fm;//产生方波
}
voidkeysong()
{
uinttemp;
ucharjp;//jp是简谱1~8的变量
i=key();
delay1ms(50);
if(i!
=8)
{TR0=1;
temp=yinfu[i];
jp=temp/16;//取数的高4位作为音调
if(jp!
=0)
{
timeh=cuzhi[jp*2];//取T的高4位值
timel=cuzhi[jp*2+1];//取T的低4位值
}
else
{
TR0=0;
fm=1;//关蜂鸣器
}
delay165ms(temp%16);//取数的低4位作为节拍
TR0=0;//唱完一个音停10ms
fm=1;
delay1ms(10);
//TR0=1;
//i++;
}
TR0=0;
fm=1;
}
intkey()
{switch(P2)
{
case0xfe:
return0;
case0xfd:
return1;
case0xfb:
return2;
case0xf7:
return3;
case0xef:
return4;
case0xdf:
return5;
case0xbf:
return6;
case0x7f:
return7;
default:
return8;
}
}
//函数名:
delay165ms
//函数功能:
采用软件实现延时约z*165ms
//形式参数:
无
//返回值:
无
voiddelay165ms(uintz)//延时165ms,即1/4拍
{uintx;
for(x=0;x delay1ms(165); } //函数名: delay1ms //函数功能: 采用软件实现延时约ms*1ms //形式参数: 无 //返回值: 无 voiddelay1ms(unsignedintms) {unsignedinti,j; for(j=0;j for(i=0;i<0x100;i++); } 五.制作与调试: 最后制作出的成品: 六.测试结果。 该成品外观虽然不够美观,但是播放音乐功能,一个按键对应一个音阶的功能十分到位。 总的来说,对于该成品老师和同学达成了同一共识: 虽然丑了点,但很“温柔”(声音较小)。 七.结论。 本次综合设计主要涉及硬件和软件两方面的内容,通过这次课程,我的硬件和软件开发能力都获得了提高。 首先硬件方面,更加熟悉了51单片机的结构以及它的实用,基本了解了电子产品的开发流程和所要做的工作。 通过课程设计,我学到了很多,这些不仅仅局限于巩固复习了课本上知识点,还锻炼了自己分析问题以及动手实际操作的能力,将以前学过的零散的知识串到一起,学以致用。 本系统基本上实现了按下键盘,扬声器播放对应的音符,同时单个程序也能播放歌曲,不足之处在于不能将按键和播放音乐的程序不能完美融合,只能在一定范围内满足按键或播放歌曲一种需要,且播放的声音太小,放大电路的选择方面的工作做得不是很好。 附录一: 音阶频率与计数初值对照表: 音符 频率 计数处之 音符 频率 计数初值 音符 频率 计数初值 低音1 220 0xefa9 中音1 440 0xf7d8 高音1 880 0xfbef 低音2 247 0xf173 中音2 494 0xf8bd 高音2 988 0xfc62 低音3 277 0xf307 中音3 554 0xf987 高音3 1109 0xfcc7 低音4 294 0xf3c8 中音4 587 0xf9e4 高音4 1175 0xfcf6 低音5 330 0xf51e 中音5 659 0xfa90 高音5 1318 0xfd4b 低音6 370 0xf64c 中音6 740 0xfb29 高音6 1480 0xfd98 低音7 415 0xf75a 中音7 831 0xfbb1 高音7 1661 0xfddc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c51 单片机 课程设计 电子琴
![提示](https://static.bdocx.com/images/bang_tan.gif)