单片机课程设计电子琴按键演奏Word文件下载.docx
- 文档编号:19616490
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:15
- 大小:398.73KB
单片机课程设计电子琴按键演奏Word文件下载.docx
《单片机课程设计电子琴按键演奏Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子琴按键演奏Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
如图3所示:
图3按键控制模块
5.3播放模块
扬声器是一种把电平转变为声信号的换能器件,扬声器和性能对音质的高低音响很大。
扬声器的种类很多,按其换能原理可分为电动式、静电式、电磁式、压电式等几种,后两种多用于农村有线广播网中,按频率范围可分为低音扬声器、中音扬声器,这些常在音箱中作为组合扬声器使用。
在本次课程设计使用XL2000中JP16小喇叭模块。
如图4所示:
六、系统软件设计及说明
6.1设置单片机产生音频脉冲的初值
音乐实际上是有固定周期的信号,通过单片机的定时器的设置可以产生相应音频的音调。
产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T1,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表1所示。
其计算方法如下:
计数脉冲值与频率的关系式是:
N=fi÷
2÷
fr
式中,N是计数值;
fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);
fr是想要产生的音调的频率。
其计数初值T的求法如下:
T=65536-N=65536-fi÷
例如:
设K=65536,fi=1MHz,求低音DO(262Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N
=65536-fi÷
=65536-1000000÷
=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值)
TL
TH
低1DO
262
63627
0x8B
0xF8
#4FA#
740
64859
0x5B
0xFD
#1DO#
277
63730
0xF2
中5SO
784
64897
0x81
低2RE
294
63835
0xF9
#5SO#
831
64933
0xA5
#2RE#
311
63927
0xB7
中6LA
880
64967
0xC7
低3MI
330
64020
0x14
0xFA
#6LA#
932
64999
0xE7
低4FA
349
64102
0x66
中7SI
968
65029
0x05
0xFE
370
64185
0xB9
1046
65057
0x21
低SO
392
64259
0x03
0xFB
1109
65084
0x3C
415
64330
0x4A
高2RE
1175
65109
0x55
低6LA
440
64399
0x8F
1245
65133
0x6D
466
64463
0xCF
高3MI
1318
65156
0x84
低7SI
494
64523
0x0B
0xFC
高4FA
1397
65177
0x99
中1DO
523
64579
0x43
1490
65197
0xAD
554
64632
0x78
高5SO
1568
65216
0xC0
中2RE
587
64683
0xAB
1661
65234
0x02
622
64731
0xDB
高6LA
1760
65251
0xE3
中3MI
659
64776
0x08
1865
65267
中4FA
698
64819
0x33
高7SI
1967
65282
0xFF
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)中断控制:
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所示,为主程序流程图
当程序中断时,程序保存现场,并重装TH0、TL0的初值,然后将P1.7按位取反,重新送入到P1.7,最后中断返回。
如图6所示,为T0中断子程序图。
六、系统调试
7.1使用的主要仪器和仪表
PC(装有XLSP、keil软件)一台、XL2000实验仪、若干连接线等。
7.2调试步骤
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
1)硬件调试
主要就是对课程设计中所需使用的每个实验仪器,进行调试,是各个硬件能够正常工作,并做好一些必要设置,确保在后续调试中正常工作。
2)软件调试
软件调试主要就是采用keil软件,将编写的程序进行调试,检查是否有语法错误。
图7是所设计的运行代码的调试结果。
3)综合调试
综合调试,是将软件和硬件联合在一起进行调试。
首先,将XL2000实验仪通过数据线与PC的USB相连。
接着,接将keil生成的.hex文件导入到软件XLSP中,进行运行。
使其加载到XL2000实验仪中的AT89C51中。
最后,通过XL2000实验仪中的JP37独立按键模块的8个按键,测试JP16小喇叭模块所产生的音频是否达到预先所设计的要求。
7.3测试数据
表2按键音符对应表
按键
K1
do
K5
so
K2
re
K6
fa
K3
mi
K7
xi
K4
la
K8
7.4故障与排除
课设最重要环节是编码的设计,它的调试的成功与否,决定着本次课程设计结果。
而编码中对于每个音符多对应的T码值计算中,我们出现了错误,导致了所产生的音调达不到课设的要求。
但是通过书本上方式1中的计算方法,以及老师的帮助,我们很快的就将所有音符对应的正确的T码值计算完毕,并且通过调试达到了课设要求。
其他的一些就都是一些小的问题,像串口错误等,通过组内合作,也都各个击破了。
八、课设答辩
问题:
可不可以把工作方式1改成工作方式0?
答案:
可以,因为这里工作方式0的计数初值T=
-1*
/2/f也满足。
九、课设小结
我们大家都知道,课设、实训、实验等等的实践项目都是理论联系实际,让我们对所学的理论的知识有个比较客观,比较具体的了解。
本次课设的题目是电子琴设计——按键演奏,这次的课设老师要求我们以小组为单位分工合作完成任务。
对于课题的选择我们是觉得题目很新颖,觉得很好玩,就选了。
通过为期一周的课程设计,让我对于单片机原理及应用这门课程有了更深一层次的了解。
在课设的过程中,不管从查资料还是从对于课题的审题以及把握上,老实说,这是我做的最认真的一次,我觉得自己在很努力地把它做好。
通过本次的课设,不仅培养了我独立思考、动手操作的能力,在其它能力上也都有了很大的提高。
更重要的是,在课设课上,我学会了很多学习的方法,比如说应该怎样去查资料,应该去找什么样的资料来让自己对于这个课题有更好的了解,而这是日后最实用的。
虽然在最后答辩的时候,对于老师的提问,我没有完全答出来,但在事后我还是经过查阅书本,知道了正确的答案。
而这其实也在告诉我,课设还是要结合课本上的理论知识,这样才能知其然且知其所以然。
最后我要感谢老师的指导,也同样谢谢其他各组同学的无私帮助!
参考文献
[1]王浩全等.单片机原理及应用.北京:
人民邮电出版,2013.
[2]张毅刚,彭喜元.单片机原理与应用.北京:
高等教育出版社,2007
[3]刘乐喜.微机计算机接口技术及应用.湖北:
华中科技大学出版社,2005
[4]李群芳等.单片微型计算机原理与接口技术.北京:
电子工业出版社.2002
附录
源程序:
#include<
reg51.h>
#defineucharunsignedchar//定义一下方便使用
#defineuintunsignedint
#defineulongunsignedlongint
charcodedx516[3]_at_0x003b;
//这是为了仿真设置的
ucharth0_f;
//在中断中装载的T0的值高8位
uchartl0_f;
//在中断中装载的T0的值低8位//T0的值,及输出频率对照表
ucharcodefreq[36*2]=
0x8B,0xF8,//00262HZ,1//0
0xF2,0xF8,//00277HZ,1#
0x5B,0xF9,//00293HZ,2
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
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,用于产生唱歌频率
//按键控制音阶声音输出(电子琴)
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;
//延时
}
K2)
tl0_f=freq[f[1]*2];
th0_f=freq[f[1]*2+1];
TR0=1;
if(!
K3)
tl0_f=freq[f[2]*2];
th0_f=freq[f[2]*2+1];
for(n=0;
K4)
tl0_f=freq[f[3]*2];
th0_f=freq[f[3]*2+1];
}
K5)
tl0_f=freq[f[4]*2];
th0_f=freq[f[4]*2+1];
}
K6)
tl0_f=freq[f[5]*2];
th0_f=freq[f[5]*2+1];
K7)
tl0_f=freq[f[6]*2];
th0_f=freq[f[6]*2+1];
K8)
tl0_f=freq[f[7]*2];
th0_f=freq[f[7]*2+1];
TR0=0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 电子琴 按键 演奏