目录
摘 要
基于51单片机的简易电子琴设计
一、系统设计
1、项目概要
2.设计任务和基本要求
二、硬件设计
1、硬件设计概要
2、时钟振荡电路模块
3.复位电路模块
5.数码管电路模块
6.蜂鸣器模块
7、乐曲切换电路模块
三、软件原理
四、软件流程图
五、代码实现
六、展望未来
七、注意事项
八、总结
九、参考文献
电子琴的设计以AT89C52单片机作为系统的核心控制部分,通过制作硬件电路和软件的设计编写,然后进行软硬件的调试运行,最终达到设计电路的乐器演奏。设计中应用中断系统和定时/计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。可以用它来弹奏。特点是设计思路简单、清晰。
关键词:AT89C52,电子琴,单片机,音乐发生器。
单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本次我们设计的主要内容是用AT89C52单片机为核心控制元件,设计一个可以用14个按键实现单音符的输出,也可单独播放音乐的电子琴。以单片机作为主控核心,与按键、扬声器等模块组成核心主控制模块,在主控模块上设有18个按键和扬声器。
该设计方案是通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏我们想要的音符或者是音调,电路由最小系统电路,数码管电路,和功能按键电路组成,通过功能键可以选择播放音乐或者弹奏音节。
AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。在设计中我们选取12MHZ时钟频率,电容使用30PF, 如图2-2。
图2-2 时钟震荡电路图
我们设计中采用手动复位。这种方法是将一个开关串联一只电阻后,再并联于电容C的两端,在系统运行过程中需要复位时只要使开关闭合,在RST引脚上就会出现一定时间的高电平信号,从而使单片机实现复位。如图2-3。
图2-3 复位电路图
4.音符按键电路模块
我们在设计中用到14个按键,用P1,P3 I/O口接独立键盘即可满足需要,软件消除抖动处理,并能准确判断所需执行的相应程序。电子琴设14个按键,分别代表低中音符。电路如图2-4所示。
图2-4 音符按键电路图
单片机系统常用的数码管有共阳和共阴两种。我们在设计中采用共阳极的数码管,其公共极接电源,段选端分别接驱动电路,段选端加低电平时,对应的段发光二极管才亮。共阳极数码管字符及段码表见图2-5,数码管电路图见图2-6.
图2-5 共阳极数码管字符及段码表
图2-6 数码管显示电路图
我们选用P2_4作为蜂鸣器接口。连接图如图2-7。
图2-7 蜂鸣器
因为本次设计将乐谱直接写进了代码中,因此直接选取了P2口的三个端口来控制三首歌曲的切换。如图2-8。
图2-8 乐曲切换电路图
一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。如果单片机要自己播放音乐就必须考虑到节拍的设置。
对于AT89C52而言要产生一定频率的方波一般是先将某口线输出高电平,延迟一段时间后再输出低电平。通过改变延迟时间可以改变单片机的输出频率。单片机的延时主要有两种方式,即软件延时和使用定时/计数器延时。其中软件延时不是很精确,而电子琴电路由于每个音符的频率值要求比较严格,因此我们选用定时/计数器延时。
要产生相应的音频脉冲,只需要计算出某音频的周期,再除以2。利用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。在我们的设计中单片机工作在12MHz时钟,使用定时器/计数器T0,工作模式为1,改变计数初值TH0、TL0就可产生不同频率的脉冲信号。
例如低MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数1515次P2.0反向。计数初值T=65536-N=64021。C调的各音符频率与计数值T的对照表如表2-1所示。
表2-1 C调各音符频率与定时器初值对照表
音符 |
频率(HZ) |
简谱码(T值) |
音符 |
频率(HZ) |
简谱码(T值) |
低 1 DO |
262 |
63628 |
# 4 FA# |
740 |
64860 |
# 1 DO# |
277 |
63731 |
中 5 SO |
784 |
64898 |
低 2 RE |
294 |
63853 |
# 5 SO# |
831 |
64934 |
# 2 RE# |
311 |
63928 |
中 6 LA |
880 |
64968 |
低 3 M |
330 |
64021 |
# 6 |
932 |
64994 |
低 4 FA |
349 |
64103 |
中 7 SI |
988 |
65030 |
# 4 FA# |
370 |
64185 |
高 1 DO |
1046 |
65058 |
低 5 SO |
392 |
64260 |
# 1 DO# |
1109 |
65085 |
# 5 SO# |
415 |
64331 |
高 2 RE |
1175 |
65110 |
低 6 LA |
440 |
64400 |
# 2 RE# |
1245 |
65134 |
# 6 |
466 |
64463 |
高 3 M |
1318 |
65157 |
低 7 SI |
494 |
64524 |
高 4 FA |
1397 |
65178 |
中1 DO |
523 |
64580 |
# 4 FA# |
1480 |
65198 |
# 1 DO# |
554 |
64633 |
高 5 SO |
1568 |
65217 |
中 2 RE |
587 |
64684 |
# 5 SO# |
1661 |
65235 |
# 2 RE# |
622 |
64732 |
高 6 LA |
1760 |
65252 |
中 3 M |
659 |
64777 |
# 6 |
1865 |
65268 |
中 4 FA |
698 |
64820 |
高 7 SI |
1967 |
65283 |
软件是该电子琴控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。软件系统流程图见图2-9。
图2-9 软件系统流程图
我们用C语言编写程序,由Keil5转换成hex文件,最后烧录入单片机。程序代码见附录。
随着科学技术的发展,人们的生活水平也在不断的提高,当今社会已经进入到了人工智能时代,这种智能并不局限于小的方面,而是在生活中的方方面面都存在,电子琴便是其中生活总的一个小的方面,但它的作用是不容小觑的,很明显,它能帮助我们在生活闲暇之余放松心情。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以拍数对应的延时,构成音乐。这不仅便利了我们享受音乐,同时也在一定程度上反映了时代的发展,科技的进步,虽然电子琴是智能时代的冰山一角,但是它其中蕴含的原理是永远存在的,我们应该根据它的原理,去思考它能否用在更广泛的方面,更好服务于社会,总而言之,电子琴的前景还是很美好的,同时相信它也会与时俱进。
我们用C语言编写程序,由Keil5转换成hex文件,最后烧录入单片机。在实验的过程中遇到的问题及解决方法:
对于代码的整合方面:
一开始和同组的两位同学商量好的变量的名称以解决了变量的问题。前面定义变量和数组,后面再整合主函数。
对于代码烧录方面:
在keil5软件中,一开始选用的默认芯片导致烧录不成功,再将芯片更换为AT89C52后烧录成功,成功导出hex文件。
对于hex文件的导入,一开始并不知道hex文件的使用方法,经过查询资料后则是在编辑原件中导入后可正常运行。
我认为此次学习设计充满挑战和机遇,就我自身而言,我认为我存在专业知识不够扎实,工作不够细致等不足之处,还需在实践中不断学习,不断进步。通过此次学习设计,我深刻的认识到了自己身上的不足之处,本身能力的不足,直接导致了我在这个团体当中没有办法做太核心的工作,好在自己能够提出一些独到的见解,以便自己也可以顺利的跟上自己同伴并且进行工作,虽然这次活动确实充满乐趣,但我也深刻明白发展自己才是硬道理的,我相信在我的脑袋里,如果有更加的多的知识时,我对这些设计更加得心应手。
[1]徐爱钧《单片机原理实用教程-基于Proteus虚拟仿真》电子工业出版社,2018年
[2]周润景《Proteus在MCS-51&ARM7系统中的应用》电子工业出版社,2006年
[3]王守中《51单片机开发入门与典型实例》人民邮电出版社,2007年
[4]陈权昌《单片机原理及应用》华南理工出版社,2007年
[5]胡宴如《模拟电子技术》高等教育出版社,2006年