龙空技术网

单片机实例分享,触摸式电钢琴

电子工程师小李 604

前言:

眼前你们对“单片机音乐盒c语言”都比较重视,大家都想要分析一些“单片机音乐盒c语言”的相关文章。那么小编同时在网上网罗了一些对于“单片机音乐盒c语言””的相关知识,希望看官们能喜欢,朋友们快快来了解一下吧!

我这次带来的是一款触摸式电钢琴,细心的读者可能会注意到,我用的词是“电钢琴”而不是“电子琴”,这两者有区别吗?我的回答是肯定的,因为这正是本作品的亮点所在。用单片机演奏音乐大家肯定都不会陌生,用单片机内部的定时器,送入不同的频率,每一个频率对应着一个音调,然后按照事先编排好的顺序驱动蜂鸣器发声,就可以演奏出音乐了。至于电子琴,只需要把不同的频率映射到对应按键上即可。之所以说是电子琴,是因为这种方法只能演奏出单调的方波音频。想不想让声音不再单调,而是发出动听的钢琴音色呢?如果想的话,请拿出你的热情,打开你的电烙铁开关,跟我一起往下制作吧!

制作所需的元器件如表9.1所示。本着精简制作的原则,笔者用到的都是很普通的元器件,数量也很少,所以硬件制作的难度不是很大。连接部分则是过锡走线加飞线的方法,烙铁温度在350℃左右即可。电路图如图9.1所示,值得说明的一点是,图中的矩阵触摸按键这里只画出了1组,其实有3组,公共端分别与P0.0、P2.2、P2.1连接。剩下部分的电路都很明了,有创造力的朋友看电路图自行发挥就好,新手可以参考一下我的布局。

表9.1 制作所需的元器件

图9.1 电路原理图

先把打印好的琴键图片裁好,用双面胶贴在洞洞板上,如图9.2所示。

图9.2 在洞洞板上贴琴键图片

怎么样,是不是很有电钢琴的样子?你说触摸按键在哪里?别着急,让我请出下面这位特别来宾——钉书针。为了整个制作的美观和手感,触摸点的选取费了我很大的心思,试了很多种导体都无法达到满意的效果,直到有一天无意中把钉书针掉在了洞洞板上,我发现它那细长又导电的身体,长度刚刚好可以插进洞洞板,才有了这个有趣的设计。如图9.3所示,按照琴键的位置插好钉书针,并在背面压紧。

以此类推,完成36个键不会像你想象的那么枯燥,美妙的琴声在等着你。之后用双面胶把扬声器粘在板子正面,并完成扬声器导线、单片机、下载口、拨动开关、耳机插座、LED、功放芯片以及电解电容的焊接。焊接好的样子如图9.4所示。

图9.3 插入钉书钉

图9.4 焊接好的琴键

接下来是触摸按键矩阵与单片机的连接,我的方法是过锡加飞线。先把单片机正下方的一组矩阵按键与两边矩阵的公共端过锡连接到I/O口上(见图9.5),然后用免刮漆包线把两侧矩阵要与I/O连接的地方同中间过锡部分连接起来(见图9.6)。

图9.5 洞洞板焊接面的过锡

图9.6 用免刮漆包线进行飞线连接

到这里,原本硬件制作部分就应该完成了,但是在后期测试的过程中,总会有上电时乱响的情况。仔细思考后,发现了问题所在:因为触摸按键是基于增强型51单片机的I/O口高阻状态(下文会详细介绍),这种状态对电流的波动很敏感,会受到电源杂波的干扰。所以在正极和地之间加了一个0.1μF电容,效果有很大好转。顺便一提,使用电池供电效果最好。

到此就剩下载程序了,可以到qq群657864614下载相关程序,然后用STC-ISP软件下载到单片机里。注意,如果单片机是新的或者上一次使用连接了晶体振荡器的话,要先连接好晶体振荡器才能下载程序。软件设置如图9.7所示。

图9.7 软件设置

如果我现在结尾,肯定有人说我不地道,因为大家最想听的软件原理我还没有说明。别急,听我娓娓道来。

先说触摸吧,前面提到I/O口的高阻状态,在这种状态下I/O口对电流很敏感,那是不是只要接触I/O口,就能用人体的生物电完成触摸了呢?哎,好事多磨,虽然它很敏感,但是生物电的强度还是不能稳定地被感应。怎么办呢?冷静下来想一想,只要再请一个强推状态的I/O口来帮忙就好办了。所谓强推状态,就是比普通准双向I/O口上拉能力强很多的一种状态。这样,在我们同时触碰这两个I/O时,强推I/O口的电流就通过皮肤流入高阻状态的I/O口,从而读到电平变化,实现触摸操作。

这么好用的功能怎么设置呢,大家可以参照STC数据手册里的设置方法。当我们用C语言设置I/O状态时,只需向P*M1、P*M0赋值(0x开头的16进制格式)即可,如图9.8所示。

图9.8 用C语言设置功能

接下来到了发音部分。把要播放的音频先在电脑上用专业的音频软件转换成 ASCII Test 数据,稍加改造变成数组后放入单片机 60KB 的 ROM 里,配合 PWM 解码程序,一个在你进门时甜美地说出“你好,欢迎光临”,一个则是在你触摸琴键后发出钢琴的音色。

专业的音频软件有很多,我用的是一款名为“Adobe Audition 3.0”的软件。简洁的界面、强大的功能,都是我选择它的原因。接下来要讲的是使用方法,准备好从网上下载到的音频,你可以用鼠标拖入音轨中,也可以对着一条空音轨单击“右键→插入→音频”来把你的音频放入音轨中。这时音轨可能没有紧贴前端,这样会制造出一段空白音频,这部分不但影响正常工作,还很占空间,用右键点住它向前拖动,直到与前端紧贴,如图9.9所示。

之后双击“音频”,进入编辑模式。在这个模式下,我们要做的是删除空白和扩大音量。向上滚动滑轮,让时间间隔变小,前端的空白就会变得明显,去除它的原因跟上面一样。我们用左键框选出空白部分,然后单击“右键→剪切”来删除空白,如图9.10所示。

图9.9 Adobe Audition3.0界面

图9.10 删除空白音频

随后按“Ctrl+A”快捷键全选波形,单击左边效果栏里的“放大”,调整好合适的放大倍数后,单击“确认”,以完成放大操作,见图9.11。

图9.11 扩大音量

单击左上角的“文件→另存为”,这时会弹出一个选择格式和保存路径的窗口,下方的保存类型我们选择“ACW波形(*.wav)”,单击下方的选项,滤波器处改为“PCM”,属性处改为“8.000kHz,8位,单声道”,然后“确定→保存”,如果弹出窗口点击确定即可,见图9.12。这样就把音频转成了8位单声道,为后面的数据表文件做好了准备。

图9.12 保存音频文件

接下来软件会自动载入刚刚保存的音频,再单击左上角的“文件→另存为”,在弹出的窗口里选择“ASCII 文本数据(*.txt)”,然后单击下方的选项,把两个勾选框的对勾都点掉,再单击“确定→保存”,就完成了ASCII Test数据的转换,如图9.13所示。

图9.13 ASCII Test数据转换

这样重复36次之后,我们就得到了36个音调的8位音频数据了。打开电钢琴的工程文件,在程序的C语言文件下方有36个用音调名命名的数据表文件。只要把刚刚生成的数据复制到对应数据表中就大功告成了。

不过要注意开始处数组的定义和每个数据后的逗号,编译器可不会被你的急切所打动。我这里只是抛砖引玉,感兴趣的话可以在网上找到更多乐器的音色,让它变得更好玩、更强大。在茶余饭后悄悄拿出它,为家人弹奏一曲。简单的儿歌,或者经典的旋律,不管你音乐水平的高低,总能在家人欢乐的笑声中感受到电子制作带给你的幸福!

■我的淘宝店铺:首页-数码达人小李-淘宝网,主打数码电脑周边产品,性价比高,发货快,服务好,品质过硬,现有满减优惠活动,赶快行动起来吧!

小米车载无线充电器 苹果安卓全兼容手机无线快充通用 导航支架-淘宝网

usb迷你电风扇 学生宿舍床上静音小夹扇 办公桌面无声风扇-淘宝网

动漫鼠标垫胸部 3D硅胶护腕手腕垫 二次元美女鼠标垫 宅男必备-淘宝网

2013款雷蛇鼠标炼狱蝰蛇精英版 绿光幻彩有线 绝地求生专用-淘宝网

得力激光ppt翻页笔无线 教师用遥控笔 30米遥控距离 正品保障-淘宝网

标签: #单片机音乐盒c语言