没有合适的资源?快使用搜索试试~ 我知道了~
基于单片机的电子琴设计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 173 浏览量
2023-04-20
18:13:52
上传
评论
收藏 882KB DOC 举报
温馨提示
试读
54页
基于单片机的电子琴设计.doc
资源推荐
资源详情
资源评论
课程设计说明书
题 目: 基于单片机的电子琴设计
院 (系): 电子工程与自动化学院
专 业: 测控技术与仪器(卓越)
学生姓名:
学 号:
指导教师:
2023 年 9 月 21 日
目 录
1 摘要 …………………………………………………………………… 1
2 关键字 ………………………………………………………………… 1
3 设计任务及规定 ……………………………………………………… 1
4 方案可行性论证 ……………………………………………………… 1
5 程序框图 ……………………………………………………………… 2
6 关键单元电路与程序介绍 …………………………………………… 3
6.1 复位与震荡电路 ……………………………………………… 3
6.2 4x4 矩阵键盘 ………………………………………………… 3
6.3 数码管与 LED 灯 ……………………………………………… 4
6.4 蜂鸣器 ………………………………………………………… 6
6.5 音乐相关知识 ………………………………………………… 7
7 调试过程 ……………………………………………………………… 11
8 总结与体会 …………………………………………………………… 11
9 参考文献 ……………………………………………………………… 11
10 附录 …………………………………………………………………… 12
10.1 设备与仪器 …………………………………………………… 12
10.2 软件 …………………………………………………………… 12
10.3 原件清单 ……………………………………………………… 12
10.4 原理图与 PCB 图 ……………………………………………… 13
10.5 总程序…………………………………………………………… 14
10.6 实物图 …………………………………………………………… 31
【摘要】:
打造一个多功能电子琴,核心是一块单片机。单片机读取键值,为内置
定期器赋初值,定期器每溢出一次,驱动蜂鸣器的引脚电平就取反一次,产
生相应频率的方波,即音调;设好键值与数码管段码表的相应关系,键按下
时,数码管显示相应音调。
一首音乐储存在一个表中,表中的数据是音调与节拍,单片机读取音符
的音调与节拍,根据音调赋予定期器初值,根据节拍决定定期器工作的时间,
也就是蜂鸣器响的时间,一个接一个地读取音符,即可播放一首歌曲。
节拍用 led 灯的点亮个数表达。单片机读取音乐表中的节拍,控制 led
灯的点亮个数,达成显示节拍的效果。
特别要注意的是:该方案采用了两个定期器,T0、T1。T0 作为驱动蜂鸣
器的定期器,要给予高优先级,不然会被 T1 干扰,音质变差。
【关键字】:单片机、stc89c52、电子琴、C51、keil。
【设计任务及规定】:
1.通过按键可以发出相应的音符并播放产生乐音,实现演奏;
2.演奏的同时可数字显示当前的音调,利于培养乐感
3.可以选定播放固定乐曲自动演奏,演奏时 LED 进行节拍指示;
4.在自动演奏和奏乐的过程中按停止键则中断演奏;
5.可以选择调节音或小。
【方案可行性论证】:
本课题采用 stc89c52 单片机作为核心器件,实现基本的音乐弹奏、音乐
播放、音调显示和音乐节拍指示的功能。
1.音乐弹奏:通过程序辨认 4x4 矩阵键盘中按下的键的坐标(x,y),
然后根据(x,y)从计数初值表中读取相应的计数初值,赋值给定期器 0,定
期器产生相应频率的方波,达成播放相应音调的功能。
2.音乐播放:先建立一个包含一首音乐的音调与节拍的表。其中,音调
就是 0x01(低音、do)、0x12(中音、re)、0x23(高音、mi)之类的数;节拍
就是 0x02(半拍),0x04(一拍)之类的数。然后,根据音调读取计数初值,
再将计数初值赋给定期器 T0 -> 启动定期器 T0 -> 读取节拍并延时 -> 关闭定
期器 T0 。这样就发出了一个音,然后再读下一个音的初值与节拍,反复上
一个操作即可。(具体实现方法见附录总程序)
3.数码管显示音调:
① 按键:读出按键坐标(x,y),用 if 语句来判断(x,y)该给数码管赋什么
值,然后从 uchar code num[] 表中读取这个值赋给数码管(例如 P0)。
② 播放歌曲时:读入音调,根据音调的值来判断 num[i]这个表中的 i,再把 num[i]
赋给 P0 口。
4.led 灯的节拍指示:采用定期器 1 来控制,作为节拍指示。
①按键时:根据按下的时长来控制 led 的点亮个数,并且是按一定
的时间间隔逐个点亮;释放按键时,led 灯按一定的时间间隔逐个熄灭,
从而达成一种比较简朴的节拍指示效果。
②播放音乐时:根据音符的节拍,控制点亮到哪一个灯,在点亮那
个灯之前,前面的灯逐个等时距点亮。音符结束后,led 灯所有一起熄
灭。这样,达成了一个精确显示节拍的效果。
【程序框图】:
开始
扫描键盘
读取歌曲
是
否
播放键按下
有矩阵键按下
否
辨认按键
数码管显示音调
算出定期器初值
启动定期器,并
赋初值,蜂鸣器
发声
按键是否释放
关闭定期器
P0 口置 0
是
否
否
算出音符的
音调、节拍
根据音调给 T0
赋初值
启动 T0 T1
按节拍延迟
关闭 T0 T1 数
码管与 led
是否结束符
否
读下一个音符
数码管显示音调
Led 指示节拍
是
是否停止播放
是
剩余53页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3652
- 资源: 59万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- html+css+'青春献礼二十大 红色旅游助乡村'为主题的网页设计 2022年参与学校网页设计比赛时完成的
- Unity 模型布尔运算插件
- eCANtools工具,CAN资料包
- 129335283047061xiazaigongjuxiang(去重软件).apk
- Android环境检测工具,检测ksu,lsp,magisk等
- WordPress后台美化插件QuarterAdmin分享
- PCB_Project单片机绘制 (2024-5-11 22-22-13).zip
- nccl-local-repo-ubuntu2204-2.21.5-cuda12.4-1.0-1-amd64
- STM32移植LVGL源码工程 stm32移植GUI-Guider源码 LVGL移植源码
- Screenshot_20240522_084328_com.tencent.mm.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功