单片机控制蜂鸣器汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制蜂鸣器20年月日
目录
绪论 (1)
1、硬件设计 (2)
1.1 总体设计图 (2)
1.2 简易结构框图 (2)
1.3各部分硬件设计及功能 (3)
1.3.1 蜂鸣器发声电路:(如图1.3.1) (3)
1.3.2 电源稳压电路: (4)
1.4 元件清单 (4)
2、软件设计 (5)
2.1设计思想 (5)
2.2 程序流程图 (5)
2.3 音调、节拍以及编码的确定方法 (6)
2.3.1音调的确定 (6)
2.3.2 节拍的确定 (8)
2.3.3 编码 (9)
3、电路仿真与分析 (10)
4、电路板焊接、调试 (11)
4.1 焊接 (11)
4.2 调试 (12)
5、讨论及进一步研究建议 (12)
6、心得 (12)
7、单片机音乐播放器程序实例(卡农) (13)
绪论
蜂鸣器播放音乐电路设计对于单片机初学者来说是一个简单易实现的课题。通过编写程序使单片机产生一定频率的方波信号,方波信号进入蜂鸣器便产生我们熟知的音调。
我们用定时/计数器使单片机产生方波,利用定时/计数器使输出管脚在一定周期内反复翻转,达到所需频率,而我们给定时/计数器的初始值就是我们的音符—半周期数据表,通过我们播放的音乐的乐谱,来对数据表进行调用。
我们用延时子程序来表示节拍,不同的节拍代表不同的延时。
完成此次设计之后完全可以进行扩展,例如增加按键以及LED灯光效果,制成一个简易的音乐盒,给人以视觉听觉等全方位的享受。
1、硬件设计
1.1 总体设计图
1.2 简易结构框图
电源
蜂鸣器STC89C52
晶振
1.3各部分硬件设计及功能
1.3.1 蜂鸣器发声电路:(如图1.3.1)
图1.3.1
如图所示,蜂鸣器发声电路是播放音乐电路的主要执行电路,它由一个蜂鸣器,一个三极管和一个电位器组成。蜂鸣器负责发声,三极管将电流放大,而电位器则控制流过蜂鸣器电流的大小,来达到控制音量的目的。
1.3.2 电源稳压电路:
我们采用DC005电源供电,供电电压为5V。稳压电路用来达到稳定输入电压的目的,它由一个整流二极管,两个电容和一个三端稳压器组成。二极管和电容组成整流电路,将交流整流成直流,而三端稳压器则用来稳定电压。
1.4 元件清单
元件数量
晶振11.0592M 1
电容30pf 2
STC89C52RC 1
三极管 1
电容10uF 1
极性电容47uf 1
极性电容1000 uf 1
单端稳压器 1
二极管1N4007 1
DC005插头插座 1
蜂鸣器 1
电位器10K 1
电阻10K 2
电阻1K 1
按键 1
2、软件设计
2.1设计思想
将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,选择需要的声响时间,即可完成一个音符的播放。该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符。中间可根据需要将音符和音符之间插入时间延时,以产生需要的节拍,用01H或02H、03H 等等,具体根据歌曲的实际需要设置。根据需要也可循环不停地播放整个乐曲。利用INTO在中断中是属于最高优先级的特点,外部端口P3.2接中断0即可完成中断造成的歌曲选择——下一首的播放。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。声音输出接一个三极管,利用通断放大声音。
2.2 程序流程图
2.3 音调、节拍以及编码的确定方法
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。
2.3.1音调的确定
不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。
知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。
那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f = 440 Hz,其对应的周期为:
T = 1/ f = 1/440 =2272μs