当前位置:文档之家› 3 蜂鸣器指导书

3 蜂鸣器指导书

3 蜂鸣器指导书
3 蜂鸣器指导书

单片机蜂鸣器音乐演奏程序的解释

关于“世上只有妈妈好”的单片机音乐演奏程序 2009-11-22 21:45 单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。 这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。 众所周知,周期为频率的倒数,可以通过音符的频率计算出周期;演奏时,要根据音符的不同,把对应的、半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。 下面是个网上广泛流传的单片机音乐演奏程序,很多人都关心如何修改乐曲的内容,但是不知如何入手。做而论道对这个软件,做了一些说明,希望对大家有所帮助,以后大家自己就能够编写进去新的乐曲。 在这个程序中,包括了两个数据表,其中存放了事先算好的、各种音符频率所对应的、半周期的定时时间初始值。有了这些数据,单片机就可以演奏从低音、中音、高音和超高音,四个八度共28个音符。 演奏乐曲时,就根据音符的不同数值,从表中找到定时时间初始值,送入定时器即可控制音调。 乐曲的数据,也要写个数据表:code unsigned char sszymmh[],表中每三个数字,说明了一个音符,它们分别代表: 第一个数字是音符的数值1234567之一,代表多来咪发...; 第二个数字是0123之一,代表低音、中音、高音、超高音;低音:数字下面一个点 中音:没有点 高音:数字上面一个点 超高音:数字上面两个点(两个点纵向排列) 第三个数字是时间长度,以半拍为单位。 音的长短是在音符后面或下面加短横线来表示的。 全音符 5 ———唱四拍 二分音符 5 —唱二拍 四分音符 5 唱一拍 八分音符 5(在音符下加一条短的横线) 唱半拍 十六分音符5(在音符下加两条短的横线)唱四分之一拍 三十二分音符(在音符下加三条短的横线)唱八分之一拍 乐曲数据表的结尾是三个0。 #include sbit speaker = P1^7; unsigned char timer0h, timer0l, time; //-------------------------------------- //单片机晶振采用11.0592MHz // 频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据 code unsigned char FREQH[] = { 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567 // 频率-半周期数据表低八位

嵌入式- 蜂鸣器控制实验

实验二蜂鸣器控制实验 实验目的:1 了解ARM处理器PWM接口的处理机制 2 掌握在S3C2440A平台下进行PWM接口应用编程实验器材:Sinosys-EA2440实验箱PC机 实验原理:脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。即通过改变方波的占空比表示不同的模拟信号的电平。 在ARM嵌入式实验中,其实是通过微处理器中的计数器,对经过频率变换的输出频率周期进行计数,在PWM中,是通过两个寄存器(TCNTBn和TCMPBn)对输出信号的占空比进行调制,TCNTBn可以设置为TCMPBn+X,当TCNTBn在TCMPBn和TCMPBn+X 之间计数时,TOUTn(即输出信号)输出低电平,当TCNTBn计数下降到TCMPBn时,TOUTn电平反转,变为高电平,直到TCNTBn计数减到0,如果此时开启了重载,则又把预定的值重新装入TCNTBn和TCMPBn中,重复以上过程。 在ARM嵌入式PWM中,会提供一个基准时钟作为输入时钟,PWM调制会对输入的时钟进行分频等操作进入计时器逻辑,其电路图2.1如下:

图2.1 PWM计时器框图 如图2.1,输入的时钟PCLK经过一个8bit预置器和一个分频器,将得到的时钟进入计数器逻辑板块作为驱动时钟,而输出的TOUT则作为蜂鸣器(蜂鸣器控制电路如图2.2)的驱动信号。 图2.2 蜂鸣器控制电路

实验总结:实验的主函数首先设置时钟,端口初始化,并捕捉进入测试函数的指令,与实验一大致相同,在此不在赘述,重点分析测试函数。测试函数如下: void Beep(int freq,int ms) { int div,i rGPBCON&=~0x3; //将GPB0作为输入口rGPBCON|=0X2; // 接入TIMER0 rTCFG0&=~0XFF; // 设置prescaler为32 rTCFG0|=0XF; rTCFG1&=~0XF; //选择mux=1/16 rTCFG1|=0X3; div=plck/32/16/freq 计算TCNTB0的值rTCNTB0=div; rTCMPB0=rTCNTB0>>2; 占空比为4:1 rTCON&=~0X1F; 设置死区自动重载反转人工载入开始rTCON|=0XB; 关闭死区开启重载关反转开人工载入开始rTCON&=~2; 关闭人工载入 for(i=1,i

蜂鸣器有关知识

蜂鸣器的简单介绍: 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。 1.分类: 蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器与无源蜂鸣器的区别: 注意:这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。 无源蜂鸣器的优点是: 1). 便宜 2). 声音频率可控,可以做出“多来米发索拉西”的效果 3). 在一些特例中,可以和LED复用一个控制口 有源蜂鸣器的优点是:程序控制方便。 2.蜂鸣器的驱动方式: 由于自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音,很简单,这里就不对自激蜂鸣器进行说明了。这里只对必须用1/2duty 的方波信号进行驱动的他激蜂鸣器进行说明。 单片机驱动他激蜂鸣器的方式有两种:一种是PWM 输出口直接驱动,另一种是利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。 PWM 输出口直接驱动是利用PWM 输出口本身可以输出一定的方波来直接驱动蜂鸣器。在单片机的软件设置中有几个系统寄存器是用来设置PWM 口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出,PWM 输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。比如频率为2000Hz 的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM 的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz 的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。 而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,

单片机 利用蜂鸣器演奏音乐

实验三-利用蜂鸣器演奏音乐 一、实验目的 1.了解BlueSkyC51单片机实验板中蜂鸣器的硬件电路 2.学会利用蜂鸣器实现音乐的演奏 3.掌握蜂鸣器实现音乐演奏的编程 二、实验硬件设计及电路 1. BlueSkyC51单片机实验板 ` 2.单片机最小系统

。 3.蜂鸣器电路连接 三极管主要是做驱动用的。因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以

我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。 三、实验原理 1.音调及节拍 用一个口,输出方波,这个方波输入进蜂鸣器就会产生声音,通过控制方波的频率、时间,就能产生简单的音乐。一般说来,单片机演奏音乐基本都是单音频率,因此单片机奏乐只需控制音调和节拍。 (1)音调的确定 音调是由频率来确定的。通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O 口来回取反,从而让蜂鸣器发出不同频率的声音。只需将定时器给以不同的定时值就可实现。通过延时,即可发出所需要的频率。 … (2)节拍的确定 一拍的时长大约为400—500ms,每个音符的时长通过节拍来计算。详细见程序代码。 2.软件设计相关 (1)头文件 #include<> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long sbit beep=P1^4; 译实验相关问题 ; (1)实际发音颤音重 解决方法为修改蜂鸣器的驱动频率. (2)实际节奏过快或者过慢 调整延时 四、C51程序代码(部分来源于网络) #include<> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long ~ sbit beep=P1^4; //蜂鸣器与口连接 uchar th0_f; //中断装载T0高8位 uchar tl0_f; //T0低8位 uchar code freq[36*2]={ //音阶码表 0xf7,0xd8, //440hz , 1 //0 0xf8,0x50, //466hz , 1# //1

蜂鸣器电路

报警电路的设计 蜂鸣器俗称喇叭,是广泛应用于各种电子产品的一种元器件,它用于提示、报警、音乐等许多应用场合。 蜂鸣器与家用电器上面的喇叭在用法上也有相似的地方,通常工作电流比较大,电路上的TTL 电平基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以,这一点与家用电器中的功放有相似之处。 学习板采用了一个很简单的 电路来实现蜂鸣器的联接,由上所述,一个管脚很难驱动蜂鸣器发出声音,所以增加了一个三极管来增加通过蜂鸣器的电流,见下方原理图。 蜂鸣器的正极性的一端联接到5V 电源上面,另一端联接到三极管的集电极,三极管的基级由单片机的P1.5管脚通过一个与非门来控制,当P1.5管脚为低时,与非门输出高电平,三极管导通,这样蜂鸣器的电流形成回路,发出声音。当P1.5管脚为高时,与非门输出低电平,三极管截止,蜂鸣器不发出声音。在这里与非门是作为非门来用的,这里采用一个非门的作用是为了防止系统上电时峰鸣器发出声音,以为系统复位以后,I/O 口输出的是高电平。 用户可以通过程序控制P1.5管脚的置低和置高来使蜂鸣器发出声音和关闭。 蜂鸣器的声音大小及音调可以通过调整P1.5管脚的置高时间及输出的波形进行控制,这一点可以在调试程序的时候来试验。 EA/ VP 31X119X218RESET 9RD 17WR 16 INT 012INT 113T014 T115P10/T 1P11/T 2P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSE N 29 ALE /P 30TXD 11RX D 10VCC 40GN D 20U1 SST 89E554RC C7 30P C630P XA L1 11.0592M HZ RX D TXD VCC GN D 23456789 1PR1 5.1K VCC P1.0P1.1P1.2P1.3 P1.5P1.6P1.7RST INT 0 VCC VCC P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P1.4IO1IO023456789 1PR3 5.1K F_R P2.7H_R P2.6P2.6

蜂鸣器音乐程序

#include sbit speaker = P1^7; unsigned char timer0h, timer0l, time; //------------------ //单片机晶振采用11.0592MHz // 频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据code unsigned char FREQH[1] = { 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC.//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音1234567 // 频率-半周期数据表低八位 code unsigned char FREQL[ 0] = { 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音1234567 //-------------------------------------- code unsigned char sszymmh[ 2] = { Void main{ t=0;t++;t<1000 }//-------------------------------------- void t0int() interrupt 1 //T0中断程序,控制发音的音调 { TR0 = 0; //先关闭T0 speaker = !speaker; //输出方波, 发音 TH0 = timer0h; //下次的中断时间, 这个时间, 控制音调高低 TL0 = timer0l; TR0 = 1; //启动T0 } //-------------------------------------- void delay(unsigned char t) //延时程序,控制发音的时间长度 { unsigned char t1; unsigned long t2; for(t1 = 0; t1 < t; t.2++) //双重循环, 共延时t个半拍 for(t2 = 0; t2 <12000; t3++); //延时期间, 可进入T0中断去发音 TR0 = 0; //关闭T0, 停止发音 } //-------------------------------------- void song() //演奏一个音符

51单片机蜂鸣器播放音乐代码(生日快乐 两只蝴蝶 祝你平安)

/*生日快乐歌曲*/ #include #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}; uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); } void PlayMusic() { uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG 为拍子长度 for(j=0;j

光敏蜂鸣器的设计

苏州市职业大学课程设计说明书 名称光敏蜂鸣器 2012年6月11 日至2012 年6月15日共1 周 院系电子信息工程系 班级10电子5(对口) 姓名 学号 系主任张红兵 教研室主任陆春妹 指导教师吕莉萍

苏州市职业大学课程设计任务书 课程名称:检测与变换技术 起讫时间:2012.6.11---2012.6.15 院系:电子信息工程系 班级:10电子5(对口) 指导教师:吕莉萍 系主任:张红兵

目录 第1章绪论 (1) 1.1光敏蜂鸣器的作用 (1) 1.2 光敏蜂鸣器的构成 (1) 1.3光敏蜂鸣器的工作原理 (1) 第2章系统设计方案 (2) 2.1 光敏蜂鸣器系统设计方案 (2) 2.2 工作原理 (2) 2.3 电路图 (2) 第3章元器件介绍 (3) 3.1 555定时器 (3) 3.2 光敏电阻 (5) 3.3 蜂鸣器 (7) 第4章光敏蜂鸣器的制作与调试 (8) 4.1 光敏蜂鸣器的仿真 (8) 4.2 光敏蜂鸣器的具体制作 (9) 4.3光敏蜂鸣器的调试 (9) 第5章系统分析 (11) 5.1 周期的测量 (11) 5.2 误差的来源 (11) 第6章实验总结(心得体会) (12) 参考文献 (12)

第1章绪论 1.1光敏蜂鸣器的作用 如果用手挡着实验板,扬声器就会随着手挡着实验板时光照强度的变化,发出多变的声音。 1.2 光敏蜂鸣器的构成 光敏蜂鸣器主要是由分压电路、比较器、RS触发器、放电电路等组成。 分压电路主要是由电阻的串来把电压源分压,以取得合适的电压给下一级电路。比较器则对前级输送的电压进行比较,比较的值作为RS触发器的输入信号。RS触发器是一个具有记忆功能的二进制信息存储器件,是构成多种时序电路的最基本逻辑单元。它的输出则用来确定9013的工作状态。 1.3光敏蜂鸣器的工作原理 光敏蜂鸣器电路可以在不同光照下,可以在不同光照下,发出忽高忽低,变幻的声音。电路中由555定时器和电阻、光敏电阻、电容等组成多谐振荡器,光敏电阻是利用光致导电的特性,它的阻值会随照射光的强度而变化,当光照射时阻值小,光照弱时阻值大。本电路利用这一光敏特性,来改变振荡器的充放电的时间的常数,从而改变多谐振荡器的频率,本电路的振荡频率为: t=0.7(R1+2RG)C1 f=1/t 555定时器输出的可变频率信号经过限流电阻后,驱动三极管VT1带动扬声器发出多变的声音。

单片机课程设计报告利用蜂鸣器播放音乐

单片机课程设计报告利用蜂鸣器播放 音乐

课程设计:电子设计 题目名称:音乐流水灯 姓名:戴锦超 学号:08123447 班级:信科12-3班 完成时间: 10月23日 1设计的任务 设计内容:动手焊接一个51单片机

设计目标:利用单片机上的蜂鸣器以及二极管实现音乐播放以及根据音乐的节奏而规律性闪亮的二极管。而且经过程序调节音乐节奏的快慢。 2 设计的过程 2.1 基本结构 1.STC89C52RC 在本次的试验中采用了STC89C52RC单片机,STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K 字节。 (STC89C52RC引脚图)

STC89C52RC单片机的工作模式: (1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序 (2)空闲模式:典型功耗2mA (3)正常工作模式:典型功耗4Ma~7mA (4)唤醒,适用于水表、气表等电池供电系统及便携设备 2.蜂鸣器及其工作原理: 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流经过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。本实验采用的是电磁式蜂鸣器。 蜂鸣器按其是否带有信号源又分为有源和无源两种类

实验十蜂鸣器应用

实验十蜂鸣器应用 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。本单片机实验板通过一个三极管9015来放大驱动蜂鸣器。 蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻后由单片机的P2.1引脚控制,当P2.1输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声;当P2.1输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P2.1脚的电平来使蜂鸣器发出声音和关闭。 程序中改变单片机P2.1引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P2.1输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。 (1) 实验任务 产生500Hz的音频信号驱动扬声器,作报警信号。 学习板默认是没有接通蜂鸣器,需要用跳线帽短接SPcon。本实验需要产生一个500Hz的报警声,即可以通过计算1S内开关蜂鸣器500次。 (2) 实验电路 (3)实验目的: ●掌握蜂鸣器的使用 ●学会编写软件延时函数 (4)实验步骤 ●分析设计内容,设计软硬件设计方法 ●编写C语言代码 ●编译代码 ●下载可执行文件 ●硬件调试 ●观察现象

/**************************头文件***********************/ #include"regx52.h" #include #define uchar unsigned char #define uint unsigned int sbit buzzer=P2^1; //控制蜂鸣器 uchar i; //全局变量 /*********************毫秒级延时函数*****************/ void delayms(uint ms) { uchar b; while(ms--) { for(b=0;b<125;b++); } } /***********************主函数***********************/ main() { while(1) //大循环 { buzzer=~buzzer; delayms(1); //延时1MS } } (7)现象 500HZ音调发生。 (8)扩展任务 自行改变频率,例如可以播放一首简短的歌曲。

蜂鸣器的介绍

蜂鸣器的介绍 推荐 一)蜂鸣器的介绍 1.蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 2.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 3.蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。 (二)蜂鸣器的结构原理 1.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 一、常规电磁蜂鸣器产品是如何工作的? 无源电磁蜂鸣器工作原理是:交流信号通过绕在支架上的线包在支架的芯柱上产生一交变的磁通,交变的磁通和磁环恒定磁通进行叠加,使钼片以给定的交流信号频率振动并配合共振腔发声。产品的整个频率和声压的响应曲线与间隙值、钼片的固有振动频率(可粗略折射为小钼片的厚度)、外壳(亥姆霍兹共振声腔)频率、磁环的磁强漆包线的线径有直接关系。 二、常规电磁无源蜂鸣器产品由哪些材料组成? 三、常规压电蜂鸣器产品是如何工作的?

蜂鸣器响声三种音乐

两只蝴蝶音乐编程程序: #include // 这是单片机音乐代码生成器生成的代码 #define uchar unsigned char sbit beepIO=P3^6; // 输出为P1.5 可以修改成其它IO 口 uchar m,n; uchar code T[49][2]={{0,0}, {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03 },{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B}, {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x8 1},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05}, {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0 },{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02}, {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{ 0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81} }; uchar code music[][2]={{0,4}, {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19 ,4},{16,4},{19,4},{14,24}, {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19 ,4},{16,4},{19,4},{21,24}, {23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19 ,4},{16,4},{19,4},{14,24}, {23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16 ,4},{16,2},{19,2},{19,24},{0,20}, {26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4} ,{28,8},{28,12},{16,4},{23,4},{21,4}, {21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{ 30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16}, {0xFF,0xFF}}; void delay(uchar p) { uchar i,j; for(;p>0;p--) for(i=181;i>0;i--) for(j=181;j>0;j--);

音乐蜂鸣器程序

///////////////////////////////////////////////////////////////////// //***https://www.doczj.com/doc/845925090.html,/view/18a53648f7ec4afe04a1df63.html///////////////////////// //////////////////////////////////////////// #include #include "SoundPlay.h" void Delay1ms(unsigned int count) { unsigned int i,j; for(i=0;i

单片机驱动蜂鸣器音乐生日快乐的播放程序

;音乐生日快乐的播放 ;P1.6是喇叭输出端口,用杜邦线连接到J42插针B1针脚,喇叭即播放音乐numtim equ 20h gewei equ 21h shiwei equ 22h scanled equ 23h org 000h jmp start org 00bh jmp tim0 org 100h start:; JB P3.7,$ ;检测播放按键是否按下 mov tmod,#00000001b mov ie,#10000010b mov numtim,#01h start0:mov 30h,#00h next:mov a,30h mov dptr,#table movc a,@a+dptr mov r2,a jz end0 anl a,#0fh mov r5,a mov a,r2 swap a anl a,#0fh jnz sing clr tr0 jmp d1 sing: dec a mov 22h,a rl a mov dptr,#table1 movc a,@a+dptr mov th0,a mov 21h,a mov a,22h rl a inc a movc a,@a+dptr mov tl0,a mov 20h,a

setb tr0 d1:lcall delay inc 30h jmp next end0:clr tr0 jmp start0 tim0:push acc push psw mov tl0,20h mov th0,21h cpl p1.6 ;由该口输出音频数据 pop psw pop acc reti delay: mov r7,#02h d2: mov r4,#187 d3: mov r3,#248 djnz r3,$ djnz r4,d3 djnz r7,d2 djnz r5,delay ret table1: ;音乐码表dw 64260,64400,64524,64580 dw 64684,64777,64820,64898 dw 64968,65030,65058,65110 dw 65157,65178,65217 table:db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h db 82h,01h,81h,0f4h,0d4h db 0b4h,0a4h,94h db 0e2h,01h,0e1h,0d4h,0b4h db 0c4h,0b4h,04h db 82h,01h,81h,94h,84h db 0b4h,0a4h,04h db 82h,01h,81h,94h,84h db 0c4h,0b4h,04h

蜂鸣器音乐工具

51单片机蜂鸣器音乐简谱转换工具-输入简谱就能自动生成音乐程序的工具Music Encode 2013-12-07 14:29:35| 分类:51单片机编程| 标签:|举报|字号大中小订阅 相信您在作蜂鸣器发声实验时肯定为复杂的频率与音调之间的转换而伤脑筋,这里向大家介绍一款工具可以大大简化转换操作,只需要输入简谱就能自动生成音乐播放程序代码。 以下此程序的主界面: 程序范例可以点主界面上的“关于”按钮后就能找到,但是代码也不全,需要加入对音乐程序的调用代码,其它范例里也写的很清楚了,只需要调用Play函数就行了,其调用格式如下: Play(乐曲名,调号,升降八度,演奏速度); 经过实践,此函数的的后三个参数分别设为0,2和350时演奏出的音乐比较符合“原味”,下面给出本站的入门型51实验板结合此工具作的音乐程序: //51单片机播放音乐库文件 /************************************************************************** SOUND PLAY FOR 51MCU COPYRIGHT (c) 2005 BY JJJ. -- ALL RIGHTS RESERVED --

Created: 2005/5/16 Modified: NO Revision: 1.0 *******************************************************************************/ /*说明************************************************************************** 曲谱存贮格式unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important) 音高由三位数字组成: 个位是表示1~7 这七个音符 十位是表示音符所在的音区:1-低音,2-中音,3-高音; 百位表示这个音符是否要升半音: 0-不升,1-升半音。 音长最多由三位数字组成: 个位表示音符的时值,其对应关系是: |数值(n): |0 |1 |2 |3 | 4 | 5 | 6 |几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n 十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音 百位是符点位: 0-无符点,1-有符点 调用演奏子程序的格式 Play(乐曲名,调号,升降八度,演奏速度); |乐曲名: 要播放的乐曲指针,结尾以(0,0)结束; |调号(0-11) : 是指乐曲升多少个半音演奏; |升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度; |演奏速度(1-12000): 值越大速度越快; ***************************************************************************/ #ifndef __SOUNDPLAY_H_REVISION_FIRST__ #define __SOUNDPLAY_H_REVISION_FIRST__ #include //************************************************************************** #define SYSTEM_OSC 11059200//12000000 //定义晶振频率12000000HZ #define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔 sbitBeepIO = P3^5; //定义输出管脚 unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表 unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在频率表中的位置 unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 }; unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存 //************************************************************************** void InitialSound(void) { BeepIO = 1; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值(10ms的初装值) Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; // 计算TH1应装入的初值 TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD |= 0x11; ET0 = 1; ET1 = 0; TR0 = 0;

相关主题
文本预览
相关文档 最新文档