单片机电子琴单片机课程设计.docx
- 文档编号:16246125
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:13
- 大小:146.78KB
单片机电子琴单片机课程设计.docx
《单片机电子琴单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机电子琴单片机课程设计.docx(13页珍藏版)》请在冰点文库上搜索。
单片机电子琴单片机课程设计
郑州科技学院
单片机课程设计
题目:
基于51单片的声光电子琴设计
学生姓名:
苏梦强
专业班级:
电子科学与技术
学号:
201131074
院系:
电气工程学院
指导教师:
饶美丽
完成时间:
2015年1月9日
一、设计任务与要求
1.1设计任务
实现电子琴发声控制系统;要求电路实现如下功能:
利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。
并在存储一首歌曲的内容,可以实现自动播放。
说明:
单片机的工作时钟频率为11.0592MHz。
1.2设计要求
设计一个带有复位电路,晶振时钟,能显示音调字符的8键电子琴。
1.3设计意义
该设计具有以下优点:
1)可以方便得知播放的音符和音调;
2)比传统电子琴功能更完善;
制作简单,成本低
二、方案总体设计
本次课程设计的课题是基于51单片机的电子琴的设计,所要达到的要求如下:
1)利用蜂鸣器作为发声部件。
2)一个数码管作为显示部件。
3)设置8个按键,实现高音、中音、低音的1、2、3、4、5、6、7、8的发音。
本次设计主要是要通过软硬件的配合实现电子琴的上述功能,操作人员可以通过按下键盘上任意一个键来发出相应的音符。
2.1方案对比
AT89C51具有高速度、低电压、低功耗、且可靠性和成本都比较低的特点。
因此本次课程设计采用AT89C51单片机作为整个电路核心控制器件。
对于本控制系统使用一片AT89C51系列的单片机,不需要外扩展存储器,就能实现显示、预制状态、动态调节的功能,因而整体结构简单。
设计电路时运用89C51系列单片机的接口来实现各种输入、输出功能。
P2.7待定部分口用作输出口,向发声电路输出信号;P1口和P0口共同实现一个键盘的功能。
方案一:
采用单个的逻辑器件组合
我们知道计数器8253可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。
根据本实验要求,采用8279将键扫描得到的键值通过查表得到相应的8253的频率值,将从8253得到相对应的按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求
方案二:
用VHDL语言编程来实现
利用我们实验室先进的数字电路实验设备,我们可以采用VHDL语言编程来实现。
我们可以通过VDHL语言,对实验原理图的各个部分进行设计,通过编译,可以在计算机上下载此实验原理图,利用电路学习机上的芯片。
我们很快就可以设计出一个简单的电子琴。
并实现其功能。
方案三:
采用AT89C51单片机
采用AT89C51单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:
一位数码管,和PNP型三极管等。
利用按键实现音符和音调的输入;一位的数码管进行被操作的按键显示:
用PNP型三极管实现低音频功率放大;最后用蜂鸣器发音。
方案比较:
方案一采用单个的逻辑器件组合实现。
这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。
例如七个不同的音符是由七个不同的频率来控制发出的,所用仪器之多显而易见。
方案二采用VHDL语言编程来实现电子琴的各项功能。
系统主要由电子琴发声模块、选择控制模块和储存器模块组成。
和方案一相比较,方案二就显得比较笼统,虽然我们可以看到用超高速硬件描述语言VHDL的优势,但本质上它只是把整个系统分为了若干个模块,而不牵涉到具体的硬件电路。
方案三与前两种方案相比,主控芯片采用AT89C51单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。
而第三种方案具有经济可行性、技术可行性、实物应用性。
所以我们选择第三种方案。
2.2总体设计
设计总体框架图如图1所示
图1单片机总体框架图
2.3总体方案工作原理
由AT89C51的P1口8个按键控制DO,RE,MI,FA,SO,LA,XI,DO的各个音符,在由位于P0口的一位数码管显示出来,同时位于P3^7口的蜂鸣器发出声音。
发音原理:
若要产生音频脉冲,只要算出某一音频的周期,再将周期除以2,即为半周期的时间。
利用定时器记时半周期时间,每当记时终止后就将P3^7反相,然后记时再反相。
就可在P3^7上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。
三、软件设计
3.1系统流程
在绘制传统流程图时注意几点:
1)熟练绘制传统流程图的基本元素,三种基本结构的流程图标准画法
2)将复合条件转为多个单一条件
3)循环注意初值、变化和终止
4)算法的重点实现一定体现出来
程序流程如图12所示:
图12程序流程图
3.2延时源代码
voidDelayMS(uintx)
{
uchart;
while(x--)for(t=0;t<120;t++);
}
3.3发音源代码
voidPlay(uchary)
{
uchari;
for(i=0;i<100;i++)
{
BEEP=~BEEP;//对蜂鸣器电平求反
DelayMS(y);
}
BEEP=1;//给蜂鸣器一个高电平
}
3.3单个按键源代码:
if(K1==0)
{
DelayMS(10);//按键去抖动
if(K1==0)
{
num=1;
P0=table[num];
Play
(1);
}
while(!
K1);
3.4所有程序代码
#include
#defineucharunsignedchar//无符号字符型宏定义变量范围0~255
#defineuintunsignedint//无符号整型宏定义变量范围0~65535
sbitbeep=P2^5;//蜂鸣器定义
sbitK1=P1^0;//给P1^0定义,控制DO的发音
sbitK2=P1^1;//给P1^1定义,控制XI的发音
sbitK3=P1^2;//给P1^2定义,控制LA的发音
sbitK4=P1^3;//给P1^3定义,控制SO的发音
sbitK5=P3^4;//给P3^4定义,控制FA的发音
sbitK6=P3^5;//给P3^5定义,控制MI的发音
sbitK7=P3^6;//给P3^6定义,控制RE的发音
sbitK8=P3^7;//给P3^7定义,控制DO的发音
sbitK9=P2^0;//音乐播放按键
ucharflag_en=0;//开始放歌
ucharflag_i=0;
//数码管段选定义0123456789
ucharcodesmg_du[]={0xde,0x90,0xcd,0xd9,0x93,0x5b,0x5f,0xd0,0xdf,0xdb
//ABCDEF不显示
};//断码
ucharm,n;
ucharcodeT[49][2]={{0,0},
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
};
ucharcodemusic1[][2]={{0,4},//青花瓷
{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},
{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,16},{0,4},
{17,4},{19,4},{17,4},{17,4},{19,4},{17,4},{19,4},{19,4},{21,8},{24,4},{21,4},{21,12},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},
{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,12},{12,4},{21,8},{19,4},{19,8},{17,16},
{0xFF,0xFF}};
四、系统仿真与调试
4.1仿真软件简介
Proteus是由Labcenter Electronics开发的功能强大的单片机仿真软件,现在最新版本6.9SP5。
Proteus与其他的仿真软件相比较,在下面的优点:
1)能仿真模拟电路、数字电路、数模混合电路;
2)能绘制原理图、PCB图;
3)几乎包括实际中所有使用的仪器
4)其最大的亮点在于能够对单片机进行实物级的仿真。
从程序的编写,编译到调试,目标版的仿真一应俱全。
支持汇编语言和C语言的编程。
还可配合KeilC实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用KeilC集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而KeilC运行在另一台计算机上,通过网络连接实现远程的调试。
4.2软件调试
调试主要方法和技巧:
通常一个调试程序应该具有至少四种性能:
跟踪、断点、查看变量、更改数值。
整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。
仿真电路图图15所示:
图15仿真图
另附实物图如图16图17所示:
4.3使用说明
1)单片机分别接VCC和GND使单片机处于供电状态。
2)接上TXD和RXD将程序导入单片机中。
3)按下六角开关,可到指示灯亮后,即可通过按键控制发音了,数码管也
会随按键变化显示出相应的数字。
五、设计总结
总体来说,此次单片机课程设计使我们收获良多,虽然课程设计的过程中遇到了很多困难与问题,但我们最终还是完成了设计的任务及要求。
具体来说可以分为以下几点:
第一,不够细心,不够严谨(如因为粗心大意而焊错线);
第二,因对课本理论的掌握度不够导致编程出现错误;
第三,硬件方面,刚开始有的程序模块不能实现预期的效果,对于有的硬件,在实物制作过程中焊了比较多的排线,同时对于整体各元器件的布局都有很高的要求。
不过在向同学请教,各方面都有了不同程度的改善;
第四,在做人方面,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力和决心,有足够的挑战困难的勇气,就没有什么办不到的。
这次课程设计中,经过我们的努力,在仿真软件和实物上都实现了7个音符的发声,使我们有了一定的成就感,也使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤,掌握了单片机仿真软件Proteus的使用方法和键盘、显示器在的单片机控制系统中的应用,同时也掌握了撰写课程设计报告的方法。
总之,通过这次课程设计,我们都清楚明白了自己的能力有多深,想提高还得归于多锻炼,多动手,多向别人学习。
尤其在做各种东西时应该要特别的仔细小心,比如我在进行电路焊接时就将数码管搞错了,本应使用的共阴数码管被拿成了共阳数码管,然后发光二极管的极性焊反了,焊接的铁丝没有完全焊牢等问题,给自己和老师造成了许多不必要的麻烦,大大的浪费掉了宝贵的时间,这都是不应该出现的。
而对于一些软件来说,就必须了解软件各个方面的性质,不然,在一些小问题中也有可能造成不必要的错误。
另外,自己在理解老师所说的很多东西方面还不是很成熟,经常会反复去问老师一些同样的问题,其原因都是自己不仔细去揣摩老师所说的话的意思,导致自己无法按老师所要求的方面去做,而要反复去问老师反复强调的问题。
终上所述,这都是应该值得去注意和深思的,在做任何意见事情时,都要用百分百的态度去完成它,不能粗心大意了,不然有可能会浪费无比多的时间在一些不该出现的小问题上,比如虚焊。
从这次课程设计中不仅学到了很多做事的方法也学到了许多对人生应有的态度。
受益匪浅。
参考文献
[1]张艺刚主编.单片机原理与接口技术[M]北京:
北京航空航天大学出版社,2005-9-1
[2]胡宴如主编.模拟电子技术[M]高等教育出版社,2008-2-1
[3]赵利主编.数字电子技术[M]冶金工业出版社,2009-1-1
[4]李华.单片机C语言编程[M].北京:
北京航空航天大学出版社,2005-8-1.
[5]徐爱钧.单片机原理实用教程--基于Protrues虚拟仿真[M].北京:
电子工业出版社.2009-1
[6]李萍.AT89S51单片机、原理、开发与应用实例[M].北京:
中国电力出版社.2008-7
[7]张晔、王玉民等.单片机应用技术[M].北京:
高等教育出版社.2006-3
[8]付家才等.单片机控制工程实践技术[M].北京:
化学工业出版社.2004-5
附录1:
总体电路原理图
附录2:
元器件清单
序号
名称
型号规格
数量
1
蜂鸣器
蜂鸣器
1
2
电容
10uF
1
3
电容
20pf
2
4
Header,2-Pin
Header2
1
5
排阻
2k
1
6
电阻
10K
1
7
电阻
2k
1
8
按键
SW-PB
10
9
单片机
AT89C51
1
10
数码管
smg_1
1
11
晶振
12M
1
12
PNPGeneralPurposeAmplifier
8550
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子琴 课程设计