用c51谱写化蝶

本文介绍了使用C51单片机通过定时器产生不同频率的方波信号来演奏音乐的原理。通过乐谱编码,将音乐转化为单片机可执行的指令,结合定时器和中断实现音乐播放。详细讲述了乐谱编码方法、程序设计思路,包括建立歌曲编码表、音乐演奏函数、延时函数和定时器中断函数的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


、音乐演奏原理

利用单片机的定时器定时,定时到后对单片机的某个引脚取反产生方波信号,初值不同,方波信号的频率不同,方波信号经过放大后送喇叭发出不同音调的声音。选某个乐谱,将每一个音的音调和音长按照一定的规则进行编码,组成编码数表。然后编写程序,从编码数表中连续读出各个音的编码,根据音调编码获得其频率,再由频率计算出定时器的定时初值,从某个引脚产生出对应频率的方波信号,在喇叭上发出对应频率的声音;再根据音长编码产生延时,从而连续播放出音乐。

2、乐谱单字节编码方法

(1)定时器0/1产生各种音频的方法

表1 为C调的发音频率表,给出了各个音的频率f,可以用定时器/计数器,定时产生对应频率的方波信号,将方波信号送给喇叭,便可使喇叭发出同频率的声音。定时初值x与发声频率f的关系如下:

由公式         t=(2n - x)×Tmc

式中                            t=T/2、                T=1/f、                Tmc=12/fosc

n取16表示用模式1定时,Tmc为机器周期,fosc为晶振频率,因此初值x为:      

x=65536-(1/f/2)×fosc/12

如果fosc=12Hz,则                  x=65536-500000/f

 

表1  C音调发音频率表

C   调

5

6

7

1

2

3

4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值