嵌入式开发交流网论坛

标题: 初学单片机,基于51单片机的电子琴程序结构 [打印本页]

作者: 紫轩琰_    时间: 2018-6-25 14:03
标题: 初学单片机,基于51单片机的电子琴程序结构
前面我们用了快一周的时间不断更新制作过程,实物终于打造完成了,到了最后阶段——给单片机编写程序。
这里采用c语言编写单片机程序。在编程之前先来分析一下程序的组成部分:
[attach]1614[/attach]
单片机电子琴设计——程序结构简化图
用一张图片来介绍程序的详细结构:
[attach]1615[/attach]
单片机电子琴设计——程序结构图
由于STC15系列单片机相对于传统51单片机多了很多寄存器和功能,因此最好获取一个头文件,然后在主程序main.c里声明一下,就可以了。在官方软件STC-ISP里面找到“头文件”选项,选择正确的系列,点击“保存文件”,保存到主程序文件所在文件夹里。
[attach]1616[/attach]
从官方工具软件里获取单片机头文件截图
开始制作了一个表格,后来针对1T单片机重新制定了一个。这里要说明的是:该系列单片机的定时器时钟既可以设置为1T,也可以设置为12T,前面的担心是多余的。
下面是新制作的“定时器时钟1T模式”表格图片,频率做了删减,保留了12个常用音的频率:

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

在中断里面只做一件事情,就是对信号输出端口取反,形成方波信号。
需要注意的问题:
关于按键检测的详细思路内容较多,本处暂且略过,以后再细聊。

需要注意的问题:因“按键检测函数”不使用“等待按键释放”的函数语句,所以按键检测是连续循环的,但是不能不断的给定时器赋值,所以需要定义一个变量来记录按键值,当检测到相同的按键时不需要重复赋值给定时器。
以上是程序设计的结构和需要注意的问题。按照上面结构图中的框架,用kile软件新建一个工程,编写c语言程序,然后编译完生成烧写代码hex文件。
用STC-ISP软件,通过串口小板把hex文件下载到单片机里面,单片机就可以工作了。当然一般需要反复修改程序,反复下载代码,直到单片机正常工作为止。
[attach]1618[/attach]
下载单片机代码截图
下载代码时,在新版软件里面,硬件选项里除了频率需要设置为12.000(MHz)以外,其它不用设置,用默认值就可以。

结合本周前面的多篇文章,制作一款基于51单片机的简易电子琴应该很简单了。由于头条没有提供下载附件功能,因此无法上传单片机烧写代码文件,当然办法是有的。
今天就聊到这里,如果您感兴趣,可以关注:头条号/春天说,后续文章会提供单片机代码文件,以及下载方法。欢迎在评论区交流,如果喜欢,也可以分享给更多朋友。





欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) Powered by Discuz! X3.2