wang1jin带您从零学单片机(蜂鸣器)

合集下载

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程

单片机蜂鸣器工作原理单片机驱动蜂鸣器原理与编程蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

下面是电电磁式蜂鸣器实物图:磁式蜂鸣器的外形图片及结构图。

电磁式蜂鸣器结构示意图:图1电磁式蜂鸣器内部构成:1.防水贴纸2.线轴3.线圈4.磁铁图25.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引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理

单片机蜂鸣器电路原理咱先来说说蜂鸣器是个啥。

蜂鸣器呀,就像是一个小小的音乐精灵,能发出各种声音。

它有两种类型哦,一种是有源蜂鸣器,一种是无源蜂鸣器。

有源蜂鸣器呢,就像是一个自带电池的小喇叭(哈哈,当然不是真的带电池啦,就是个比喻),只要给它通上电,它就能自己欢快地唱歌啦,发出固定频率的声音。

无源蜂鸣器就有点像个小懒虫,你得给它特定频率的信号,它才肯发出声音,就像你得给它个特定的指令,它才知道要怎么唱歌。

那单片机和蜂鸣器是怎么凑到一块儿的呢?单片机就像是一个超级大脑,它可以控制很多东西,蜂鸣器就是它控制的小跟班之一。

在电路里,单片机要给蜂鸣器发送信号。

比如说,对于无源蜂鸣器,单片机要通过一个引脚来发送方波信号。

这个方波信号的频率就决定了蜂鸣器发出声音的高低。

就像你唱歌的时候,高音和低音是不一样的频率,蜂鸣器也是这样。

如果单片机发送的频率高,蜂鸣器就发出比较尖锐的声音;频率低呢,声音就比较低沉。

咱们再看看电路连接的部分。

一般来说,会有一个限流电阻。

这个限流电阻可重要啦,就像是一个交通警察,控制着电流的大小。

如果没有这个限流电阻,电流就可能像脱缰的野马,一下子冲进蜂鸣器里,把蜂鸣器给弄坏了。

而且,电路的连接方式也有讲究呢。

要确保连接正确,就像拼图一样,每一块都要放在正确的位置。

如果接错了,蜂鸣器可能就不响了,或者发出一些奇怪的声音,就像一个人唱歌跑调跑得十万八千里。

还有哦,电源的选择也很关键。

电源就像是蜂鸣器的能量源泉。

如果电源电压不合适,蜂鸣器也不能好好工作。

就像你人要是没吃饱饭,就没力气干活一样,蜂鸣器没有合适的电源,也没力气发出好听的声音。

当我们在程序里控制蜂鸣器的时候,那更是像在指挥一场小音乐会。

我们可以让蜂鸣器发出简单的滴滴声,就像在给我们发送简单的信号,比如说报警或者提示。

也可以通过巧妙的编程,让蜂鸣器演奏出一小段旋律呢。

想象一下,一个小小的单片机和蜂鸣器组合,就能演奏出像小星星这样的简单曲子,是不是超级酷?这就像是我们用魔法棒(其实就是代码啦)指挥着蜂鸣器这个小音乐家。

51单片机项目教程项目 5 蜂鸣器实验

51单片机项目教程项目 5  蜂鸣器实验

图5- 9蜂鸣器实物结果
当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和 RXD脚分别用于发送和接收数据。
5.2技术准备
方式1发送时,数据位由TXD端输出,发送一帧信息为10位:1位起始 位0,8位数据位(先低位)和1位停止位1。当CPU执行一条数据写 SBUF的指令,就启动发送。发送开始时,内部发送控制信号变为有 效,将起始位向TXD脚(P3.0)输出,此后每经过一个TX时钟周期, 便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部 发送完毕后,中断标志位TI置1。 方式1接收时(REN = 1),数据从RXD(P3.1)引脚输入。当检测到 起始位的负跳变,则开始接收。当一帧数据接收完毕后,同时满足以 下两个条件,接收才有效。 (1)RI = 0,即上一帧数据接收完成时,RI = 1发出的中断请求已被 响应,SBUF中的数据已被取走,说明“接收SBUF”已空。 (2)SM2 = 0或收到的停止位 = 1(方式1时,停止位已进入RB8), 则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标 志RI置“1”。
5.2技术准备
5.2.2 了解实验板蜂鸣器电路
图5- 3蜂鸣器电路
5.2技术准备
5.2.3 蜂鸣器驱动电路
蜂鸣器驱动电路如图5-4所示。
图5- 4蜂鸣器驱动电路
5.2技术准备
5.2.4串行口的结构
单片机串口结构如图5-5所示。有两个物理上独立的接收、发送缓冲器 SBUF(属于特殊功能寄存器),可同时发送、接收数据。控制寄存器共 有两个:特殊功能寄存器SCON和PCON。发送和接收引脚分别是TXD (P3.0)和RXD(P3.1)。
SM0 0 0 1 1 SM1 0 1 0 1 工作 方式 0 1 2 3 功能简介 移位寄存器 8位UART 9位UART 9位UART 比特率 OSC/12 可变 OSC/32或 OSC/64 可变

51单片机通过按键控制蜂鸣器发生详解

51单片机通过按键控制蜂鸣器发生详解

单片机开发报告院系:电子工程学院专业:自动化班级:自动化1401学号:姓名:赵越指导老师:刘星光2018年01 月04 日一.系统任务按键控制蜂鸣器发声二.电路原理图三.程序设计内容“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。

使用无源蜂鸣器输出7个基本音阶声音是由物体振动所产生的。

只是由于物体的材料以及振幅、频率不同,而产生不同的声音。

声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。

五.汇编程序ORG 0000HAJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0F0H 12M晶振,形成10毫秒中断RETIORG 001BHLJMP INTT1 ;跳转到T1中断服务程序START: MOV DPTR,#00H ;初始化程序MOV A,#00HOBUF1 EQU 30HOBUF2 EQU 31HOBUF3 EQU 32HOBUF4 EQU 33HFLAGB BIT 00HSTOPB BIT 01HMOV SP,#50HMOV TH0,#0D8HMOV TL0,#0F0HMOV TMOD,#21HMOV TH1,#09HMOV TL1,#09HMOV IE,#8AHAJMP LOOPLOOP: JNB P3.2,MUSIC0JNB P3.1,MAINAJMP LOOPMAIN:JB P3.1,MAIN ;检测p3.1按钮LCALL YS10M ;延时去抖动JB P3.1,MAINSETB TR1 ;按钮有效MOV OBUF1,#00HMOV OBUF2,#00HMOV OBUF3,#00HMOV OBUF4,#00HCLR FLAGBCLR STOPBJNB STOPB,$AJMP START ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序MOV R6,#20MOV R7,#100DJNZ R7,$DJNZ R6,D1RETTING: AJMP STARTINTT1: ;定时器T1中断服务程序INC OBUF3 ;中断服务程序中发出一声“叮咚”响声MOV A,OBUF3CJNE A,#100,NEXTMOV OBUF3,#00HINC OBUF4MOV A,OBUF4CJNE A,#20,NEXTMOV OBUF4,#00HJB FLAGB,PGSTPCPL FLAGBAJMP NEXTPGSTP:SETB STOPBCLR TR1LJMP INT0RETJB FLAGB,SOU2INC OBUF2MOV A,OBUF2CJNE A,#04H,INT0RETMOV OBUF2,#00HCPL P1.5LJMP INT0RETSOU2:INC OBUF1MOV A,OBUF1CJNE A,#05H,INT0RETMOV OBUF1,#00HCPL P1.5INT0RET:RETIMUSIC0: JB p3.2,MUSIC0LCALL YS10MJB p3.2,MUSIC0NOPMOV DPTR,#DAT 表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0 MAIN2: JNB P3.3,TINGCLR AMOVC A,@A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,@A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL P1.5MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRINC BLJMP MAIN2MUSIC3: ;休止100毫秒NOPCLR TR0MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MAIN2END0:NOPMOV R2,#0FFH ;歌曲结束,延时MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6CLR TR0LJMP LOOPDEL:NOPDEL3:MOV R4,#03HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETDENG1: MOV R3,#64HDJNZ R3,$AJMP MAINDAT:DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00hEND六、程序下载及调试步骤:1.点击translate 按钮预编译2.点击build 按钮编译3.点击rebuild 按钮编译所有目标4.打开普中烧录软件四.程序流程图。

【傻瓜51单片机讲义】第11课蜂鸣器演奏继电器驱动实验教学.ppt

【傻瓜51单片机讲义】第11课蜂鸣器演奏继电器驱动实验教学.ppt

1.2 三极管的输出特性曲线
1.3 三极管工作区的判断
2. 继电器驱动电路
2.2 续流二极管

在三极管截止的瞬间,由于线圈中的电流不能突 变为零,继电器线圈两端会产生一个较高电压的 感应电动势,线圈产生的感应电动势则可以通过 二极管IN4148释放,从而保护了三极管免被击穿, 也消除了感应电动势对其他电路的干扰,这就是
二极管D11的保护作。
继电器驱动实验验证
3. 蜂鸣器工作原理

3.1 常用蜂鸣器分类
1.有源蜂鸣器,内部含有振荡电路。通过电流
就响。响声不变。
2.无源蜂鸣器,内部没有振荡电路。需要用方
波来驱动。
3.2 PNP 三极管应用电路
4. 蜂鸣程序分析和实验演示

蜂鸣器20Hz~20KHz蜂鸣程序分析 蜂鸣器20Hz~20KHz蜂鸣实验演示。
一气呵成学51
姜老师
主 讲
第11课 蜂鸣器继电器教学实验
1.
三极管工作原理。
2.
3. 4.
继电器驱动电路分析。
蜂鸣器工作原理。 实际操作,验证程序。
1. 三极管工作原理

1.1 三极管常用的两种用途:
1.数字电路中 开关管 工作在截止区和饱和区。 2.模拟电路中 放大管 工作在放大区。


蜂鸣器演奏歌曲程序。
蜂鸣器演奏歌曲实验演示。
一气呵成学51

51单片机驱动无源蜂鸣器

51单片机驱动无源蜂鸣器

51单片机驱动无源蜂鸣器在学习过程中遇到如下例题:8 个发光管由上至下间隔1s 流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

流水灯的程序相对我个人来说比较简单,但是蜂鸣器有些难度,正常给I/0 口一个信号,蜂鸣器既然不响,后经查证是无源蜂鸣器;无源的蜂鸣器,就要通过IO 口输出振荡信号来驱动蜂鸣器蜂鸣器简介:蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;而两种蜂鸣器又分为有源蜂鸣器和无源蜂鸣器,这里的源特指振荡源;有源蜂鸣器直接加电就可以响起,无源蜂鸣器需要我们给提供振荡源。

理想的振荡源为一定频率的方波。

由于系统采用了无源蜂鸣器,所以需要我们通过编程来控制I/0 口的翻转来产生一定频率的方波信号。

本文采用默认频率0.5KHZ 的标准方波。

可以算出周期T = 2ms 脉宽t = 1ms,因此我们可以通过简单的延时函数延时1ms。

然后控制P3.7 口的电平高低产生0.5KHZ 的方波信号;本程序只是通过简单延时达到驱动蜂鸣器的效果。

#include sbit buzzer = P1 ;void delayms(unsigned int xms)//延时函数,延时xms{unsigned int i , j;for(i = 0; i#include#define uint unsigned int#define uchar unsigned charsbit buzzer=P1 ;sbitD1=P1;void delay(uint z)//延时1ms{uint x,y;for(x=z;x>0;x--){for(y=0;y<114;y++){}}}fasheng() //发声子程序{unsigned int a,x;for (a=0;a<456;a++){buzzer=!buzzer;for(x=0;x<45;x++); //45 为蜂鸣器发声频率}}void main(){while (1){D1=0;fasheng();D1=1;delay(200);}}tips:感谢大家的阅读,本文由我司收集整编。

从零开始学单片机(八)蜂鸣器唱歌

从零开始学单片机(八)蜂鸣器唱歌

1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4, 5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4, 5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4, 1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4 }; //定时器计时初值,高八位,代表不同音符的频率 code unsigned char FREQH[]={ 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;
delay(duration); }
{ unsigned int i; unsigned char j=80; for(i=0; i while(j--); TR0=0; } void song() { TH0 = byteTH0; TL0 = byteT0L; TR0 = 1;
ET0=1; while(1) { step=0; while(step<126) { index = music[step] + 7 * music[step+1] - 1; byteTH0 = FREQH[index]; byteT0L = FREQL[index]; duration = music[step+2]; step += 3; song();

51单片机蜂鸣器代码理解

51单片机蜂鸣器代码理解

51单片机蜂鸣器代码理解1.引言1.1 概述概述:蜂鸣器是一种广泛应用于电子设备中的声音输出装置,它通过控制某个频率的电信号使蜂鸣器发出特定的声音。

而51单片机,则是一种常见的单片机芯片,具有广泛的应用领域。

本文将主要探讨51单片机蜂鸣器的代码理解和应用。

通过对其基本原理的概述以及相关代码的解析,希望读者能够深入理解51单片机蜂鸣器的工作原理和实现方式。

在第二部分中,我们将介绍单片机蜂鸣器的基本原理。

包括如何通过单片机控制蜂鸣器的电信号频率和时长,从而实现不同的声音效果。

接着,在第二点中,我们将详细解析51单片机蜂鸣器的代码。

通过对代码的分析,读者可以了解到如何使用51单片机的引脚功能和定时器功能来控制蜂鸣器。

最后,在结论部分,我们将对所述内容进行总结,并展望51单片机蜂鸣器在未来的应用前景。

蜂鸣器作为一种重要的声音输出装置,具有广泛的应用前景,可以应用于报警系统、提醒装置等领域。

通过本文的阅读,读者将能够全面了解51单片机蜂鸣器的工作原理和代码实现方式,为相关领域的应用开发提供参考和指导。

让我们开始探索吧!1.2 文章结构文章结构的部分主要介绍了本文的组织和分类方式,以帮助读者更好地理解文章的内容和思路。

本文按照以下结构进行组织:1. 引言部分:介绍了文章的概述、结构和目的。

通过引言部分,读者可以初步了解到本文的内容和主题,并对文章的结构和目的有一个整体的认识。

2. 正文部分:主要分为两个小节,分别是"单片机蜂鸣器的基本原理"和"51单片机蜂鸣器代码解析"。

2.1 单片机蜂鸣器的基本原理:该部分将详细介绍单片机蜂鸣器的基本工作原理,包括蜂鸣器的构成和工作原理,以及单片机如何控制蜂鸣器发出指定的声音。

2.2 51单片机蜂鸣器代码解析:该部分将对51单片机蜂鸣器的代码进行解析,包括如何初始化引脚、设置定时器和中断等相关代码。

通过对代码的逐行解析和说明,读者可以更加深入地理解代码的功能和实现原理。

51单片机蜂鸣器的参数

51单片机蜂鸣器的参数

51单片机蜂鸣器的参数1.引言蜂鸣器是一种常见的电子元件,可发出具有较高频率的声音信号。

在51单片机中,蜂鸣器被广泛应用于各类电子产品中,如报警系统、计时器等。

本文将详细介绍51单片机蜂鸣器的参数及其相关知识。

2.蜂鸣器的工作原理蜂鸣器是一种电声转换器,它将电信号转换为声音信号。

在使用51单片机控制蜂鸣器时,通常使用IO口输出高低电平信号控制蜂鸣器的开关状态,进而产生不同频率的声音。

3.蜂鸣器的参数3.1工作电压蜂鸣器的工作电压范围通常为3V至5V,因此在使用51单片机控制蜂鸣器时,需要注意选择合适的电源电压,以确保蜂鸣器正常工作。

3.2频率蜂鸣器的声音频率是指每秒钟震动的次数,单位为赫兹(H z)。

在51单片机中,通过调节I O口输出的高低电平信号的时间间隔来控制蜂鸣器的频率。

一般而言,蜂鸣器的工作频率范围为2k Hz至5kH z,不同的应用场景可以选择不同的频率。

3.3声压级声压级是指蜂鸣器发出的声音的相对强度,通常以分贝(d B)为单位表示。

在使用51单片机控制蜂鸣器时,可以通过调节IO口输出的高低电平信号的幅度来控制蜂鸣器的声压级。

4.使用51单片机控制蜂鸣器4.1硬件连接在使用51单片机控制蜂鸣器之前,需要将蜂鸣器与51单片机正确连接。

通常情况下,蜂鸣器的正极连接到51单片机的I O口,负极连接到G N D端。

4.2编写程序首先,需要在程序中定义IO口控制蜂鸣器的引脚。

然后,通过设置I O口输出高低电平信号的时间间隔和幅度来控制蜂鸣器的频率和声压级。

下面是一个简单的示例程序,实现了在51单片机上通过蜂鸣器发出不同频率的声音:#i nc lu de<r eg51.h>#d ef in eB EE P_PI NP1//定义蜂鸣器控制引脚v o id de la y_ms(u nsi g ne di nt ms)//延时函数{w h il e(ms--){u n si gn ed in ti=120;//假设晶振频率为12MH zw h il e(i--);}}v o id ma in(){w h il e(1){B E EP_P IN=0;//使蜂鸣器断开d e la y_ms(500);//延时500m sB E EP_P IN=1;//使蜂鸣器闭合d e la y_ms(500);//延时500m s}}5.总结本文介绍了51单片机蜂鸣器的参数及其相关知识。

51单片机综合学习系统_蜂鸣器_继电器篇

51单片机综合学习系统_蜂鸣器_继电器篇

序号 7: 定义无符号变量 i, j;
序 号 8 ̄9: 通 过 i, j 的 自 加 嵌 套 循
环执行, 达到延时目的;
序号 12 ̄21: main 函数;
序 号 14: 进 入 主 程 序 的 while 循
环;
序号 16: 继电器吸合;
序号 17: 调用延时程序;
序号 18: 继电器释放;
序号 19: 调用延时程序。
管来驱动继电器, 继电器的开、关完全由三极管的基极电 平 进 行控 制 。当 三极 管 基
极 为 高 电 平 时 , PNP 型 三 极 管 截 止 , 继 电 器 不 工 作 ; 反 之 三 极 管 导 通 , 继 电 器 得 电
吸合。
3.硬件电路
继电器实验相关原理图见图 5。
4.程序设计
01 # include <reg51.h>
02
03 sbit R ELAY = P1^3;
04
05 void Delay()
06 {
07 unsigned char i,j;
08 for(i=0;i<255;i++)
09 for(j=0;j<255;j++);
10 }
11
12 void main()
13 {
14
while(1)
15

16
R ELAY = 0;
3.硬件电路
虽然单片机对蜂鸣器的控制和对
LED 的 控 制 是 一 样 的 , 但 硬 件 电 路 却
有所不同。因为蜂鸣器是感性负载, 一
般 不 建 议 用 单 片 机 的 I/ O 口 直 接 对 其
进行操作, 最好是加一只驱动三极管。
在要求较高的场合, 还要加上一只反相

51单片机蜂鸣器播放音乐代码

51单片机蜂鸣器播放音乐代码

/*生日快乐歌曲*/#include <>#define uint unsigned int#define uchar unsigned charsbit 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<SONG_LONG[i]*20;j++){beep=~beep;//SONG_TONE 延时表决定了每个音符的频率for(k=0;k<SONG_TONE[i]/3;k++);}DelayMS(10);i++;}}void main(){beep=0;while(1){PlayMusic(); //播放生日快乐DelayMS(500); //播放完后暂停一段时间}}两只蝴蝶:#include <> // 这是单片机音乐代码生成器生成的代码#define uchar unsigned charsbit beepIO=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},{0x FA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B}, {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0x FD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05}, {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0x FE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02}, {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0x FF,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,1 6},{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--);}void pause(){uchar i,j;for(i=150;i>0;i--)for(j=150;j>0;j--);}void T0_int() interrupt 1{beepIO=!beepIO;TH0=T[m][0]; TL0=T[m][1];}void main(){uchar i=0;TMOD=0x01; EA=1; ET0=1;while(1){m=music[i][0];n=music[i][1];if(m==0x00){TR0=0;delay(n);i++;}else if(m==0xFF){TR0=0;delay(30);i=0;}else if(m==music[i+1][0]){TR0=1;delay(n);TR0=0;pause();i++;}else{TR0=1;delay(n);i++;}}}祝你平安:#include ""unsigned char Count;sbit _Speak =P1^5 ;unsigned char code SONG[] ={ //祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30, 0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c, 0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26, 0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26, 0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b, 0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40, 0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26, 0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20, 0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30, 0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b, 0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30, 0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20, 0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};void Time0_Init(){TMOD = 0x01;IE = 0x82;TH0 = 0xD8;TL0 = 0xEF; //12MZ晶振,10ms}void Time0_Int() interrupt 1{TH0 = 0xD8;TL0 = 0xEF;Count++; //长度加1}/*-------------------------------------------------功能:1MS延时子程序-------------------------------------------------*/void Delay_xMs(unsigned int x){unsigned int i,j;for( i =0;i < x;i++ ){for( j =0;j<3;j++ );}}void Play_Song(unsigned char i){unsigned char Temp1,Temp2;unsigned int Addr;Count = 0; //中断计数器清0Addr = i * 217;while(1){Temp1 = SONG[Addr++];if ( Temp1 == 0xFF ) //休止符{TR0 = 0;Delay_xMs(100);}else if ( Temp1 == 0x00 ) //歌曲结束符{return;}else{Temp2 = SONG[Addr++];TR0 = 1;while(1){_Speak = ~_Speak;Delay_xMs(Temp1);if ( Temp2 == Count ){Count = 0;break;}}}}}/*-------------------------------------------------功能:主程序-------------------------------------------------*/ void main(){Time0_Init(); //定时器0中断初始化while(1){Play_Song(0); //播放}}。

单片机学习(四)蜂鸣器和独立按键的使用

单片机学习(四)蜂鸣器和独立按键的使用

单⽚机学习(四)蜂鸣器和独⽴按键的使⽤⽬录蜂鸣器两种蜂鸣器的介绍有源蜂鸣器⼀般是输⼊⼀个电流或电压即可直接驱动⼯作,⽽⽆源蜂鸣器则需要输⼊脉冲信号才可以进⾏⼯作。

在51单⽚机开发板上的即为⽆源蜂鸣器。

蜂鸣器相关电路图可以看出,信号是通过P15传递到ULN2003D芯⽚后进⽽传递到芯⽚的OUT5(即BEEP端⼝)再传递到蜂鸣器中的,其中ULN2003D芯⽚起着电流放⼤的作⽤。

控制代码⾸先我们先获得控制蜂鸣器的引脚,从电路图可以看出是P15,所以:sbit BEEP= P1^5;因为这是⽆源蜂鸣器,所以我们需要给它提供脉冲信号输⼊才能使它⼯作。

⽽当BEEP为0时有电流,BEEP为1时⽆电流,所以我们需要循环改变BEEP的值,主函数代码如下所⽰:int main() {while (1){BEEP = ~BEEP;deley(10);}}如果我们希望改变蜂鸣器的⾳调,只需要改变脉冲信号的频率即可,也就是while循环中deley()的参数。

我们也可以不断改变deley()中填⼊的参数来使蜂鸣器发出奇怪的声⾳ :int main() {u16 time = 10;u8 cnts = 50;u8 i;for(time=10;time<200;time++) {for(i=0;i<cnts;i++) {BEEP = ~BEEP;deley(time);}}}独⽴按键独⽴按键电路图可以看到,这4个独⽴按键都是⼀端和单⽚机的引脚(P3[0..3])相连,⽽另⼀端直接接地的。

这些按键的效果是,当按键没有按下时,它们对应的端⼝的输出是⾼电平,⽽当按键按下之后,这些端⼝的输出则变为低电平了。

因此我们可以使⽤轮询的⽅式查看这些端⼝的电平情况来检测按钮是否被按下,如果按下,则我们可以进⾏计数等控制其他元件的操作。

按键控制⼀个LED的点亮和熄灭我们希望当点击按键时,第⼀个LED点亮,⽽在此单击时则熄灭。

按照之前的思路,我们很容易就能写出对应的控制代码:sbit OneLED = P2^0; // 使⽤OneLED来控制对应的引脚的输出sbit k1 = P3^1;void keypros() {if (k1 == 0) {deley(1000); // 消抖if (k1 == 0) {OneLED = ~OneLED;}while (!k1);}}int main() {while (1) {keypros();}}重要的是keypros()函数中的内容,当我们点击第⼀个按钮时,k1的值会变为0,因此我们进⾏轮询的时候就会进⼊到keypros()函数的第⼀个if中。

单片机实验 蜂鸣器和流水灯

单片机实验 蜂鸣器和流水灯

不足之处
文章难度相对较高,基础能力低的学生难以适应该教学。
11 醉翁亭记
1.反复朗读并背诵课文,培养文言语感。
2.结合注释疏通文义,了解文本内容,掌握文本写作思路。
3.把握文章的艺术特色,理解虚词在文中的作用。
4.体会作者的思想感情,理解作者的政治理想。一、导入新课范仲淹因参与改革被贬,于庆历六年写下《岳阳楼记》,寄托自己“先天下之忧而忧,后天下之乐而乐”的政治理想。实际上,这次改革,受到贬谪的除了范仲淹和滕子京之外,还有范仲淹改革的另一位支持者——北宋大文学家、史学家欧阳修。他于庆历五年被贬谪到滁州,也就是今天的安徽省滁州市。也
明确:首先以“环滁皆山也”五字领起,将滁州的地理环境一笔勾出,点出醉翁亭坐落在群山之中,并纵观滁州全貌,鸟瞰群山环抱之景。接着作者将“镜头”全景移向局部,先写“西南诸峰,林壑尤美”,醉翁亭坐落在有最美的林壑的西南诸峰之中,视野集中到最佳处。再写琅琊山“蔚然而深秀”,点山“秀”,照应上文的“美”。又写酿泉,其名字透出了泉与酒的 关系,好泉酿好酒,好酒叫人醉。“醉翁亭”的名字便暗中透出,然后引出“醉翁亭”来。作者利用空间变幻的手法,移步换景,由远及近,为我们描绘了一幅幅山水特写。2.第二段主要写了什么?它和第一段有什么联系?明确:第二段利用时间推移,抓住朝暮及四季特点,描绘了对比鲜明的晦明变化图及四季风光图,写出了其中的“乐亦无穷”。第二段是第一段 “山水之乐”的具体化。3.第三段同样是写“乐”,但却是写的游人之乐,作者是如何写游人之乐的?明确:“滁人游”,前呼后应,扶老携幼,自由自在,热闹非凡;“太守宴”,溪深鱼肥,泉香酒洌,美味佳肴,应有尽有;“众宾欢”,投壶下棋,觥筹交错,说说笑笑,无拘无束。如此勾画了游人之乐。4.作者为什么要在第三段写游人之乐?明确:写滁人之游,

蜂鸣器电路及实验

蜂鸣器电路及实验

手把手教你学习单片机(2.2)——蜂鸣器电路及实验[原创]转贴请标明出处!前段时间写了手把手教你学习单片机的第一章和第二章的第一节。

首先看一下蜂鸣器的常用电路在本电路中,BB标号直接连接到单片机的IO口上,本开发板是连接到了P 3.3上了,由于P3口本身带弱上拉,所以此电路中不需要再接上拉电阻了。

此电路的三极管电路,就是一个(三极管)BJT反向器,当BB是低电平时,此三极管处于饱和状态,电路导通,电流流过蜂鸣器,此时蜂鸣器发声;反之,当BB是高电平时,此三极管处于截止状态,电路关断,时蜂鸣器停止发声。

蜂鸣器发声的长短和频率,完全有单片机控制导通时间,一般都是设定一段延时就可以了,长短可以自己实验。

下面给出C语言程序和汇编程序(带注释):#include <reg52.h> //调用头文件(单片机内部的寄存器定义)/******本段为硬件I/O口定义********/sbit LED0 = P0 ^ 0; //发光二极管0sbit BUZZ = P3 ^ 3; //蜂鸣器/**************************************************** 函数名称: dellay** 入口参数:h(双字节型)** 出口参数:无** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS****************************************************/void dellay(unsigned int h){while(h--); //0.01MS}/************主程序**************/main(){while(1) //单片机在此反复循环{LED0=0; //发光管0亮BUZZ=0; //蜂鸣器叫dellay(40000);LED0=1; //发光管0灭BUZZ=1; //蜂鸣器停dellay(60000);}};***********本段为硬件I/O口定义************LED0 EQU P0.0BUZZ EQU P3.3ORG 0000H ;上电后程序从这里运行 AJMP MAINORG 0100HMAIN:ORL P0,#01HCLR LED0 ;LED0发光二极管亮CLR BUZZ ;蜂鸣器叫LCALL DELAY400MSSETB LED0 ;LED0发光二极管灭 SETB BUZZ ;蜂鸣器停LCALL DELAY600MSLJMP MAINDELAY400MS: MOV R5,#40 ;延时子程序,延时约0.4秒D10: MOV R6,#20D20: MOV R7,#248DJNZ R7,$DJNZ R6,D20DJNZ R5,D10RETDELAY600MS: MOV R5,#60 ;延时子程序,延时约0.6秒D11: MOV R6,#20D21: MOV R7,#248DJNZ R7,$DJNZ R6,D21DJNZ R5,D11RETEND以前写的,请在这里打开链接:手把手教你学习单片机(2.1)——单片机控制发光二极管实验手把手教你学习单片机(第一章)——认识单片机及其如何工作我的新QQ:464976346/ahai0306/(我的博客首页)拍拍网店铺:/464976346淘宝网店:/百度网店:/shop/83eabd89bd63f95984248678 AD电子论坛的本51开发板的版块:/forum-39-1.html。

单片机教程实战2_蜂鸣器唱歌

单片机教程实战2_蜂鸣器唱歌

单片机教程实战2 蜂鸣器唱歌发布: 2009-11-04 09:01 | 作者: 平凡 | 来源: 网络 | 查看: 189次利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。

本文从单片机的基本发间实验出发,谈谈音乐程序的设计原理,并给出具体实例,以供参考。

单片机的基本发音实验我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序为:其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200HZ音频,其周期为1/200秒,即5ms。

这样,当P1.4的高电平或低电平的持续时间为2.5ms,即R3的时间常数取2500/20=125(7DH)时,就能发出200HZ 的音调。

将上述程序键入学习机,并不断修改R3的常数可以感到音调的变化。

乐曲中,每一音符对应着确定的频率,表1给出C调时各音符频率及其相应的时间常数。

读者可以根据表1所提供的常数,将其16进制代码送入R3,反复练习体会。

根据表1可以奏出音符。

仅这还不够,要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。

音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。

便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。

其它节拍与时间的对应关系见表2。

但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。

我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。

表2中也给出了各种节拍所对应的时间常数。

《单片机应用技术》课件——项目2 蜂鸣器电路的设计与控制

《单片机应用技术》课件——项目2 蜂鸣器电路的设计与控制

A.运算器,控制器
B.加法器,寄存器
C.运算器,寄存器
D.运算器,指令译码器
地址标号:
MCS-51单片机指令格式
操作码
目的操作数,源操作数 ;注释(解释)
A1A1:
M1M1: M1M2: M1M3: M1M4:
ORG LJMP ORG SETB LCALL CLR LCALL LJMP MOV MOV MOV DJNZ DJNZ DJNZ RET END
0000H A1A1 0030H P2.0 M1M1 P2.0 M1M1 A1A1 30H,#2 31H,#248 32H,#250 32H,M1M4 31H,M1M3 30H,M1M2
单片机技术与实现
项目二 蜂鸣器电路的设计与控制
项目二 蜂鸣器电路的设计与控制
任务一 单片机控制ቤተ መጻሕፍቲ ባይዱ鸣器电路的制作
任务二 单片机控制蜂鸣器功能的实现
拓展知识 单片机应用系统的开发
单片机最小系统
要使单片机工作起来,最基本的电路的构成为
1、电源电路:向单片机供电。
电源
2、时钟电路:单片机工作的时
间基准,决定单
在实际使用I/O口时,如果有输入电流要特别注意 芯片I/O口所能承受的最大值。
单片机仿真软件: protues
Proteus绘制单片机最小系统
C1
30pF
C2
30pF +5V
单片机控制蜂鸣器电路
X1
CRYSTAL FREQ=12MHz
R2
10k
C3
10uF
U1
19 XTAL1 18 XTAL2
MCS-51单片机的复位
任务二汇编程序
ORG 0000H ;伪指令, 地址指定 ,指定存放在0000H起的单元

AVR教程第十一课蜂鸣器

AVR教程第十一课蜂鸣器
推荐论坛:
动手学 AVR 单片机十一、让蜂鸣器发 出声音
CEPARK-AVR 单片机教程. 技术专家 tiankai 原创 专家技术博客地址: /space.php?uid=8160 有技术类问题欢迎去给技术专家留言. 推荐论坛: 收集人:wang1jin
{
unsigned char i;
推荐网站:
推荐论坛:
PORTE |= (1 << PE5);
//
DDRE |= (1 << PE5);
//
Delayms(500);
PORTE &= ~(1 << PE5);
//
Delayms(500);
最下面给大家介绍几个下载资料的地方: 51 学习专区: / USB 学习专区: / CAN 学习专区: AVR 学习专区: / FPGA 学习专区: / STM32 学习专区: / ARM 学习专区: / DSP 学习专区: / PIC 学习专区: / DIY 电子制作专区: / GPS 学习专区:
下图是一种比较安全的蜂鸣器驱动电路
推荐网站:
推荐论坛:
图中在蜂鸣器两端并联了一个二极管,这个二极管称为续流二极管,蜂鸣器本质 上是一个感性元件,其电流不能瞬变,因此必须有一个续流二极管提供续流。否则,在蜂鸣 器两端会产生几十伏的尖峰电压,可能损坏驱动三极管,并干扰整个电路系统的其它部分。
#include <util/delay.h>

//GCC 中的延时函数头文件
//函数声明
void Delayus(unsigned int lus);
//us 延时函数
void Delayms(unsigned int lms);

蜂鸣器简介及使用方法

蜂鸣器简介及使用方法

蜂鸣器的介绍1..蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

2..蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

蜂鸣器的结构原理1.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。

有的压电式蜂鸣器外壳上还装有发光二极管。

多谐振荡器由晶体管或集成电路构成。

当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。

在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。

2.电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。

振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

蜂鸣器的制作(1)制蜂鸣器备电磁铁M:在长约6厘米的铁螺栓上绕100圈导线,线端留下5厘米作引线,用透明胶布把线圈粘好,以免线圈松开,再用胶布把它粘在一个盒子上,电磁铁就做好了.(2)制备弹片P:从铁罐头盒上剪下一条宽约2厘米的长铁片,弯成直角,把电磁铁的一条引线接在弹片上,再用胶布把弹片紧贴在木板上.(3)用曲别针做触头Q,用书把曲别针垫高,用胶布粘牢,引出一条导线,如图连接好电路.(4)调节M与P之间的距离(通过移动盒子),使电磁铁能吸引弹片,调节触点与弹片之间的距离,使它们能恰好接触,通电后就可以听到蜂鸣声.有源蜂鸣器和无源蜂鸣器教你区分有源蜂鸣器和无源蜂鸣器现在市场上出售的一种小型蜂鸣器因其体积小(直径只有llmm)、重量轻、价格低、结构牢靠,而广泛地应用在各种需要发声的电器设备、电子制作和单片机等电路中。

有源蜂鸣器和无源蜂鸣器的外观如图a、b所示。

图:有源和无源蜂鸣器的外观a)有源b)无源从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主 讲:wang1jin
技术支持:/bbs
单片机如何输出频率
为了让单片机发出不同频率的声音,我 们采用定时中断来计算延时时间,我们只需 将定时器预置不同的定时值就可实现不同时 间的定时。那么怎样确定一个频率所对应的 定时器的定时值呢?以标准音高A为例: A的频率f=440Hz,其对应的周期为: T=1/f=1/440=2272us
主 讲:wang1jin
技术支持:/bbs
单片机如何输出频率
单片机控制蜂鸣器的波形图,通 过对端口P17循环的置位、清零来达到输出 固定频率波形,相对于A音频率440Hz图 T=2272us,那么 t=T/2=2272/2=1136us 所以,我们只要在程序中将P17置为高电 平,延时1136us,再置为低电平,延时 1136us,如此循环,就可以得到440Hz频 率的声音。 这个延时,可以用定时器中断来做,假设单片机晶振频率为12MHz,以 定时器工作方式1来做定时中断,可以得到定时器计数器初值为 TH = (65536 – 1136 ) /256 =0xFB TL = (65536 – 1136 )%256 =0x90
主 讲:wang1jin
技术支持:/bbs
音乐中的音调
以1—i八音区为例,12个半音是: 1—#1、#1—2、2—#2、#2—3、3— 4、4—#4,#4—5、5一#5、#5—6、 6—#6、#6—7、7—i。这12个音阶的分 度基本上是以对数关系来划分的。如果我 们只要知道了这十二个音符的音高,也就 是其基本音调的频率,我们就可根据倍频 程的关系得到其他音符基本音调的频率。
主 讲:wang1jin
技术支持:/bbs
连音,顿音,符点
音乐中较为常见的还有连音、顿音、符 点等,连音就是乐谱上用连线连起来的 音,它是用连线来标记的,表示连线内不 同音高的音要奏的连贯,即中间不需要停 顿。顿音是用三角符标记在音符的上面, 在演奏或表演上要表现得短促而又轻巧有 弹性。符点就是记在音符右边的小圆点, 表示增加前面音符时值的一半,带符点的 音符叫符点音符。
主 讲:wang1jin
技术支持:/bbs
音乐基础
其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。 1 、2的时长为四分音符的一半,即为八分音符长,3、4的 时长为八分音符的一半,即为十六分音符长,5的时长为四 分音符的一半,即为八分音符长,6的时长为四分音符长。 那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说 明,一拍的时长大约为400~500ms 。我们以一拍的时长为 400ms为例,则当以四分音符为节拍时,四分音符的时长就 为400ms,八分音符的时长就为200ms,十六分音符的时长 就为100ms。
主 讲:wang1jin
技术支持:/bbs
音符频率及定时器初值对照表
主 讲:wang1jin
技术支持:/bbs
单片机频率音频计算方法 从上图中可以看出,高、中、低音的音 符频率存在倍频关系,比如1其低音频率是 262Hz,中音频率是523Hz,中音是低的2 倍频率,高音频率是1045Hz,高音又是中 音的2倍频率,所以,我们可以根据其中的 12个音符频率来推算出其它的音符频率。 这种可推算的频率关系有利于我们在程序 采用运算方法来确定音符的频率。
主 讲:wang1jin
技术支持:/bbs
音乐基础知识
A、B、C、D、E、F、G。经过声学家的研究,全世界都用这些字母来表 示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。 除了这些标准间外,还有5个半音,#1B2-#6B7。 升C调:1=#C,也就是降D调:1=BD;277(频率) 升D调:1=#D,也就是降E调:1=BE;311 升F调:1=#F,也就是降G调:1=BG;369 升G调:1=#G,也就是降A调:1=BA;415 升A调:1=#A,也就是降B调:1=BB。466,
主 讲:wang1jin
技术支持:/bbs
主 讲:wang1jin
技术支持:/bbs
实例练习1
实例练习1:4*4电子琴程序的实现。利用 WJ-V4.0音。松开按键声音即停 止。实现简单的电子琴功能。
主 讲:wang1jin
技术支持:/bbs
蜂鸣器的工作原理
蜂鸣器发声原理是电流通过电磁线圈, 使电磁线圈产生磁场来驱动振动膜发声 的,因此需要一定的电流才能驱动它,单 片机IO引脚输出的电流较小,单片机输出 的TTL电平基本上驱动不了蜂鸣器,因此需 要增加一个电流放大的电路。实验板通过 一个三极管Q1来放大驱动蜂鸣器。
主 讲:wang1jin
技术支持:/bbs
音符演奏长度控制实现
在单片机上控制一个音符唱多长可采用循环延 时的方法来实现。首先,我们确定一个基本时长 的延时程序,为了使这个时间更精确,使用定时 器来实现,设定定时器为10ms中断一次,那么, 我们需要多少延长时间就延时多少次中断。比如 说十六分音符的时长为100ms,八分音符的时长 就为200ms,那么,对于一个音符,如果它为十 六分音符,则只需产生10次中断,延时时间就刚 好是100ms,如果它为八分音符,则只需产生20 次中断,依次类推。
主 讲:wang1jin
技术支持:/bbs
音乐基础
所谓1=A,就是说,这首歌曲的“导”要 唱得同A一样高,人们也把这首歌曲叫做A 调歌曲,或叫“唱A调”。1=C,就是说,这 首歌曲的“导”要唱得同C一样高,或者说“这 歌曲唱C调”。同样是“导”,不同的调唱起来 的高低是不一样的。
主 讲:wang1jin
技术支持:/bbs
有源和无源蜂鸣器的区别
实验板中,单片机P17脚输出接Q1基极,通过 控制Q1导通或截止来控制蜂鸣器上是否有电流,从 而发出声音,要用单片机控制蜂鸣器发出不同频率的 声音,最好采用无源的蜂鸣器,如果用有源蜂鸣 器,可以会因为二种不同频率声音(有源蜂鸣器本 身固有发音频率与单片机驱动频率)互相叠加,造 成效果混乱、发音不清。 不过为了照顾初学者,我们的开发板上的是有源 的蜂鸣器.(因为有源的驱动很简单,无源的则很复杂.)
Wang1jin 带您从零学单片机
第 6 章:蜂鸣器部分
配套开发板:WJ-V4.0 AVR+51开发板
主 讲:wang1jin
技术支持:/bbs
本章目录:
Ø 蜂鸣器简介 Ø 蜂鸣器硬件结构与原理 Ø 蜂鸣器驱动方法 Ø 单片机如何输出一定频率 Ø 蜂鸣器唱歌原理 Ø 蜂鸣器小电子琴设计 Ø 蜂鸣器唱歌程序设计 Ø 课后作业
主 讲:wang1jin
技术支持:/bbs
蜂鸣器的工作原理
蜂鸣器的正极接到Q1的集电极C极上面,蜂鸣器的负 极地,三极管发射极E极接电源VCC,基级B经过限流电 阻R33后由单片机的P1.7引脚控制,当P1.7输出高电平 时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声; 当P17输出低电平时,三极管导通,这样蜂鸣器的电流形 成回路,发出声音。 因此,我们可以通过程序控制P1.7脚的电平来使蜂鸣 器发出声音和关闭。程序中改变单片机P1.7引脚输出波形 的频率,就可以调整控制蜂鸣器音调,产生各种不同音 色、音调的声音。另外,改变P1.7输出电平的高低电平占 空比,则可以控制蜂鸣器的声音大小。
主 讲:wang1jin
技术支持:/bbs
蜂鸣器的分类
蜂鸣器按其是否带有信号源又分为有源和 无源两种类型。有源蜂鸣器只需要在其供电 端加上额定直流电压,其内部的震荡器就可 以产生固定频率的信号,驱动蜂鸣器发出声 音。无源蜂鸣器可以理解成与喇叭一样,需 要在其供电端上加上高低不断变化的电信号 才可以驱动发出声音。
主 讲:wang1jin
技术支持:/bbs
音乐中的音调
在音乐中所谓“音调”,其实就是我们常 说的“音高”,实质就是频率不同的声音。音 乐中以ABCDEFG来表示音高,A音定为标 准音高,其频率f=440Hz。当两个声音信号 的频率相差一倍时,也即f2=2f1时,则称f2 比f1高一个倍频程, 在音乐中1(do)与,2 (来)与……正好相差一个倍频程,在音 乐学中称它相差一个八度音。在一个八度 音内,有12个半音。
主 讲:wang1jin
技术支持:/bbs
有源蜂鸣器的驱动方法
对于有源和无源的驱动方式,略有不 同,我们先讲解一下有源蜂鸣器的驱动方 法。有源蜂鸣器因为内含有信号源,因此 只要加上额定的工作电压就可以发出固定 频率的声音,因此,我们在实验板中,只 要将P17端口置成低电平,就可以使Q1导 通,蜂鸣器得电工作。
主 讲:wang1jin
技术支持:/bbs
音乐基础
音调的确定,我们在前面已经详细讲解过,这 里就不再重复。对于一个音符,确定了它的发音 频率后,就要确定这个音符发音要发多长时间, 也就是节拍,在一张乐谱中,我们经常会看到这 样的表达式,如1=C 、1=G…… 等等,这里 1=C、1=G表示乐谱的曲调,和我们前面所谈的 音调有很大的关联,、就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节 拍,每一小结有三拍。
主 讲:wang1jin
技术支持:/bbs
音乐基础知识
如果驱动无源蜂鸣器发出频率、持续时间不同的声 音,就可以达到单片机控制演奏歌曲的目的。一般说来, 单片机演奏音乐基本都是单音频率,因为单片机的IO端 口,只能输出高电平或低电平,相当于方波信号,它虽然 谐波很丰富,但不包含足够幅度的谐波频率,也就是说不 能象电子琴那样能奏出多种音色的声音,这也就是为什么 单片机演奏歌曲听起来声音单调的原因。 因此单片机用于演奏歌曲,只需搞清楚两个概念即 可,也就是“音调”和“节拍”。音调表示一个音符该唱的频 率,节拍表示一个音符该唱多长的时间。
主 讲:wang1jin
技术支持:/bbs
蜂鸣器的种类
蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣 器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振 动膜片及外壳等组成。接通电源后,振荡器产生的音频信号 电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁 线圈和磁铁的相互作用下,周期性地振动发声。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹 配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电 路构成,当接通电源后(1.5~15V直流工作电压),多谐 振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动 压电蜂鸣片发声。
相关文档
最新文档