技术文档

基于单片机的电子琴的设计 初学单片机,基于51单片机的电子琴程序结构

小编 2024-11-24 技术文档 23 0

初学单片机,基于51单片机的电子琴程序结构

前面我们用了快一周的时间不断更新制作过程,实物终于打造完成了,到了最后阶段——给单片机编写程序。

这里采用c语言编写单片机程序。在编程之前先来分析一下程序的组成部分:

单片机电子琴设计——程序结构简化图

程序结构:

用一张图片来介绍程序的详细结构:

单片机电子琴设计——程序结构图

单片机头文件:

由于STC15系列单片机相对于传统51单片机多了很多寄存器和功能,因此最好获取一个头文件,然后在主程序main.c里声明一下,就可以了。在官方软件STC-ISP里面找到“头文件”选项,选择正确的系列,点击“保存文件”,保存到主程序文件所在文件夹里。

从官方工具软件里获取单片机头文件截图

定时器初装值对应频率表格:

开始制作了一个表格,后来针对1T单片机重新制定了一个。这里要说明的是:该系列单片机的定时器时钟既可以设置为1T,也可以设置为12T,前面的担心是多余的。

下面是新制作的“定时器时钟1T模式”表格图片,频率做了删减,保留了12个常用音的频率:

单片机电子琴设计——定时器初装值对应频率表截图

初始化函数:

初始化I/O端口。

信号输出端口P2.6设置为强推挽输出;

按键检测端口设置(开机默认)为准双向(弱上拉)。

初始化定时器0。

初始化不用赋值,不开计数,等到按键按下去再打开计数,定时器中断就会不断取反信号输出端口,产生相应频率的音频信号。

定时器0中断函数:

在中断里面只做一件事情,就是对信号输出端口取反,形成方波信号。

按键检测函数:

需要注意的问题:

不使用“等待按键释放”的函数语句。因为按键按下的时候应该发出声音,如果等待按键释放会产生延时,影响效果。按键松开则关闭定时器计数,音频停止。

同时按下两个或者多个按键的处理方法?这一点应该可以解决,此处暂未修改,当多个按键按下时,应该检测到无效键值,不产生声音。

关于按键检测的详细思路内容较多,本处暂且略过,以后再细聊。

主函数:

需要注意的问题:因“按键检测函数”不使用“等待按键释放”的函数语句,所以按键检测是连续循环的,但是不能不断的给定时器赋值,所以需要定义一个变量来记录按键值,当检测到相同的按键时不需要重复赋值给定时器。

以上是程序设计的结构和需要注意的问题。按照上面结构图中的框架,用kile软件新建一个工程,编写c语言程序,然后编译完生成烧写代码hex文件。

单片机下载hex文件:

用STC-ISP软件,通过串口小板把hex文件下载到单片机里面,单片机就可以工作了。当然一般需要反复修改程序,反复下载代码,直到单片机正常工作为止。

下载单片机代码截图

下载代码时,在新版软件里面,硬件选项里除了频率需要设置为12.000(MHz)以外,其它不用设置,用默认值就可以。

结合本周前面的多篇文章,制作一款基于51单片机的简易电子琴应该很简单了。由于头条没有提供下载附件功能,因此无法上传单片机烧写代码文件,当然办法是有的。

今天就聊到这里,如果您感兴趣,可以关注:头条号/春天说,后续文章会提供单片机代码文件,以及下载方法。欢迎在评论区交流,如果喜欢,也可以分享给更多朋友。

初学单片机,基于51单片机的电子琴PCB图可以更简单

前面介绍了我的小目标“单片机电子琴”的设计思路和原理图,今天继续PCB图的制作。

出于对节省时间和费用的考虑,采用“洞洞板”制作比较易行。

由于单片机STC15W408AS为贴片封装,大体积的只有SOP28封装,比较适合。我们在程序没有设计完成之前,没有必要专门制作PCB蚀刻电路板。用洞洞板的话先要解决贴片转直插的问题,用排针来转换。两排插针焊装在洞洞板上,把贴片封装的单片机管脚用细导线连接到插针上,如图所示:

基于51单片机的电子琴PCB图

当然,如果手边有转换小板的话,就不用手工焊接连线了。

下面是3D展示图:

基于51单片机的电子琴PCB立体图

背面连线图(从背面看到的,不是正面看到的):

基于51单片机的电子琴PCB背面图

为了更简单的制作电路,这里把按键省略,双排插针省略,只连接用到的连线。如下图:

基于51单片机的电子琴精简PCB图

不用按键怎么使用呢?可以用金属尖镊子、万用表笔、自制金属头的笔等方法,只要连线到R1就可以。使用的时候用笔尖接触单片机管脚即可。

图中用到的元器件说明:

P2 :电源接口。如果用USB供电,可换成USB插座;如果用杜邦线取电自下载小板,可以换成插针;

S13 :电源开关。

LED1, R4 :电源指示。可以不用。

C2 :电源滤波电容。耐压>6V,例如16V;容量100~470uF。供电良好的情况下也可以省略。

C1 :高频滤波电容。一般采用独石电容,也可用瓷片电容。

Q1 :C8050,9013均可。

LS1 :蜂鸣器。无源型,5v的,直径12mm。

R3 :限流电阻。1~10欧。

R1 :限流电阻。防止对单片机管脚直接接地(在I/O口设置错误的情况下)造成损坏。阻值可改变。

P1 :串口下载程序代码的接口。

R2 :限流电阻。阻值可根据供电电压调整。

U1 :STC15W408AS系列单片机。401、402、404、408均可,建议容量大点的。

最后说下什么是“洞洞板”?看图吧:

采用洞洞板焊接的线路图片

注:图中的绿色元件同上文中的P2(电源接线端子),适合连接电池盒的导线。

以上介绍了单片机电子琴的材料和PCB布局连线图,如果您感兴趣,欢迎在评论里交流讨论,也欢迎关注头条号/春天说,我们将继续单片机的学习之旅。。。

相关问答

基于AT89s52 单片机的 8键 电子琴设计 的c语言程序怎么编啊(蜂鸣器)?

蜂鸣器出不同音调的声音是由于震动的频率不同,你可以先定义八个不同的函数分别是八个音(通过定时或循环达到)然后将按键分别与对应的音调函数对应,按哪个按键...

计算器怎么设置弹音乐?

普通计算器是没办法的,我不知道你说的是哪一种计算器。如果是普通计算器的话,里面有一个单片机,可以理解为性能比较一本的cpu处理器,通过蜂鸣器器,编程控制...

猜你喜欢