基于单片机的电子琴设计.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
基于单片机的电子琴设计 本文档主要介绍了基于单片机的电子琴设计,通过使用单片机 STC89C52,实现了一个多功能电子琴,具有演奏、播放、音调显示和节拍指示等功能。 通过设计,实现了以下功能: 1. 通过按键可以发出相应的音符并播放产生乐音,实现演奏; 2. 演奏的同时可数字显示当前的音调,利于培养乐感; 3. 可以选定播放固定乐曲自动演奏,演奏时 LED 进行节拍指示; 4. 在自动演奏和奏乐的过程中按停止键则中断演奏; 5. 可以选择调节音或小。 在设计中,使用了两个定期器,T0 和 T1。T0 作为驱动蜂鸣器的定期器,要给予高优先级,不然会被 T1 干扰,音质变差。 在音乐弹奏方面,使用 4x4 矩阵键盘,通过程序辨认键盘中按下的键的坐标(x,y),然后根据(x,y)从计数初值表中读取相应的计数初值,赋值给定期器 0,定期器产生相应频率的方波,达成播放相应音调的功能。 在音乐播放方面,建立了一个包含一首音乐的音调与节拍的表。其中,音调就是 0x01(低音、do)、0x12(中音、re)、0x23(高音、mi)之类的数;节拍就是 0x02(半拍),0x04(一拍)之类的数。然后,根据音调读取计数初值,再将计数初值赋给定期器 T0 -> 启动定期器 T0 -> 读取节拍并延时 -> 关闭定期器 T0 。这样就发出了一个音,然后再读下一个音的初值与节拍,反复上一个操作即可。 在数码管显示音调方面,使用 if 语句来判断(x,y)该给数码管赋什么值,然后从 uchar code num[] 表中读取这个值赋给数码管(例如 P0)。在播放歌曲时,读入音调,根据音调的值来判断 num[i]这个表中的 i,再把 num[i]赋给 P0 口。 在 LED 灯的节拍指示方面,采用定期器 1 来控制,作为节拍指示。在按键时,根据按下的时长来控制 LED 的点亮个数,并且是按一。 本设计实现了一个功能多样化的电子琴,具有很高的实用价值。
剩余53页未读,继续阅读
- 粉丝: 3815
- 资源: 59万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 410.基于SpringBoot的高校科研信息管理系统(含报告).zip
- 附件1.植物健康状态的影响指标数据.xlsx
- Windows 10 1507-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- Image_1732500699692.png
- Windows 10 21h1-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- VMware 是一款功能强大的虚拟化软件,它允许用户在一台物理计算机上同时运行多个操作系统
- 31万条全国医药价格与采购数据.xlsx
- SQL注入详解,SQL 注入是一种常见的网络安全漏洞,攻击者通过在输入数据中插入恶意的 SQL 语句,欺骗应用程序执行这些恶意语句,从而获取、修改或删除数据库中的数据,甚至控制数据库服务器
- 用C语言实现哈夫曼编码:从原理到实现的详细解析
- py爱心代码高级粒子!!