完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
最近在制作一个单片机音乐播放器,遂查询网上的实例,但发现都不是特别全面。所以在自研了一段时间后的出实例,发表此文用以记录,以防忘记。诸位也可拿去参见。若有不足,请谅解。
1.首先了解声音是一种波,声波。波有周期和频率,其关系为: f(频率)=1/t(周期) 2.其次在多数电子设备设备中也存在着(机器)周期和(时钟)频率,89c52rc 的默认频率为11.0592MHz ,一个默认的计算周期为12T。 3.所以得出结论: T(声)=f(时钟)/12t 依靠每一次计算的时差,累加得到音频周期,启动一次蜂鸣器。 制作出如下流程图。 #include "reg52.h" #define Fosc 110592L //时钟频率 typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; ***it P23=P2^3;//连接蜂鸣器阳极的针脚 void buzzer(u8 f,u8 time_ms); void main(void) { buzzer(1,10); } void buzzer(u8 f,u8 time_ms) { u16 time = (Fosc / 2400)*time_ms; u16 C = 110592/(72*f),x=0; for(;time>=0;time--) { if(x>=C){ P23=0; x=0; }else{ x++; P23=1; } } } 参照以下 音符频率对照表 翻译乐谱 BPM为184拍,每60/184=0.326秒一拍。 得出以下程序 buzzer(784,163); buzzer(698,163); buzzer(440,326); buzzer(494,326); buzzer(659,163); buzzer(578,163); buzzer(349,326); buzzer(392,326); buzzer(578,163); buzzer(523,163); buzzer(330,326); buzzer(392,326); buzzer(523,978); 数据结构核心原理与算法应用 |
|
|
|
只有小组成员才能发言,加入小组>>
2549 浏览 0 评论
1147浏览 2评论
746浏览 1评论
499浏览 0评论
265浏览 0评论
428浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:07 , Processed in 1.304090 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号