单片机课程设计电子琴按键演奏.docx
- 文档编号:30425155
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:17
- 大小:89.33KB
单片机课程设计电子琴按键演奏.docx
《单片机课程设计电子琴按键演奏.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子琴按键演奏.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程设计电子琴按键演奏
单片机课程设计电子琴--按键演奏
一、课题名称.....................................................................................错误~未定义书签。
二、设计内容概要..............................................................................错误~未定义书签。
三、设计任务和要求..........................................................................错误~未定义书签。
四、系统设计方案..............................................................................错误~未定义书签。
4.1系统设计思路.......................................................................错误~未定义书签。
4.2系统总体的组成框图............................................................错误~未定义书签。
五、系统硬件设计及说明...................................................................错误~未定义书签。
5.1系统控制模块AT89C51.........................................................错误~未定义书签。
5.2琴键控制模块.......................................................................错误~未定义书签。
5.3播放模块..............................................................................错误~未定义书签。
六、系统软件设计及说明...................................................................错误~未定义书签。
6.1设置单片机产生音频脉冲的初值...........................................错误~未定义书签。
6.2实验主要程序.......................................................................错误~未定义书签。
6.3系统总体功能流程图............................................................错误~未定义书签。
七、系统调试.....................................................................................错误~未定义书签。
7.1使用的主要仪器和仪表.........................................................错误~未定义书签。
7.2调试步骤..............................................................................错误~未定义书签。
7.3测试数据..............................................................................错误~未定义书签。
7.4故障与排除..........................................................................错误~未定义书签。
八、课设答辩.....................................................................................错误~未定义书签。
九、课设小结.....................................................................................错误~未定义书签。
参考文献............................................................................................错误~未定义书签。
附录...................................................................................................错误~未定义书签。
一、课题名称
电子琴设计——按键演奏
二、设计内容概要
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。
三、设计任务和要求
任务:
设计并实现按键演奏电子琴
要求:
利用数字键1、2、3、4、5、6、7、8作为电子琴键,按下数字键发出相应的音调。
四、系统设计方案
4.1系统设计思路
利用所给单片机实验仪中键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。
当系统扫描到键盘上有键被按下,则快速检测出是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动电路放大滤波后,就会发出相应的音调。
4.2系统总体的组成框图
本系统采用AT89C51为电子琴控制中心,系统主要包括主控制模块、琴键控制模块、播放模块。
如图1所示:
发出按键状态响应AT89C51控音调琴键控制中心模块播放模块制模块
体的组成框图图1系统总
0
五、系统硬件设计及说明
5.1系统控制模块AT89C51
图2AT89C51的引脚图AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示。
P0口:
漏极开路的双向I/O口。
当使用外部存储器时(ROM或RAM)时,作为地址和数据总线分时复用。
在程序效验时,输出指令字节(这时需加外部上拉电阻)。
作为总线时P0口能驱动8个LSTTL负载。
P1口:
准双向I/O口,具有内部上拉电阻,是通用的I/O口。
在编程/校验时,用作输入低位字节地址,P1口可驱动4个LSTTL负载。
P2口:
准双向I/O口,具有内部上拉电阻,是通用的I/O口。
让使用片外存储器(ROM或RAM)时,输出高8位地址。
在编程/校验时,接收高位字节地址。
P2口可驱动4个LSTTL负载。
P3口:
准双向I/O口,具有内部上拉电阻,是通用的I/O口。
P3口可驱动4个LSTTL负载。
同时P3口还具有第二个功能,在使用第二个功能时,其输出锁存器应由程序置1。
5.2琴键控制模块
琴键的按键选用的XL2000的JP37独立按键模块,此8个独立的按键开关按下为低电平。
如图3所示:
1
图3按键控制模块
5.3播放模块
扬声器是一种把电平转变为声信号的换能器件,扬声器和性能对音质的高低音响很大。
扬声器的种类很多,按其换能原理可分为电动式、静电式、电磁式、压电式等几种,后两种多用于农村有线广播网中,按频率范围可分为低音
。
在本次课程设计扬声器、中音扬声器,这些常在音箱中作为组合扬声器使用
使用XL2000中JP16小喇叭模块。
如图4所示:
图4播放模块
六、系统软件设计及说明
6.1设置单片机产生音频脉冲的初值
音乐实际上是有固定周期的信号,通过单片机的定时器的设置可以产生相应音频的音调。
产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T1,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表1所示。
其计算方法如下:
计数脉冲值与频率的关系式是:
N,fi?
2?
fr
式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的音调的频率。
2
其计数初值T的求法如下:
T,65536,N,65536,fi?
2?
fr
例如:
设K,65536,fi,1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T,65536,N
65536,fi?
2?
fr
65536,1000000?
2?
fr
65536,500000/fr
低音DO的T,65536,500000/262,63627;
中音DO的T,65536,500000/523,64580;
高音DO的T,65536,500000/1046,65058。
表1音符频率与计数值T的对照表
音符频率(HZ)计数值(T值)TLTH音符频率(HZ)计数值(T值)TLTH低1DO262636270x8B0xF8#4FA#740648590x5B0xFD#1DO#277637300xF20xF8中5SO784648970x810xFD低2RE294638350x5B0xF9#5SO#831649330xA50xFD#2RE#311639270xB70xF9中6LA880649670xC70xFD低3MI330640200x140xFA#6LA#932649990xE70xFD低4FA349641020x660xFA中7SI968650290x050xFE#4FA#370641850xB90xFA低1DO1046650570x210xFE低SO392642590x030xFB#1DO#1109650840x3C0xFE#5SO#415643300x4A0xFB高2RE1175651090x550xFE低6LA440643990x8F0xFB#2RE#1245651330x6D0xFE#6LA#466644630xCF0xFB高3MI1318651560x840xFE低7SI494645230x0B0xFC高4FA1397651770x990xFE中1DO523645790x430xFC#4FA#1490651970xAD0xFE#1DO#554646320x780xFC高5SO1568652160xC00xFE中2RE587646830xAB0xFC#5SO#1661652340x020xFE#2RE#622647310xDB0xFC高6LA1760652510xE30xFE中3MI659647760x080xFD#6LA#1865652670xE30xFE中4FA698648190x330xFD高7SI1967652820x020xFF
6.2实验主要程序
音频输出引脚接入:
1)
sbitBEEP=P1^7;//喇叭输出脚
2)按键控制引脚接入:
sbitK1=P2^0;
sbitK2=P2^1;
sbitK3=P2^2;
sbitK4=P2^3;
sbitK5=P2^4;
sbitK6=P2^5;
sbitK7=P2^6;
sbitK8=P2^7;
3
3)中断控制:
timer0()interrupt1
{
TL0=tl0_f;
TH0=th0_f;//调入预定时值
BEEP=~BEEP;//取反音乐输出IO
}
4)按键控制音阶声音输出(电子琴)
if(!
Ki)//i取值为1~8
{tl0_f=freq[f[0]*2];//置一个音符的值
th0_f=freq[f[0]*2+1];
TR0=1;
for(n=0;n<8000;n++);//延时
}
6.3系统总体功能流程图
在主程序流程图中,T0初始化后,首先要通过扫描键盘,判断是否有按键按下。
若没有按键按下,则要继续扫描,不断重复循环过程,直到发现按键按下,程序才能根据按键的功能,将相对应的音符T值装入到T0以后,T0就会开始启动。
程序随后继续扫描按键,若按键保持按下状态,则T0继续保持工作状
返回初始状态,等待下一次的扫描按键态,直到按键松下,T0就会停止工作,
结果。
如图5所示,为主程序流程图
4
开始
T0初始化并开中断允放T0中断
N按键按下是否成功
Y
按键识别功能
根据按键功能,装入音符T值到T0中
启动T0工作
N
按键释放与
否
Y
停止T0工作
图5主程序流程图当程序中断时,程序保存现场,并重装TH0、TL0的初值,然后将P1.7按位
取反,重新送入到P1.7,最后中断返回。
如图6所示,为T0中断子程序图。
5
T0中断入口
重装TH0、TL0初值
P1.7取反
中断返回
图6T0中断子程序图
六、系统调试
7.1使用的主要仪器和仪表
PC(装有XLSP、keil软件)一台、XL2000实验仪、若干连接线等。
7.2调试步骤
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
1)硬件调试
主要就是对课程设计中所需使用的每个实验仪器,进行调试,是各个硬件能够正常工作,并做好一些必要设置,确保在后续调试中正常工作。
2)软件调试
软件调试主要就是采用keil软件,将编写的程序进行调试,检查是否有语法错误。
图7是所设计的运行代码的调试结果。
图7keil编译进行的软件测试
3)综合调试
6
综合调试,是将软件和硬件联合在一起进行调试。
首先,将XL2000实验仪通过数据线与PC的USB相连。
接着,接将keil生成的.hex文件导入到软件XLSP中,进行运行。
使其加载到XL2000实验仪中的AT89C51中。
最后,通过XL2000实验仪中的JP37独立按键模块的8个按键,测试JP16小喇叭模块所产生的音频是否达到预先所设计的要求。
图8XL2000的各模块的连接图7.3测试数据
表2按键音符对应表
按键频率(HZ)音符按键频率(HZ)音符
K1440doK5554so
K2466reK6587fa
K3494miK7622xi
K4523laK8659do
7.4故障与排除
课设最重要环节是编码的设计,它的调试的成功与否,决定着本次课程设计结果。
而编码中对于每个音符多对应的T码值计算中,我们出现了错误,导致了所产生的音调达不到课设的要求。
但是通过书本上方式1中的计算方法,以及老师的帮助,我们很快的就将所有音符对应的正确的T码值计算完毕,并且通过调试达到了课设要求。
其他的一些就都是一些小的问题,像串口错误等,通过组内合作,也都各个击破了。
八、课设答辩
问题:
可不可以把工作方式1改成工作方式0,
136102答案:
可以,因为这里工作方式0的计数初值T=-1*/2/f也满足。
九、课设小结
7
我们大家都知道,课设、实训、实验等等的实践项目都是理论联系实际,让我们对所学的理论的知识有个比较客观,比较具体的了解。
本次课设的题目是电子琴设计——按键演奏,这次的课设老师要求我们以小组为单位分工合作完成任务。
对于课题的选择我们是觉得题目很新颖,觉得很好玩,就选了。
通过为期一周的课程设计,让我对于单片机原理及应用这门课程有了更深一层次的了解。
在课设的过程中,不管从查资料还是从对于课题的审题以及把握上,老实说,这是我做的最认真的一次,我觉得自己在很努力地把它做好。
通过本次的课设,不仅培养了我独立思考、动手操作的能力,在其它能力上也都有了很大的提高。
更重要的是,在课设课上,我学会了很多学习的方法,比如说应该怎样去查资料,应该去找什么样的资料来让自己对于这个课题有更好的了解,而这是日后最实用的。
虽然在最后答辩的时候,对于老师的提问,我没有完全答出来,但在事后我还是经过查阅书本,知道了正确的答案。
而这其实也在告诉我,课设还是要结合课本上的理论知识,这样才能知其然且知其所以然。
最后我要感谢老师的指导,也同样谢谢其他各组同学的无私帮助~
参考文献
[1]王浩全等.单片机原理及应用.北京:
人民邮电出版,2013.
[2]张毅刚,彭喜元.单片机原理与应用.北京:
高等教育出版社,2007[3]刘乐喜.微机计算机接口技术及应用.湖北:
华中科技大学出版社,2005[4]李群芳等.单片微型计算机原理与接口技术.北京:
电子工业出版社.2002
8
附录源程序:
#include
#defineuintunsignedint#defineulongunsignedlongintcharcodedx516[3]_at_0x003b;//这是为了仿真设置的
sbitBEEP=P1^7;//喇叭输出脚sbitK1=P2^0;sbitK2=P2^1;sbitK3=P2^2;sbitK4=P2^3;
sbitK5=P2^4;
sbitK6=P2^5;sbitK7=P2^6;sbitK8=P2^7;ucharth0_f;//在中断中装载的T0的值高8位
uchartl0_f;//在中断中装载的T0的值低8位//T0的值,及输出
频率对照表
ucharcodefreq[36*2]={
0x8B,0xF8,//00262HZ,1//00xF2,0xF8,//00277HZ,1#
20x5B,0xF9,//00293HZ
0xB7,0xF9,//00311HZ,2#
0x14,0xFA,//00329HZ,3
0x66,0xFA,//00349HZ,4
0xB9,0xFA,//00370HZ,4#
0x03,0xFB,//00392HZ,5
0x4A,0xFB,//00415HZ,5#
0x8F,0xFB,//00440HZ,6
0xCF,0xFB,//00466HZ,6#
0x0B,0xFC,//00494HZ,7
0x43,0xFC,//00523HZ1
0x78,0xFC,//00553HZ1#
0xAB,0xFC,//00586HZ2
0xDB,0xFC,//00621HZ2#
0x08,0xFD,//00658HZ3
0x33,0xFD,//00697HZ4
0x5B,0xFD,//00739HZ4#
0x81,0xFD,//00783HZ5
0xA5,0xFD,//00830HZ5#
0xC7,0xFD,//00879HZ6
9
0xE7,0xFD,//00931HZ6#
0x05,0xFE,//00987HZ7
0x21,0xFE,//01045HZ'1
0x3C,0xFE,//01106HZ'1#
0x55,0xFE,//01171HZ'2
0x6D,0xFE,//01241HZ'2#
0x84,0xFE,//01316HZ'3
0x99,0xFE,//01393HZ'4
0xAD,0xFE,//01476HZ'4#
0xC0,0xFE,//01563HZ'5
0x02,0xFE,//01658HZ'5#
0xE3,0xFE,//01755HZ'6
0xE3,0xFE,//01860HZ'6#
0x02,0xFF,//01971HZ'7
};
//定时中断0,用于产生唱歌频率timer0()interrupt1{
TL0=tl0_f;
TH0=th0_f;//调入预定时值
BEEP=~BEEP;//取反音乐输出IO
}
//按键控制音阶声音输出(电子琴)voidmain(void)//主程序
{
ulongn;
ucharcodef[8]={9,11,13,14,16,18,20,21};//1234567`1八个音
符在频率表中的位置
TMOD=0x01;//使用定时器0的16位工作模式
TR0=0;
ET0=1;
EA=1;
while
(1)
{
if(!
K1)
{
tl0_f=freq[f[0]*2];//置一个音符的值
th0_f=freq[f[0]*2+1];
TR0=1;
for(n=0;n<8000;n++);//延时
}
if(!
K2)
{
tl0_f=freq[f[1]*2];//置一个音符的值
10
th0_f=freq[f[1]*2+1];
TR0=1;
for(n=0;n<8000;n++);//延时
}
if(!
K3)
{
tl0_f=freq[f[2]*2];//置一个音符的值
th0_f=freq[f[2]*2+1];
TR0=1;
for(n=0;n<8000;n++);//延时
}
if(!
K4)
{
tl0_f=freq[f[3]*2];//置一个音符的值
th0_f=freq[f[3]*2+1];
TR0=1;
for(n=0;n<8000;n++);//延时
}
if(!
K5)
{
tl0_f=freq[f[4]*2];//置一个音符的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子琴 按键 演奏