点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87512938?spm=1001.2014.3001.5503
源码获取
摘 要
单片微型计算机室大规模集成电路技术发展的产物,属于第四代电子计算机它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。他的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。
音乐盒是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个音乐盒。以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键,和一个复位按键。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏要表达的音符。并且分别从原理图,主要芯片,个模块原理及各规模的程序的调试来详细阐述。一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,构成我们想演奏的那首曲目。当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系编写正确就可以达到我们想要的曲目。在此基础上,所做音乐盒得到了应有的按键发音效果。
关键词:AT89C51;音色;自动放音
目录
摘 要 PAGEREF _Toc32730 \h I
1 概述 PAGEREF _Toc29953 \h 1
1.1设计背景 1
1.2设计意义 1
1.3设计目标 1
2方案总体设计 PAGEREF _Toc9341 \h 2
2.1总体设计 2
2.2方案工作原理 2
3硬件设计 PAGEREF _Toc18097 \h 3
3.1 AT89C51芯片 3
3.2 单片机复位 3
3.3 单片机晶振 4
3.4 电源指示灯 4
3.5 数码管 4
3.6 蜂鸣器 5
3.7 独立连接式按键 6
4 软件设计 PAGEREF _Toc13214 \h 6
4.1 系统流程 6
4.2 延时源代码 7
4.3 发音源代码 7
4.4 按键源代码 8
5 系统仿真与调试 PAGEREF _Toc13123 \h 8
5.1 Proteus 8
5.2 软件调试 8
5.3 硬件调试 10
6运行结果分析 PAGEREF _Toc26082 \h 10
6.1 仿真图 10
6.2 运行结果 11
6.3 运行分析 11
总结 PAGEREF _Toc11442 \h 12
参考文献 PAGEREF _Toc21271 \h 13
1 概述
1.1设计背景
随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。基于当前市场上的玩具市场需求量大,其中音乐盒就是一个很好的应用方面。单片机技术使我们可以利用软硬件实现音乐盒的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的键演奏哆、来、米、发、索、拉、西,哆,从而可以用来弹奏喜欢的乐曲。
1.2设计意义
该音乐盒设计具有以下优点:
1、可以方便得知播放的音符和音调;
2、比传统电子琴功能更完善;
3、制作简单,成本低。
1.3设计目标
由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。其次,在这次设计可行性上进行分析如下:
经济可行性:所谓经济可行性,即在这次设计上需要投入资金的多少,由于课程设计是提高我们的动手能力以及资金有限。因此在经济.上必须能够承受,比较理想化的对于我们课程设计来说是不可行的。通过分析后,无论是在器件价格或是常见度.上均是可行的。
技术可行性:技术可行性主要是分析技术条件上是否能够顺利开展并完成课程设计的主要问题,硬件、软件能否满足设计者的需要等。通过分析各种软件环境,硬件仿真环境等均已经具备。
综上所述,本系统设计目标已经明确,在经济与技术上均可行,因此本系统的开发是完全可行的。
2方案总体设计
本次课程设计的课题是基于51单片机的电子琴的设计,所要达到的要求如下:
1、利用蜂鸣器作为发声部件。
2、一个数码管作为显示部件。
3、设置8个按键,实现高音、中音、低音的DO,RE,MI,FA,SO,LA,XI,DO的发音。
本次设计主要是要通过软硬件的配合实现音乐盒的上述功能,操作人员可以通过按下键盘上任意一个键来发出相应的音符。
2.1总体设计
图2-1 单片机总体框架图
2.2方案工作原理
由AT89C51的P1口8个按键控制DO,RE,MI,FA,SO,LA,XI,DO的各个音符,在由位于P0口的一位数码管显示出来,同时位于P3^7口的蜂鸣器发出声音。
发音原理:若要产生音频脉冲,只要算出某一音频的周期,再将周期除以2,即为半周期的时间。利用定时器记时半周期时间,每当记时终止后就将P3^7反相,然后记时再反相。就可在P3^7上得到此频率的脉冲。利用STC89C52的内部定时器使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。
3硬件设计
3.1 AT89C51芯片
AT89C51提供以下标准功能:4k字节Flash闪速存储器,256字节片内数据存储器(00H-7FH为片内RAM,80H-FFH为特殊功能寄存器SFR),32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。单片机引脚图如图2所示:
图3-1 AT89C51
3.2 单片机复位
1、复位功能:单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始。
2、复位原理:单片机复位时只要保持RST引脚接2us的高电平即可。在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。
3.3 单片机晶振
外接晶振引脚XTAL1和TXAL2接外部晶振和微调电容的一端。振荡电路的频率就是晶体的固有频率。晶振电路结合单片机内部电路产生单片机所需的时钟频率。晶振提高频率越高,单片机运行速度越快。单片机一切指令的执行都是建立在晶振提供的时钟频率上。
图3-3 晶振电路图
3.4 电源指示灯
电源指示灯部分包括一个开关,发光二级管和限流电阻。当电源接通时发光二级管点亮,表明电路已上电。
3.5 数码管
数码管的一种是半导体发光器件,数码管可分为七段数码管和八段数码管,区别在于八段数码管比七段数码管多一个用于显示小数点的发光二极管单元DP(decimal point),其基本单元是发光二极管。七段数码管是基于发光二极管(LED)封装的显示器件,分为共阳极和共阴极2种结构。
七段数码管分为共阳极及共阴极,共阳极的七段数码管的正极(或阳极)为八个发光二极管的共有正极,其他接点为独立发光二极管的负极(或阴极),使用者只需把正极接电,不同的负极接地就能控制七段数码管显示不同的数字。共阴极的七段数码管与共阳极的只是接驳方法相反而已。
图3-5 数码管电路图
3.6 蜂鸣器
蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器;有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极。
图3-6 蜂鸣器电路
3.7 独立连接式按键
独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,然而,在按键较多时,I/O口线浪费较大,不宜采用。
图3-7 按键电路图
4 软件设计
4.1 系统流程
图4-1 程序流程图
4.2 延时源代码
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
4.3 发音源代码
void Play(uchar y)
{
uchar i;
for(i=0;i<100;i++)
{
BEEP=~BEEP;
DelayMS(y);
}
BEEP=1;
}
4.4 按键源代码
if(K1==0)
{
DelayMS(10);
if(K1==0)
{
num=1;
P0=table[num];
Play(1);
}
while(!K1);
}
5 系统仿真与调试
5.1 Proteus
Proteus是功能强大的单片机仿真软件。Proteus与其他的仿真软件相比较,在下面的优点:(1)能仿真模拟电路、数字电路、数模混合电路;(2)能绘制原理图、PCB图;(3)几乎包括实际中所有使用的仪器(4)其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合Keil C实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用Keil C集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同。
5.2 软件调试
调试主要方法和技巧:通常一个调试程序应该具有至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。
图5-2 生成相应程序的HEX软件
将生成的hex放在Proteus的AT89C51中:
图5-4 将hex文件放入到仿真中
5.3 硬件调试
硬件调试是针对单片机部分进行的调试。
在上电之前,先确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务。注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。
在确保硬件电路正常且无异常情况(短路或断路)的情况下方可上电调试,上电调试的口的是检测单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。(1)数码管LED电路调试:接通电源,随机按下按钮可以看到数码福安显示数字。(2)键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对应的音正确。
6运行结果分析
6.1 仿真图
图6-1 仿真图
6.2 运行结果
图6-2 运行结果
6.3 运行分析
总体来说,此次单片机课程设计功能基本完成,虽然课程设计的过程中遇到了很多困难与问题,但是最终还是完成了设计的任务及要求。具体来说可以分为以下几点:
优点:整体各元器件布局清晰,各个程序模块运行顺利,功能基本完成。发音时可以显示该音符。
缺点:该音乐盒功能相对比较少,保存的歌曲较少,发的音节也只有哆、来、米、发、索、拉、西,哆。
总结
这次课程设计中,经过努力,在仿真软件实现了8个音符的发声,有了一定的成就感,也使我进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤,掌握了单片机仿真软件Proteus的使用方法和键盘、显示器在的单片机控制系统中的应用。总之,通过这次课程设计,我清楚明白了自己的能力有多深,想提高还得归于多锻炼,多动手,多向别人学习。
尤其在做各种东西时应该要特别的仔细小心,对于一些软件来说,就必须了解软件各个方面的性质,不然,在一些小问题中也有可能造成不必要的错误。另外,自己在理解老师所说的很多东西方面还不是很成熟,经常会反复去查阅资料,其原因都是自己没有仔细去揣摩老师上课所讲知识的意思,导致自己无法理解。终上所述,这都是应该值得去注意和深思的,在做任何意见事情时,都要用百分百的态度去完成它,不能粗心大意了,不然有可能会浪费无比多的时间在一些不该出现的小问题上。从这次课程设计中不仅学到了很多做事的方法也学到了许多对人生应有的态度。受益匪浅。
参考文献
[1] 何立民.单片机高级教程[M].北京: 航空航天大学出版社,2001.
[2] 王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5] 夏继强.单片机实验[M].北京: 航空航天大学出版社,2001.