实验蜂鸣器实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验8 蜂鸣器实验

(仿真部分)

1.实验任务

用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。

2.电路原理图

3.硬件连线

(1.P1.0端口用导线通过“音频放大模块”连接到喇叭SOUNDER上;

(2.把P1.7端口用导线连接到“拨动开关”K1端口上;

4.程序设计内容

(1.信号产生的方法

500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,

信号电平每500us变反1次;

5.程序框图

图4.6.2 6.汇编源程序(非中断软延时)

FLAG BIT 00H

ORG 00H

START: JB P1.7,START

JNB FLAG,NEXT

MOV R2,#200

DV: CPL P1.0

LCALL DELY500

LCALL DELY500

DJNZ R2,DV

CPL FLAG

NEXT: MOV R2,#200

DV1: CPL P1.0

LCALL DELY500

DJNZ R2,DV1

CPL FLAG

SJMP START

DELY500: MOV R7,#250

LOOP: NOP

DJNZ R7,LOOP

RET

END

7.C语言源程序(非中断软延时)

#include

#include

bit flag;

unsigned char count;

void dely500(void)

{

unsigned char i;

for(i=250;i>0;i--)

{

_nop_();

}

}

void main(void)

{

while(1)

{

if(P1_7==0)

{

for(count=200;count>0;count--)

{

P1_0=~P1_0;

dely500();

}

for(count=200;count>0;count--)

{

P1_0=~P1_0;

dely500();

dely500();

}

}

}

}

8.汇编源程序(计数方式采用中断方式)

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT0P

ORG 0013H

LJPM INT1P

MAIN: MOV SP,#60H

SETB IT0

SETB IT1

SETB IE0

SETB IE1

SETB EA

MOV R0,#00H

LOOP: MOV P1,R0

JMP LOOP

INT0P:INC R0

RETI

INT1P:DEC R0

RETI

END

9.实验要求

学会C51和ASM51两种编程工具。并尝试采用定时器实现定时。

实验8 交流蜂鸣器演奏简单乐曲

1. 实验目的

●学习蜂鸣器的基础知识

●掌握用I/O驱动中等电流负载的正确方法

●学习如何用74HC573扩展简单的并行输出端口

●进一步掌握如下基础知识:定时器、中断、I/O扩展电流驱动、蜂鸣器

●学习如何编写简单的乐曲程序

2. 实验原理

2.1蜂鸣器原理

蜂鸣器是常见的电子讯响器件,与扬声器相比,明显优势是体积很小,但缺点是低频响应很差,一般不能很好地产生200Hz以下的低频声音。按制造工艺,蜂鸣器可分为电磁式、压电式等。按功能,蜂鸣器分为有源和无源两大类,也称做直流蜂鸣器和交流蜂鸣器。对直流蜂鸣器,只要加上正向电源(可能需要限流电阻)就能发出一定频率的响声,操作简单,但是只有响与不响两种状态。而交流蜂鸣器需要输入有一定驱动能力的交流信号才能发声,发声频率即交流信号的频率,因此能够发出各种不同音调的响声,可用来演奏简单乐曲。

蜂鸣器在正常工作时,一般需要数十毫安的驱动电流,这大大超过了8051的I/O承受能力。对这种中等电流负载的驱动方法,一般可采用晶体管。图 4.21是蜂鸣器的典型驱动电路。

2.2 简单乐曲原理

假如您是一名电子产品研发工程师,如果能够在您设计的产品里加入演奏乐曲的功能,则会让消费者耳目一新,增加一个很好的卖点。利用蜂鸣器演奏简单的乐曲,具有结构简单、体积小、成本低等优势,软件处理起来也不是很复杂。

图 4.24 一段简单的乐谱

编写简单的乐曲程序,需要懂得一些简单的乐理知识。由于篇幅所限,这里不做详细讲解,如果有兴趣,请参考相关书籍或网上资料。

请看图 4.24所示的一段简单乐谱。一首乐曲可以看成是由一个个基本的音符组成。音符是乐曲的基本单元,它有两个要素:发声频率和发声时值。用两个定时器就可以完成演奏一个音符的任务,一个工作于定时中断方式,在中断服务程序里不断翻转控制蜂鸣器的I/O,以产生规定频率的响声;另一个决定演奏多久,是一个简单的延时应用。把所有音符串接起来演奏,就会形成一支动听的乐曲。在光盘例程中,名为“Sound”的子程序,可以演奏一个音符,而“Play”子程序通过不断调用“Sound”子程序来演奏整个乐曲。

在下面已经以宏定义的形式给出了低音、中音和高音“1234567”发声频率对应的定时器初值,L1~L7表示低音,M1~M7表示中音,H1~H7表示高音。

;************************************************************************** *****

;定义音名(1=G)

;L1~L7表示低音,M1~M7表示中音,H1~H7表示高音

;************************************************************************** *****

L1 EQU 0xFB68 ;391.995Hz(G1)

L2 EQU 0xFBE9 ;440Hz (A)

L3 EQU 0xFC5B ;493.883Hz(B)

L4 EQU 0xFC8F ;523.251Hz(C)

L5 EQU 0xFCEF ;587.33Hz (D)

L6 EQU 0xFD45 ;659.255Hz(E)

L7 EQU 0xFD91 ;739.989Hz

M1 EQU 0xFDB4 ;783.991Hz(G)

M2 EQU 0xFDF4 ;880Hz (a)

M3 EQU 0xFE2D ;987.767Hz(b)

M4 EQU 0xFE48 ;1046.5Hz (c)

M5 EQU 0xFE78 ;1174.66Hz(d)

M6 EQU 0xFEA3 ;1318.51Hz(e)

M7 EQU 0xFEC9 ;1479.98Hz

H1 EQU 0xFEDA ;1567.98Hz(g)

H2 EQU 0xFEFA ;1760Hz (a1)

H3 EQU 0xFF17 ;1975.53Hz(b1)

H4 EQU 0xFF24 ;2093Hz (c1)

相关文档
最新文档