当前位置:文档之家› 手把手教你使用IC单片机驱动蜂鸣器(C语言版)

手把手教你使用IC单片机驱动蜂鸣器(C语言版)

手把手教你使用 IC 单片机驱动蜂鸣器(C 语言版)
我们来回顾一下,什么是声音?记得在中学的物理课上,老师就教导我们,声音 是由震动所产生的。一定频率的震动就产生了一定频率的声音。在我们的增强型 PIC 实验板中,实验板的 RD7 口接了一个蜂鸣器,如果我们往它那里送一个高电 平,再马上送一个低电平,他就会发出滴嗒的声音。从实验板照片上,我们可以 看到一个圆形白色不干胶贴着的东西,它就是蜂鸣器,使用时,我们将其撕掉即 可。在实验板的右上部,1602 液晶屏接口下方,有一个形状如图 1 所示的部件, 叫做蜂鸣器,也就是 BUZZER,它和普通喇叭相比,最重要一个特点是只要按照 极性要求加上合适的直流电压,就可以发出固有频率的声音,因此使用起来比起 喇叭简单,所以在一些报警要求不高的场合有所使用,还有一个很常见的用法是, 当按下按键操作的时候,很多单片机构成的系统会发出声音提示,一般而言,也 主要是由它来做的,但是它不能发出语音。虽然它有自己的固有频率,但是它也 可以被加以不同频率的方波,从而编制一些简单的音乐。
{
TRISD=0X00;
le(1)
{
PORTD=0x00;
delay_ms(1000);
PORTD=0x80;
delay_ms(1000);
}
}
这个程序的核心代码其实只有二句,分别为: PORTD="数值"; delay_ms(数 值); 前面的语句已在前面的教程中讲过功能与作用,while(1)循环中,即通过 语句 PORTD="0x00"; delay_ms(1000); PORTD="0x80"; 来实现 RD7 口间断地输 出 低 电 平 和 高 电 平 , 中 间 的 delay_ms() 为 毫 秒 延 时 函 数 , 程 序 中 应 用 为 delay_ms(1000);即表示为延时 1 秒钟时间。因此,程序最终的作用为每隔 1 秒 钟在单片机 RD7 口输出不现的电平值,我们也由此可以听到蜂鸣器周而复始的 “滴嗒”、“滴嗒”响声。
#include<pic.h>
void delay_1ms(void)
{
unsigned int n;
for(n=0;n<50;n++)
{
NOP();
}
}
void delay_ms(unsigned int time)
{
for(;time>0;time--)
{
delay_1ms();
}
}
void main(void)
图 1:
独立的蜂鸣器原始照片
从上面的描述中,很容易就等到一个结论,那就是蜂鸣器的控制和 LED 的控 制对单片机而言是没有区别的,再加上原理图 图 2 中 三极管的接法,更加使得 控制和第一小节 LED 的控制完全一致了:低电平有效,即 I/O 口输出“0”就响, 反之则不响。
下面是一个蜂鸣器发生的实例程序:
相关主题