单片机对蜂鸣器的设计
单片机实验报告蜂鸣器
一、实验目的1. 熟悉51单片机的基本结构和工作原理。
2. 掌握51单片机的I/O口编程方法。
3. 学习蜂鸣器的驱动原理和应用。
4. 通过实验,提高动手实践能力和问题解决能力。
二、实验原理蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生按键音、报警音等提示信号。
根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。
1. 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
2. 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才能发声,调整提供振荡脉冲的频率,可发出不同频率的声音。
在本次实验中,我们使用的是无源蜂鸣器。
51单片机通过控制P1.5端口的电平,产生周期性的方波信号,驱动蜂鸣器发声。
三、实验器材1. 51单片机实验板2. 蜂鸣器3. 连接线4. 电路焊接工具5. 编程软件(如Keil)四、实验步骤1. 电路连接:- 将蜂鸣器的正极连接到51单片机的P1.5端口。
- 将蜂鸣器的负极接地。
2. 程序编写:- 使用Keil软件编写程序,实现以下功能:1. 初始化P1.5端口为输出模式。
2. 通过循环,不断改变P1.5端口的电平,产生方波信号。
3. 调整方波信号的频率,控制蜂鸣器的音调。
3. 程序下载:- 将程序下载到51单片机中。
4. 实验观察:- 启动程序后,观察蜂鸣器是否发声,以及音调是否与程序设置一致。
五、实验结果与分析1. 实验结果:- 成功驱动蜂鸣器发声,音调与程序设置一致。
2. 结果分析:- 通过实验,我们掌握了51单片机的I/O口编程方法,以及蜂鸣器的驱动原理。
- 在程序编写过程中,我们学习了方波信号的生成方法,以及如何调整方波信号的频率。
六、实验总结本次实验成功地实现了51单片机控制蜂鸣器发声的功能,达到了预期的实验目的。
通过本次实验,我们提高了以下能力:1. 对51单片机的基本结构和工作原理有了更深入的了解。
2. 掌握了51单片机的I/O口编程方法。
3. 学习了蜂鸣器的驱动原理和应用。
单片机《蜂鸣器》实验报告
单片机《蜂鸣器》实验报告实验报告:蜂鸣器实验工具和器材: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。
基于stc89c516rd+单片机蜂鸣器编程
基于stc89c516rd+单片机蜂鸣器编程摘要:一、引言二、STC89C516RD+单片机简介三、蜂鸣器及其原理四、基于STC89C516RD+单片机的蜂鸣器编程1.硬件连接2.蜂鸣器驱动程序设计3.蜂鸣器控制程序设计五、实验结果与分析六、总结正文:一、引言蜂鸣器是一种常见的电子元器件,广泛应用于各种报警、提示和信号传输系统中。
在嵌入式系统中,对蜂鸣器的编程控制是必不可少的。
本文以STC89C516RD+单片机为例,介绍了如何对蜂鸣器进行编程控制。
二、STC89C516RD+单片机简介STC89C516RD+是一款高性能、低功耗的单片机,是STC 系列单片机的一种。
它具有丰富的外设资源、可编程I/O 口、串行通信接口等,适用于各种嵌入式系统应用。
三、蜂鸣器及其原理蜂鸣器是一种将电能转化为声能的装置,通常由振荡器、放大器和扬声器组成。
当电流通过蜂鸣器时,振荡器产生高频振动,通过扬声器将振动转化为声波,从而发出声音。
四、基于STC89C516RD+单片机的蜂鸣器编程1.硬件连接蜂鸣器连接到单片机的某个I/O口,通常使用P1口。
单片机的P1口具有上拉电阻,因此无需外接电阻。
蜂鸣器的正极连接到P1.0,负极连接到P1.1。
2.蜂鸣器驱动程序设计蜂鸣器驱动程序主要负责产生蜂鸣器所需的电信号。
在STC89C516RD+单片机中,可以使用PWM(脉冲宽度调制)技术产生所需的电信号。
3.蜂鸣器控制程序设计蜂鸣器控制程序主要负责控制蜂鸣器的响铃时间和间隔。
根据实际需求,可以设置不同的响铃模式。
例如,可以设置为长音、短音、长音- 短音等组合。
五、实验结果与分析在成功搭建硬件电路并编写程序后,对蜂鸣器进行实验测试。
实验结果表明,蜂鸣器能够根据程序设定的响铃模式进行准确的声音输出,证明了程序的正确性。
六、总结本文以STC89C516RD+单片机为例,介绍了如何对蜂鸣器进行编程控制。
通过硬件连接、蜂鸣器驱动程序设计和蜂鸣器控制程序设计,实现了对蜂鸣器的精确控制。
用单片机控制蜂鸣器的实验电路
用单片机控制蜂鸣器的实验电路
无源蜂鸣器也是有极性的电子元件,它的控制电路与有源蜂鸣器一样,如下图所示。
但它的发声条件与有源蜂鸣器不同。
只有当一定频率的电流从正极流向负极时,无源蜂鸣器才会鸣响。
下图所示是单片机P3.4引脚输出的各种频率的方波,三极管Q1在这些方波信号的控制下导通、截止,就会有和方波频率相同的电流流过无源蜂鸣器的正负两极,无源蜂鸣器就会发声了。
改变控制方波的频率可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
如图2(a)(b)的方波频率不同,控制方坡的频率越高蜂鸣器的声音越尖细,反之频率越低声音越低沉。
另外,改变控制方波的高低电平占空比,则可以控制蜂鸣器的声音大小,如图2中(c)(d)的频率相同占空比不同。
我们可以根据这些特性编写程序,使单片机输出不同频率和占空比的方波信号,用无源蜂鸣器来演奏出简单的乐曲。
单片机蜂鸣器编程技巧
单片机蜂鸣器编程技巧1.音乐节奏控制:在编写程序时,可以使用定时器来控制蜂鸣器的音符持续时间。
通过调整定时器的参数值,可以实现不同音长的音符,从而控制节奏感。
2.音符频率控制:不同音符具有不同的频率,可以根据乐谱中各个音符的频率,将其对应的频率值存储在一个数组中。
通过控制蜂鸣器输出的频率,可以实现不同音高的音符。
3.延时函数:在单片机编程中,经常需要使用延时函数来控制时间间隔。
在输出音乐时,可以通过延时函数控制每个音符的持续时间。
通过调整延时函数的参数值,可以实现不同音符间的时间间隔,从而实现更好听的音乐效果。
4.音乐合奏:在编写程序时,可以将不同乐器的音符同时输出到不同的蜂鸣器上,从而实现多个乐器的合奏效果。
通过合理地组合不同乐器的频率和节奏,可以编写出更丰富的音乐作品。
5.音乐循环播放:通过编写循环结构,可以实现音乐循环播放的效果。
通过精确地确定循环次数,可以实现指定音乐节拍的循环播放效果。
6.音乐速度调节:通过调整延时函数的参数值,可以控制音乐的播放速度。
加快延时时间可以使音乐播放加速,减慢延时时间可以使音乐放慢。
7.音乐音量控制:通过控制蜂鸣器输出的PWM信号的占空比,可以实现音乐的音量控制。
调整PWM信号占空比的大小,可以改变音量的大小。
8.音乐渐变效果:在编写程序时,可以使用渐变效果来实现音乐的过渡效果。
通过逐渐增加或减小频率和音量,可以实现音乐渐变的效果,使音乐更加流畅自然。
9.使用音乐库:在单片机编程中,有一些常用的音乐库可以使用。
通过引用这些音乐库,可以简化音乐的编写过程,提高编程效率。
10.节奏变化:在编写程序时,可以尝试在音乐的不同位置加入一些节奏变化,使音乐更加有层次感。
例如,在特定位置加入加速、变慢、停顿等效果。
总结:以上是一些常用的单片机蜂鸣器编程技巧。
通过合理运用这些技巧,可以编写出更多样化、更复杂的音乐效果。
当然,这只是冰山一角,还有很多其他的编程技巧可以尝试,通过对单片机蜂鸣器的深入研究和实践,我们可以更好地掌握这些技巧,创作出独特的音乐作品。
单片机蜂鸣器控制程序和驱动电路典型设计案例
单片机蜂鸣器控制程序和驱动电路典型设计案例[前言]蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。
压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。
压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。
按照驱动方式分为有源蜂鸣器和无源蜂鸣器。
这里的有源和无源不是指电源,而是振荡源。
有源蜂鸣器内部带了振荡源,如图9-8 所示中,给了BUZZ 引脚一个低电平,蜂鸣器就会直接响。
而无源蜂鸣器内部是不带振荡源的,要让他响必须给500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。
有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来do re mi fa sol la si的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。
图9-8 蜂鸣器电路原理图我们来看一下图9-8 的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个100 欧的电阻作为限流电阻。
此外还加了一个D4 二极管,这个二极管叫做续流二极管。
我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。
而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经电源-三极管-蜂鸣器-地这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。
接续关断时的电流,这就是续流二极管名称的由来。
蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个4KHZ 频率下的发声和1KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。
单片机《蜂鸣器》实验报告
单片机《蜂鸣器》实验报告单片机《蜂鸣器》实验报告一、实验目的本次实验旨在通过单片机的控制,实现对蜂鸣器的驱动和发声控制,进一步了解蜂鸣器的工作原理及应用。
二、实验原理蜂鸣器是一种电子发声器件,常用于发出警告、提示或声音信号。
其工作原理是利用电磁感应原理,在蜂鸣器线圈中通入电流时,会产生磁场,该磁场与蜂鸣器内部的一块磁铁产生相互作用力,使蜂鸣器内部的膜片发生振动,从而发出声音。
在本实验中,我们将通过单片机控制蜂鸣器的驱动信号,使其发出不同的声音,从而实现单片机对蜂鸣器的控制。
三、实验步骤1、准备实验器材:单片机开发板、蜂鸣器模块、杜邦线等。
2、将蜂鸣器模块连接至单片机开发板的某个数字引脚上。
3、通过单片机编程软件编写控制程序,实现对蜂鸣器的控制。
4、将编写好的程序下载到单片机开发板中,并进行调试。
5、通过单片机控制蜂鸣器发出不同的声音,观察其工作情况。
四、实验结果与分析1、实验结果通过本次实验,我们成功实现了单片机对蜂鸣器的控制,可以通过编写不同的程序,使蜂鸣器发出不同的声音。
以下是实验中蜂鸣器发出的声音及其对应的程序代码:(1) 发出“滴”的一声(2) 发出“嘟嘟”的警告声2、结果分析通过实验结果可以看出,通过单片机对蜂鸣器进行控制,可以实现发出不同声音的效果。
在第一个实验中,我们通过设置引脚的高低电平及延时时间,使蜂鸣器发出一声“滴”的声音。
在第二个实验中,我们通过一个无限循环,使蜂鸣器发出“嘟嘟”的警告声。
五、结论与展望通过本次实验,我们深入了解了蜂鸣器的工作原理及应用,并成功实现了单片机对蜂鸣器的控制。
实验结果表明,我们可以根据实际需要编写不同的程序,实现对蜂鸣器的灵活控制。
展望未来,我们可以进一步研究蜂鸣器的其他应用场景,例如在智能家居、机器人等领域中的应用。
我们也可以通过其他方式对蜂鸣器进行控制,例如通过传感器采集信号或者通过无线网络进行远程控制等。
单片机课程设计报告蜂鸣器
单片机课程设计报告蜂鸣器河南师范大学新联学院单片机课程设计报告课程单片机原理及接口技术设计题目蜂鸣器演奏歌曲年级专业级计算机科学与技术学号 11学生姓名李指导教师莹6 月 15 日蜂鸣器演奏歌曲实验报告一、要求完成驱动蜂鸣器歌曲演奏的实验二、目的1、学习KEIL软件的使用方法;2、掌握BST-V51单片机学习板设计蜂鸣器音乐的发生;3、掌握设计中各模块的功能,能够填入并演奏曲子;4、学习乐谱的基本知识,掌握其演奏的原理。
三、分析1、基本原理简述声音是经过振动产生的。
单片机对某一引脚以一定的频率循环置1置0,该引脚便产生一定频率的方波,方波经过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。
若改变输出方波的频率,产生的声音随之改变。
经过控制输出方波的时间长短,声音的长短也可以得到控制,因此,根据乐谱,以类似的音及同样的节拍,单片机就能够产生电子音乐。
音乐的播放选择能够经过按键的输入得以实现。
为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占一半。
因此,输出引脚在每个方波周期内要动作两次:一次升高,一次降低。
即输出引脚的频率是原音频率的两倍。
2、单片机产生不同频率脉冲信号的原理(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就能够在I/O脚上得到此频率的脉冲。
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下: N=Fi/2/Fr(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率)(3)其计数值的求法如下:T=65536-N=65536-Fi/2/Fr计算举例:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
单片机课程设计报告利用蜂鸣器播放音乐
课程设计:嵌入式系统应用题目名称:利用蜂鸣器实现音乐播放功能姓名:学号:班级:完成时间:1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器实现音乐播放功能2设计的过程基本结构在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:~5V单片机/~3V单片机,工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节;STC89C52RC引脚图STC89C52RC单片机的工作模式:(1)典型功耗<μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA(3)正常工作模式:典型功耗4Ma~7mA4唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型;电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成;接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声;本实验采用的是电磁式蜂鸣器;蜂鸣器按其是否带有信号源又分为有源和无源两种类型;有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音;无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音;本实验采用的是有源蜂鸣器;蜂鸣器与单片机连接电路图软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声;采用置1置0的方法只能使蜂鸣器发声或停止发声,想要使蜂鸣器发出声音,必须对蜂鸣器发出声音的音频和节拍进行控制;音乐基础音调:不同音高的乐音是用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频率266Hz的一倍;同样的,高音RE 的频率1175Hz刚好是中音RE的频率587Hz的一倍,中音RE的频率587Hz 刚好是低音RE频率294Hz的一倍;节拍:节拍是让音乐具有旋律固定的律动,而且可以调节各个音的快满度;“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚;若1拍实,则1/4拍为;至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好;音持续时间的长短即时值,一般用拍数表示;休止符表示暂停发音;1)控制发声频率要产生音频脉冲,只要算出某一音频的周期1/频率,然后将此周期除以2,即为半周期的时间;利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O 脚上得到此频率的脉冲;利用STC89C52RC的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0从而产生不同频率;此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的停顿效果;以标准音高A为例,A的频率是440Hz,周期T=1/440=2272us;在占空比为50%的情况下,导通时间=断开时间=半周期t=2272us/2=1136us,利用P3^4端口的位操作,经过不断地反相变换即可得到标准音高A的音频脉冲;端口导通时间与断开时的时间利用定时器实现;具体的方法是将单片机定时器的中断触发时间设为半周期t,这样每隔半周期端口反相,输出连续的对应音高的频率;设晶振的频率为f0,中断触发时间半周期为t,定时器工作在模式1时计数器的初值为THL,高8位为THL,低8位为TL;时钟周期即为1/f0,定时器每一次累加用去一个机器周期,一个机器周期包含12个时钟周期,即定时器每次加一所用时间是12/f0;定时器在模式1下计时采用16位数,最大计数为2^16-165535,再次加一65536溢出触发中断;根据以上分析可得如下关系:音频对应定时器初值的高8位TH=THL/2^8=65536-tf/12/256;音频对应定时器初值的低8位TL=THL%2^8=65536-tf/12%256;附:八度12音阶定时器初值表只含自然音低音音名 频率Hz 晶振12MHz 晶振 中音音名 频率Hz 晶振12MHz 晶振 高音音名 频率Hz 晶振12MHz 晶振 Do 262 0xF885 0xF91B Do 523 0xFC43 0xFC8E Do 1046 0xFE21 0xFE47 Re 294 0xF95A 0xF9DF Re 587 0xFCAD 0xFCED Re 1175 0xFE56 0xFE76 Mi 330 0xFA13 0xFA8A Mi 659 0xFD0A 0xFD43 Mi 1318 0xFE85 0xFEA1 Fa 349 0xFA68 0xFAD8 Fa 698 0xFD34 0xFD6A Fa 1397 0xFE9A 0xFEC7 So 392 0xFB04 0xFB68 So 784 0xFD82 0xFDB3 So 1568 0xFEC1 0xFED9 La 440 0xFB90 0xFBE9 La 880 0xFDC8 0xFDF3 La 1760 0xFEE4 0xFEF9 Si4940xFC0C0xFC5BSi9880xFE060xFE2DSi19760xFF030xFF162控制发声节拍每个音符的节拍可通过延时一定的时间来实现,在具体实现时需要有一个基本的带参延时程序,用于主函数根据不同的音符调用不同的时延;若以十六分之一音符的时长为基本延时时间,则十六分音符只需调用一次延时程序,八分音符则需调用两次延时程序,以此类推;3) 简谱及其编码用数字1至7表示;这7个数字就等于的;如果是C 大调,加上音名,就会是这样:八度如果是高一个八度,就会在数字上方加上一点;如果是低一个八度,就会数字下方加上一点;在中间的那一个就什么也不用加;如果要再高一个八度,就在上方垂直加上两点如:;要再低一个八度,就在下方垂直加上两点如:,如此类推;见下表所示: 大调 ... ... 小调......音长通常只有数字的是;数字下加一条横线,就可令四分音符的长度减半,即成为;两条横线可令八分音符的长度减半,即成为,余此类推;简单来説,下音阶CDEFGAB唱名 do re mi fa so la si数字 1 2 3 4 5 6 7加横綫数目与五綫谱的符尾数目相对应;数字后方的横线延长音符,每加一条横线延长一个的长度;正如五綫谱的附点一样,数字后方加一点会将音符长度增加一半;休止符休止符用“0”来表示;比四分休止符长,就只需在每一个四分休止符再多加一个“0”,不需在后方加上横线;若整个小节均是休止状态的话,就在每个四分音符加一个“0”,就像是3拍4就写成“|000|”,而4拍4就写成“|0000|”;无音高音符就像敲击乐的乐器那样是没有音高的,这时,简谱就需要用“X”或“x”表达;例如拍手时,简谱上就需如此表达:小节线正如五綫谱一样,小节与小节之间以纵綫称分隔,乐曲终止以一粗一细的直綫表示但是一般不分粗细;重复乐段以纵綫后两点表示开始,纵綫前两点表示终止;拍号的表达方式为:“2/4”、“3/4”、“4/4”、“6/8”等等;拍号一般都是置于的后方;变调与调号表示有两种方法:可以直接写“C调”,“C小调”或“Key:C”,“Key:Cm”;亦可写清楚主音代表哪一个音,例如1=C,就是C大调大调以1为主音;6=C就是C小调小调以6为主音;2=D就是D多利安调以2为主音;五线谱有,简谱同样有升降号;在简谱中,若需表达升降号,就把符号加在数字1至7的前方,让该音升高或降低;若要把升降号加在调号跟CDEFGAB七个字母,就须加在它们的后方;在五綫谱中,C小调要把B-E-A三个音降低半音;所以表达它的和声小调时,就会把一个放在B前面;简谱就一定得写 5,因为5不能下降;延音线、圆滑线与其他音乐符号简谱Tie跟slur都是跟五线谱相同,一定得置在数字上方;表达staccato时需要特别小心,因为很容易会跟低八度的那一点混淆,因此在表达跳音时把那一点写得粗点及低点;简谱编码将简谱中的每个音符进行编码,每个音符用一个unsignedchar字符类型表示,简谱可用一个unsignedchar字符数组表示;字符的前四位表示音频,可以表示0-f共十六个音符;本实验中采用了中音区和高音区;中音do-si分别编码为1~7,高音do-si分别编码为8~E,停顿编为0;字符的后四位表示节拍,节拍以十六分音符为单位在本程序中为165ms,一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推;以0xff作为曲谱的结束标志;程序从数组中取出一个数,然后分离出高4位得到音调,将值赋给定时器0,得到音调;接着分离出该数的低4位,得到节拍;本实验中播放音乐使用简谱如下:将其编码成:ucharcodezbjbxf={0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,0xA1,0x91,0xA1,0x81,0 x64,0xA3,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0x D2,0xA2,0xC4,0xC2,0x62,0xC2,0x62,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x9 1,0xA2,0xC2,0xD4,0xE4,0xA4,0xE4,0xA2,0xE2,0xA2,0xE2,0xA2,0xA2,0x84,0x94 ,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD8};程序流图及说明主程序流程图程序代码:include<> defineucharunsignedchardefineuintunsignedintsbitfm=P3^4;算机与单片机的连接不上问题计算机与单片机的连接需要在电脑端安装相应的USB转串的驱动,由于我组没有使用实验室windowsxp系统,而使用的是个人计算机windows7系统,所以需要针对win7的驱动;后来联网搜索下载相应的驱动之后解决了这一问题;2.如何使蜂鸣器发出声音而非Be-Be声为了解决这个问题,我们深入研究了蜂鸣器发声原理与乐谱相关的知识;通过学习相关知识发现,不同的音符对应不同的音高,音高取决于发声频率;所以可以通过构造不同频率的方波来使蜂鸣器发出不同频率的声音,具体实现时利用定时器计时,定时器每一次累加消耗一个机器周期,即12个时钟周期;本实验采用晶振频率为12MHz,即定时器每一次累加消耗1us,通过设置定时器初值设定蜂鸣器取法的时间间隔,从而产生相应的音频;每个音符不但有频率属性,还有节拍属性;对不同节拍的控制可以采用延迟一定的时间来得到; 5总结在本次课程设计中,我们进一步加深了对小型嵌入式系统的认识;实验初期单片机需要自己焊接,通过亲手焊接电路板,了解了如何将实验原理图转化为具体的硬件实物连接;通过使用TN单片机开发板和STC89C52RC系统,对单片机应用开发有了初步的熟悉;在实验的过程中,使用到了C51的编译环境KeilC和单片机通讯程序STC_ISP,两者是单片机开发所不可缺少的工具;在具体实施的过程中,通过一一解决遇到的问题,增强了动手实践能力;。
单片机蜂鸣器音乐
单片机蜂鸣器音乐单片机在我们的生活中无处不在,它被广泛地应用在各种电子产品中,为我们的生活带来了便利。
今天,我要向大家介绍的是一种基于单片机的蜂鸣器音乐播放器。
一、硬件部分1、单片机:我们选用的是AT89C51单片机,它具有低功耗、高性能的特点,非常适合用于音乐播放器。
2、蜂鸣器:蜂鸣器是用来发出声音的,我们将其连接在单片机的输出口上。
3、存储芯片:为了能够播放存储在芯片中的音乐,我们需要将音乐以某种格式存储在芯片中。
常用的存储芯片有EEPROM和Flash芯片。
4、按键:为了能够选择播放不同的音乐,我们需要添加一个按键。
二、软件部分1、音乐编码:我们需要将音乐转换成二进制编码,这样才能被单片机读取并播放。
常用的音乐编码格式有MIDI、WAV等。
2、音乐播放:当按下按键时,单片机读取存储芯片中的音乐数据,并通过蜂鸣器播放。
3、音乐选择:通过按键可以选择不同的音乐进行播放。
4、音量控制:我们可以通过编程来控制蜂鸣器的音量大小。
三、调试与测试1、硬件调试:检查连接是否正确,确保没有短路或断路的情况。
2、软件调试:将程序下载到单片机中进行调试,确保能够正常播放音乐。
3、综合测试:将所有硬件和软件都连接起来进行测试,确保能够正常工作。
四、总结与展望通过本次实验,我们成功地制作了一个基于单片机的蜂鸣器音乐播放器。
它具有简单、实用的特点,可以用来播放存储在芯片中的音乐。
未来,我们可以进一步扩展其功能,例如添加更多的按键来选择不同的音乐、添加显示屏来显示歌曲名称等。
我们也可以将其应用到其他领域,例如智能家居、智能安防等。
单片机蜂鸣器唱歌程序在许多应用中,单片机蜂鸣器经常被用来发出声音或音乐。
下面是一个使用单片机蜂鸣器唱歌的程序示例。
我们需要确定单片机和蜂鸣器的连接方式。
通常,单片机具有一个内置的蜂鸣器输出引脚,可以将蜂鸣器连接到这个引脚上。
在以下的示例中,我们将假设单片机具有一个内置蜂鸣器输出引脚,并将其连接到P1.0端口上。
单片机蜂鸣器实验报告
一、实验目的1. 了解单片机I/O的工作方式;2. 熟悉51单片机的汇编指令;3. 掌握蜂鸣器的工作原理及驱动方法;4. 学会通过单片机控制蜂鸣器发声,实现音乐播放功能。
二、实验原理1. 单片机:单片机是一种具有微处理器的集成电路,它将微处理器、存储器、输入/输出接口等集成在一个芯片上,具有体积小、功耗低、成本低等特点。
2. 蜂鸣器:蜂鸣器是一种将电信号转化为声音信号的装置,广泛应用于计算机、打印机、复印机、报警器、电子玩具等电子产品中。
蜂鸣器主要分为有源蜂鸣器和无源蜂鸣器两种类型。
有源蜂鸣器内置振荡源,可直接发声;无源蜂鸣器无内置振荡源,需要控制器提供振荡脉冲才能发声。
3. 51单片机与蜂鸣器连接:51单片机通过P1.0端口控制蜂鸣器,当P1.0端口输出高电平时,蜂鸣器发声;输出低电平时,蜂鸣器停止发声。
三、实验器材1. 51单片机实验板;2. 蜂鸣器;3. 连接线;4. 信号源;5. 示波器;6. 计算机及仿真软件(如Proteus)。
四、实验步骤1. 将蜂鸣器连接到51单片机实验板的P1.0端口;2. 编写程序,实现以下功能:(1)初始化51单片机系统;(2)通过P1.0端口控制蜂鸣器发声;(3)实现音乐播放功能;3. 将程序烧录到51单片机实验板;4. 使用示波器观察蜂鸣器发出的声音波形;5. 使用信号源模拟按键输入,验证蜂鸣器控制功能;6. 使用Proteus仿真软件验证程序功能。
五、实验结果与分析1. 通过实验,成功实现了51单片机控制蜂鸣器发声,验证了单片机I/O的工作方式和51单片机的汇编指令;2. 实现了音乐播放功能,验证了蜂鸣器的工作原理及驱动方法;3. 通过示波器观察,蜂鸣器发出的声音波形符合预期,验证了程序的正确性;4. 通过Proteus仿真软件,验证了程序在虚拟环境中的正确性。
六、实验总结1. 通过本次实验,掌握了单片机I/O的工作方式,熟悉了51单片机的汇编指令;2. 理解了蜂鸣器的工作原理及驱动方法,学会了通过单片机控制蜂鸣器发声;3. 提高了动手实践能力,培养了团队协作精神。
单片机实验报告-蜂鸣器驱动实验5页
单片机实验报告-蜂鸣器驱动实验5页
实验目的:了解蜂鸣器的基本原理和控制方法,熟悉单片机I/O口配置和使用。
实验器材:AT89C52单片机开发板、蜂鸣器、面包板、杜邦线、电源适配器。
实验原理:
蜂鸣器是一种能够发声的电子元件,在很多电子产品中都有广泛应用,比如:电子时钟、电子琴等。
蜂鸣器的基本原理是利用单片机产生一定频率的脉冲信号,通过输出端口将信号送到蜂鸣器上,使之发出相应频率的声音。
AT89C52单片机是一种高性能、低功耗的8位单片机,具有容易编程、易于学习的特点。
单片机通过I/O口输出脉冲信号来控制蜂鸣器的输出,从而实现发声。
实验步骤:
2.在开发板上选择一个I/O口,将其配置为输出端口。
3.编写程序,通过输出口控制蜂鸣器的发声。
4.将程序下载到开发板中,通过电源适配器供电。
5.观察蜂鸣器是否工作正常,听到蜂鸣声音。
实验代码:
实验结果:
经过实验,可以听到蜂鸣器发出的声音,证明程序运行正常,单片机成功驱动蜂鸣器。
单片机蜂鸣器响一秒停一秒实验报告代码
单片机蜂鸣器响一秒停一秒实验报告代码实验目的:利用单片机控制蜂鸣器输出不同的频率和时间,实现蜂鸣器响一秒停一秒的功能。
实验器材:STC89C52单片机、蜂鸣器、 Jumper wires。
实验原理:STC89C52单片机的IO口可以用来控制外部器件,蜂鸣器连接到单片机的IO口上,通过程序控制IO口输出高电平或低电平控制蜂鸣器发声或停止发声。
实验步骤:1. 将STC89C52单片机片上系统搭建好,将蜂鸣器连接到单片机的一个IO口上;2. 使用Keil编译器编写程序代码,实现蜂鸣器响一秒停一秒的功能;3. 将程序代码烧录进单片机,连接电源后观察蜂鸣器是否正常响起。
代码如下:```c#include<reg52.h>#define ON 0 // 蜂鸣器控制IO口输出高电平#define OFF 1 // 蜂鸣器控制IO口输出低电平void delay(unsigned int x); // 延迟函数void main(){while (1){P1 = ON; // 蜂鸣器控制IO口输出高电平delay(1000); // 延时1秒P1 = OFF; // 蜂鸣器控制IO口输出低电平delay(1000); // 延时1秒}}void delay(unsigned int x){ // 延迟函数unsigned char i, j;for (i = x; i > 0; i--)for (j = 110; j > 0; j--);}```以上代码中,P1口控制蜂鸣器,利用循环控制蜂鸣器在高低电平间切换,延时用来实现响1秒停1秒的功能。
注意:实现蜂鸣器响一秒停一秒功能时,需要确保延时函数的时间间隔精度较高,否则会影响响停时间的准确性。
以上是单片机蜂鸣器响一秒停一秒的实验报告和代码,希望能对您有所帮助。
单片机蜂鸣器发声代码
单片机蜂鸣器发声代码
单片机蜂鸣器是单片机开发中经常使用的一种输出设备,在很多作品中都发挥着很重要的作用。
本文将介绍如何通过单片机控制蜂鸣器发出不同频率的声音。
一、硬件设计
我们需要使用一个蜂鸣器和一块单片机开发板,比如STC89C52。
蜂鸣器有正负两个针脚,需要将正极接到控制单片机的GPIO端口上,负极接地即可。
1. 预处理指令
首先需要在头文件中定义单片机的型号和所要使用的GPIO端口。
```
#include <STC89C5xRC.H> //使用STC89C52
#define buzz P2 //定义蜂鸣器控制口
```
2. 主函数
接下来就是核心部分,主函数中需要实现的就是通过改变GPIO口的电平来控制蜂鸣器发出不同频率的声音。
对于控制蜂鸣器发出持久的“滴滴声”,可以采用下面的程序:
程序中先将GPIO口输出低电平,等待一段时间后再输出高电平,蜂鸣器发出持续的“滴滴声”。
如果想控制蜂鸣器发出不同频率的声音,可以修改上述程序中的DelayMs()函数来设置不同的延时时间。
因为蜂鸣器的振动频率与输入信号的高低电平时间比例有关,所以延时时间变化会使输出的声音频率发生变化。
比如,如果想让蜂鸣器发出音调为“咳咳声”,可以改变延时时间来实现。
如此,蜂鸣器就发出了“咳咳声”。
以上就是单片机蜂鸣器发声的基本方法,不同的延时时间可以产生不同的声音效果,可以根据实际需要进行调整。
单片机蜂鸣器实验报告
单片机蜂鸣器实验报告单片机蜂鸣器实验报告引言:单片机蜂鸣器是一种常用的电子元件,广泛应用于各种电子设备中。
本篇实验报告旨在介绍单片机蜂鸣器的基本原理和实验过程,并探讨其在不同应用场景中的应用。
一、实验目的:本次实验的主要目的是通过使用单片机控制蜂鸣器发出不同频率的声音,了解蜂鸣器的工作原理及其在电子设备中的应用。
二、实验器材和原理:1. 实验器材:- 单片机开发板- 蜂鸣器- 连接线- 电源2. 实验原理:蜂鸣器是一种能够发出声音的电子元件,它通过振动产生声音。
在单片机蜂鸣器实验中,我们使用单片机控制蜂鸣器的振动频率,从而产生不同的声音。
三、实验步骤:1. 连接电路:将蜂鸣器的正极连接到单片机开发板的IO口,将蜂鸣器的负极连接到开发板的地线。
确保连接稳固。
2. 编写程序:使用单片机开发板的编程软件,编写程序来控制蜂鸣器的振动频率。
可以通过调整程序中的延时时间来改变蜂鸣器发声的频率。
3. 上传程序:将编写好的程序通过USB线上传到单片机开发板中。
4. 运行实验:将电源接入单片机开发板,开启电源。
单片机将根据程序中设定的频率控制蜂鸣器发声。
四、实验结果与分析:通过修改程序中的延时时间,我们可以改变蜂鸣器发声的频率。
实验中,我们尝试了不同的延时时间,并观察了蜂鸣器发声的效果。
在较短的延时时间下,蜂鸣器发出的声音频率较高,声音连续不断。
而在较长的延时时间下,蜂鸣器发出的声音频率较低,声音间隔较长。
通过实验结果分析,我们可以得出结论:蜂鸣器的发声频率与延时时间成反比关系。
延时时间越短,蜂鸣器发声的频率越高;延时时间越长,蜂鸣器发声的频率越低。
五、实验应用:单片机蜂鸣器在实际应用中有着广泛的用途。
以下是几个常见的应用场景:1. 报警系统:将蜂鸣器连接到报警设备中,当设备检测到异常情况时,通过单片机控制蜂鸣器发出警报声,提醒用户注意。
2. 电子钟:通过单片机控制蜂鸣器发出定时的滴答声,实现电子钟的功能。
3. 游戏设备:将蜂鸣器连接到游戏设备中,通过单片机控制蜂鸣器发出不同的声音,增加游戏的趣味性和互动性。
单片机驱动蜂鸣器原理与设计
单片机驱动蜂鸣器原理与设计蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器实物图:电磁式蜂鸣器结构示意图:图 1 图 2电磁式蜂鸣器内部构成:1. 防水贴纸2. 线轴3. 线圈4. 磁铁5. 底座6. 引脚7. 外壳8. 铁芯9. 封胶10. 小铁片11. 振动膜12. 电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
单片机使用4个独立按键控制蜂鸣器代码
单片机使用4个独立按键控制蜂鸣器代码下面是使用单片机控制蜂鸣器,使用4个独立按键的示例代码:```c#include <reg52.h> // 8052 单片机头文件sbit beep=P1^5; // 将蜂鸣器引脚定义为 P1.5sbit key1=P3^1; // 定义四个按键引脚为 P3.1 到 P3.4sbit key2=P3^2;sbit key3=P3^3;sbit key4=P3^4;void delay(unsigned int t) // 延时函数{unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<125;j++);}void main(){beep = 0; // 蜂鸣器关闭while(1){if(key1 == 0) // 首先检测按键1是否按下{beep = ~beep; // 取反控制蜂鸣器开/关delay(500); // 延时以避免误触}else if(key2 == 0) // 随后检测按键2是否按下{beep = 0; // 关闭蜂鸣器delay(500);}else if(key3 == 0) // 然后检测按键3是否按下{beep = 1; // 打开蜂鸣器delay(500);}else if(key4 == 0) // 最后检测按键4是否按下{beep = 0; // 关闭蜂鸣器delay(500);}}}```在上述代码中,我们首先定义了蜂鸣器引脚 `beep`,以及四个按键引脚 `key1` 到 `key4`。
然后,我们通过 `delay` 函数来延时防止误碰。
在无限循环中,我们检测四个按键的状态,如果有按键被按下,我们会对蜂鸣器进行相应的操作。
按键1控制开/关蜂鸣器,按键2关闭蜂鸣器,按键3打开蜂鸣器,按键4同样关闭蜂鸣器。
单片机实验报告蜂鸣器
单片机实验报告蜂鸣器单片机实验报告:蜂鸣器引言在现代科技发展迅猛的时代,单片机已经成为了各种电子设备中不可或缺的重要部分。
而蜂鸣器作为一种常见的声响器件,也被广泛应用在各种电子产品中。
本实验旨在通过单片机控制蜂鸣器,实现不同频率和节奏的声音输出,并对蜂鸣器的工作原理进行深入理解。
实验目的1. 了解蜂鸣器的工作原理;2. 掌握单片机控制蜂鸣器的方法;3. 实现不同频率和节奏的声音输出。
实验原理蜂鸣器是一种能够发出声音的电子元件,其工作原理是利用电流通过振动片产生声音。
在实验中,我们将通过单片机控制蜂鸣器的工作频率和节奏,从而实现不同的声音效果。
实验步骤1. 连接电路:将单片机和蜂鸣器按照电路图连接好;2. 编写程序:使用C语言编写单片机控制蜂鸣器的程序;3. 烧录程序:将编写好的程序烧录到单片机中;4. 调试程序:通过调试程序,实现不同频率和节奏的声音输出;5. 实验结果:记录实验中不同声音效果的输出结果。
实验结果经过实验,我们成功地通过单片机控制蜂鸣器,实现了不同频率和节奏的声音输出。
通过调试程序,我们可以轻松地改变蜂鸣器的声音效果,包括音调的高低和声音的持续时间等。
这些实验结果充分展示了单片机控制蜂鸣器的强大功能和灵活性。
实验总结通过本次实验,我们深入理解了蜂鸣器的工作原理,并掌握了单片机控制蜂鸣器的方法。
同时,我们也实现了不同频率和节奏的声音输出,为以后的电子产品设计和开发提供了有力的支持。
相信通过这次实验,我们对单片机和蜂鸣器的应用有了更深入的认识,为我们的学习和科研工作打下了坚实的基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TH1 =(65536- 50000)/256;
TL1 =(65536-50000)%256;
EA = 1;
ET0 = 1;
ET1 =1;
TR0 =1;
TR1 = 1;
while(1);
}
void TImer0()interrupt 1
{
TR0 = 0;//进入中断函数后关闭定时器0,以防止内部程序中断丢失
//因为方波要有正负的跳变才能算一个周期,这里?
//每隔10毫秒跳变一次,因此周期是200ms,频率是50Hz
fen = ~fen;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
蜂鸣器精确控制发声:使用定时器
#include
num++;
if(num==flag)
{
num = 0;
fen = ~fen;
}
}
正确代码
/*
同时用两个定时器控制蜂鸣器发声,
定时器0控制频率,定时器1控制同个
频率持续的时间,间隔2s依次输出
1,10,50,100,200,400,800,
1k(hz)的方波?
设晶振频率为12MHz。
*/
#include
TL1 =(65536-50000)%256;
ET1 = 1;
EA = 1;
TR1 =1;
}
void time1()interrupt 3
{
TH1 =(65536-5000)/256;//定时一次是50毫秒
TL1 =(65536-5000)%256;
num++;
if(num==2)
{
num = 0;
break;
case 2:
flag = 3;
break;
case 3:
flag = 4;
break;
case 4:
tt=0;
flag = 5;
break;
}
}
void TIme1()interrupt 3
{
TH1 =(65536-5000)/256;//定时一次是50毫秒
TL1 =(65536-5000)%256;
tt = 0;
fre = 5000;//定时5毫秒,周期为10ms,频率为100zh
beep =~beep;
}
if(flag》=160">{
tt = 0;
fre = 2500;//定时2.5,周期5ms,频率为200
beep =~beep;
}
if(flag》=200">{
tt = 0;
fre = 1250;//定时1.25,周期2.5ms,频率400
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256;
tt ++;
if(flag《40)
if(tt==10)
{
tt = 0;
fre = 50000;//分别用fre来选取频率定时50ms,所以中断产生的频率为10hz
beep = ~beep;
}
if(flag》=40">{
fen = ~fen;
}
}
蜂鸣器精确发声(控制其发出100ms,200ms,300ms,400ms,500ms的频率
错误代码:
//这个程序调试了一上午吧,感觉有点不对劲,问题是出在
//定时器的打断上,即两个定时器都在工作的时候,会不会打断原来的定时器
//这个程序实习实现的功能本来是使喇叭发声,发出
//以100ms,200,300,400,500
单片机对蜂鸣器的设计
蜂鸣器的使用:
蜂鸣器粗略设定频率,以20ms即50hz发声
#include
#define uint unsigned int
#define uchar unsigned char
sbit fen = P2_;
void delay(uint z);main Nhomakorabea){
while(1)
{
delay(1);//延时10毫秒注意这里输出的是20毫秒的方波
//本来应该听到5个频率,但是实际只是听到3个,说明中断发生了错位,中断之间产生了相互的影响
#include
#define uint unsigned int
#define uchar unsigned char
sbit fen = P2_;
uchar num,flag,tt;
void init();
void main()
{
init();
while(1);
}
void init()
{
TMOD = 0x11;
TH1 =(65536-50000)/256;
TL1 =(65536-50000)%256;
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256;
ET1 = 1;
#define uint unsigned int
#define uchar unsigned char
sbit fen = P2_;
uchar num,ben;
void init();
void main()
{
init();
while(1);
}
void init()
{
TMOD = 0x11;
TH1 =(65536-50000)/256;
tt = 0;
fre = 50000;//分别用fre来选取频率定时50ms,所以中断产生的频率为10hz
beep =~beep;
}
if(flag》=80">{
tt = 0;
fre = 10000;//定时10ms,周期为20ms,频率为50hz
beep =~beep;
}
if(flag》=120">{
#include
#define uint unsigned int
#define uchar unsigned char
sbit beep = P2_;
uchar tt;
uint fre,flag;
void main()
{
fre = 50000;
beep = 0;
TMOD = 0x11;
TH0 =(65536-fre)/256;
ET0 =1;
EA = 1;
TR0 =1;
TR1 =1;
}
void TIme0()interrupt 1
{
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256;
tt++;
switch(tt/20)
{
case 0:
flag = 1;
break;
case 1:
flag = 2;
beep =~beep;
}
if(flag》=240">{
tt = 0;
fre = 625;//定时2.5,周期5ms,频率为800
beep =~beep;
}
if(flag》=280">{