找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2854|回复: 11
收起左侧

51单片机制作电子琴,怎么按下一个按键发出do,ruai,mi 求思路

[复制链接]
ID:907024 发表于 2022-4-3 14:43 | 显示全部楼层 |阅读模式
用51单片机做个电子琴,怎么按下一个按键发出do,ruai,mi三个音然后按第二个按键发出ruai,mi,fa三个音,用定时器,大神们有没有思路提供一下
回复

使用道具 举报

ID:96682 发表于 2022-4-3 16:29 来自手机 | 显示全部楼层
确定各按键的音调频率就行了,就如 0 键播放桥边姑娘如出一辙
回复

使用道具 举报

ID:230742 发表于 2022-4-3 17:43 | 显示全部楼层
先参考51单片机的电子琴程序,然后把里面的发音函数调用三次就可以了,也可以把音连起来就成歌曲了。
回复

使用道具 举报

ID:121859 发表于 2022-4-3 18:16 | 显示全部楼层
这个简单,按下一个键,将对应该键发音的音频送定时器控制扬声器发声就可以了。
回复

使用道具 举报

ID:161164 发表于 2022-4-3 20:13 | 显示全部楼层
开两个定时器
一个定时器用作产生1ms心跳
一个用来产生相对频率的方波来驱动无源蜂鸣器
回复

使用道具 举报

ID:907024 发表于 2022-4-4 11:36 | 显示全部楼层
啤酒瓶子老大 发表于 2022-4-3 17:43
先参考51单片机的电子琴程序,然后把里面的发音函数调用三次就可以了,也可以把音连起来就成歌曲了。

你好!如果我三个音需要隔时间的话,在定时器中用延迟就好了吗?
回复

使用道具 举报

ID:907024 发表于 2022-4-4 15:44 | 显示全部楼层
wc86110 发表于 2022-4-3 16:29
确定各按键的音调频率就行了,就如 0 键播放桥边姑娘如出一辙

你好!如果我三个音需要隔时间的话,在定时器中用延迟就好了吗?
回复

使用道具 举报

ID:624769 发表于 2022-4-4 19:22 | 显示全部楼层
qinkang189 发表于 2022-4-4 15:44
你好!如果我三个音需要隔时间的话,在定时器中用延迟就好了吗?

定时器里用延时,还要定时器干什么? 直接延时不香么?
定时器里面计数,  假定 10ms 中断一次  计数达到 100 就是 1秒。
每次进入中断 加一次,然后通过  判断 计数 到多少了,决定接下去做什么,
回复

使用道具 举报

ID:139866 发表于 2022-4-8 13:20 | 显示全部楼层
限制做这个的因素不是电子方面的知识,而是音乐方面的
回复

使用道具 举报

ID:907024 发表于 2022-4-10 21:17 | 显示全部楼层
天ノ忆 发表于 2022-4-8 13:20
限制做这个的因素不是电子方面的知识,而是音乐方面的

对!因为我不懂那个音调怎么弄出来的
回复

使用道具 举报

ID:161164 发表于 2022-4-11 13:45 | 显示全部楼层
qinkang189 发表于 2022-4-10 21:17
对!因为我不懂那个音调怎么弄出来的

音调就是频率
如C 是440Hz
2273us一个反转周期
定时器就是1136us进一次中断把IO口取反
THTL取值如下:
THx = (65536 - 1136)/256;//或(65536 - 1136)>>8;
TLx = (65536 - 1136)%256;//或(65536 - 1136)&0xFF;
回复

使用道具 举报

ID:139866 发表于 2022-4-12 10:35 | 显示全部楼层
qinkang189 发表于 2022-4-10 21:17
对!因为我不懂那个音调怎么弄出来的

频率什么的百度就能查到,想让他唱个歌,结果连个简谱都看不懂,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表