一、硬件
????????蜂鸣器BEEP:一体化得电子讯响器 (源 就是震荡电路)
??????????????? 1、有源蜂鸣器(电磁式蜂鸣器)有源蜂鸣器 给电就响
??????????????? 2、无源蜂鸣器(压电式蜂鸣器)想要它响提供一定频率得 脉冲 1.5KHz~5KHz
二、调节音调
??????? 用脉冲信号调节(PWM)方波 脉冲 1.5KHz~5KHz。
三、电路
????????单片机得驱动能力比较弱 蜂鸣器需要30mA
??????? 板子上面带有ULN2003D芯片 使它来驱动蜂鸣器
??????? P2^5输出高? ULN2003D 输出低 所以他们得逻辑关系是相反得
四、程序设计
??????? 1、让P2^5脚产生一个 1.5KHz~5KHz 脉冲信号
????????2、一个周期 1ms 高电平 1ms低电平 就是 2ms是一个周期,频率就是周期得倒数 也就是 1/2Khz(每秒),也即是0.5Khz 就是500hz
??????? 3、让周期输出持续一段时间
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8; // 只能表示0-254
typedef unsigned int u16; // 0 - 65535
sbit BEEP = P2^5; // 把P2得第5个针脚定义成BEEP
void Delay10us(unsigned char i) //@11.0592MHz 延迟大约是10微秒
{
i = i*2;
while (--i);
}
void main()
{
u16 x = 3000;
while(1)
{
while(x--) // 声音持续一段时间 等3000减完就跳出了
{
BEEP = 0; // 低电平 蜂鸣器就是高电平
Delay10us(100); //持续1000微秒也就是1毫秒
BEEP = 1;
Delay10us(100);
}
x = 0; // 跳出循环
}
}
????????
|