单片机《蜂鸣器》实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机《蜂鸣器》实验报告
实验报告:蜂鸣器
实验工具和器材:Proteus仿真软件,Keil程序编写软件,蜂鸣器,AT89C51单片机。
实验原理:
蜂鸣器分为压电式和电磁式两种类型。本实验采用的是电磁式蜂鸣器。蜂鸣器又分为有源和无源两种类型。本实验采用的是有源蜂鸣器。通过51单片机和C程序,将程序所设计的
算法与蜂鸣器电路连接起来,采用循环函数配合多个延时来实现各个音节的有规律发声,合成一首完整的音乐。本实验采用较为简单的一首儿歌《两只老虎》来体现。
硬件电路说明:
本实验使用电磁式蜂鸣器,蜂鸣器连接单片机P2.0端口,另一端接地。通过C程序产生的hex文件控制蜂鸣器发声,
播放一首完整的歌曲。音节的曲调和间隔时间都是构成歌曲的一个重要部分,需要调节频率和利用延时函数。控制发声频率
要产生音频脉冲,只要算出某一音频的周期/频率,然后将此周期除以2(即为半周期的时间)。利用定时器计时这半个周期时间,就可在I/O脚上得到此频率的脉冲。利用AT89C51的内部定时器使其工作在计数器模式下,改变计数值TH0及TL0从而产生不同频率。此外,结束符和休止符可以分别用代码00H和XXX来表示,若查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的停顿效果。
软件程序说明:
主函数采用while和for循环,并且引用延时函数,对各部分程序进行调用。与采用一般的延时函数相比,可以分别控制歌曲各个音节的持续发声。
在主函数中,使用多个for循环来控制每个音节的起始和结束,以实现蜂鸣器对一首完整歌曲的播放。通过调用不同的延时函数,实现有节奏的音节发声,并将它们串联起来。
在调用Beep函数时,需要进行定义。在主函数中,分别在每个音节开始前后的两个for循环中调用Beep函数。通过Beep=~Beep和Beep=1指令的调用,实现各个音节的发声和停止,从而控制歌曲的有节奏播放。
为了实现各个音节的延时发声,我们使用了多个延时程序,例如500ms和700ms。这些程序会反复调用,以实现对各个
音节的延时发声。
实验结果表明,通过以上控制方式,我们成功地实现了一首歌曲的有节奏播放。各个音节的发声和停止时间得到了精确控制,从而使整首歌曲听起来更加流畅和和谐。