8051单片机-蜂鸣器
第四章 蜂鸣器实验
1. 蜂鸣器介绍
蜂鸣器如其名:通过通电振动从而发出声音,我们可以调节频率就可以改变蜂鸣器音调,改变输出电平的高低电平占空比,可以改变蜂鸣器的声音大小其他具体可以参考:[电子电路学习笔记(17)——蜂鸣器_有源蜂鸣器原理图-CSDN博客](https://blog.csdn.net/qq_36347513/article/details/121474727)[蜂鸣器是什么?它的基本原理是什么? - 21ic电子网](https://www.21ic.com/a/957243.html)
2. 硬件设计
通过前面的学习,我们知道了IO口可以直接控制开发板上的LED。但是我们能不能直接使用单片机的IO口驱动蜂鸣器?答案是否定的,因为51单片机IO口的驱动能力毕竟弱,所以我们需要三极管通过把电流放大后再驱动蜂鸣器。开发板上面的蜂鸣器模块电路如下:
从图中看出,J7可由任意IO口控制。然后经过三级管进行电流放大,比如我们接P2.5管脚,当P2.5输出高电平时,三极管截至,蜂鸣器无电;P25输出低电平,三级管导通。因此我们需要通过编写代码使P2.5管脚以一定频率不断输出高低电平信号控制蜂鸣器发出声音
3. 软件设计
本章要实现的功能是:让蜂鸣器发出声音,一段时间后再关闭
#include <REGX52.H>sbit BEEP = P2^5; // 将P2.5管脚定义为BEEP-即蜂鸣器// 延时函数-已经很熟悉了,不必解释
void delay_us(unsigned int ten_us)
{while(ten_us--);
} void main()
{unsigned int i;BEEP = 0; // 初始化时关闭蜂鸣器for(i = 0; i < 1000; i++){BEEP = !BEEP; // 切换蜂鸣器状态delay_us(500);}BEEP = 0; // 循环结束关闭蜂鸣器while(1); // 维持程序继续运行}
如要改变音调可以修改延时时间,改变音量可以修改输出高电平时间
BEEP = 1;
delay_us(190);
BEEP = 0;
delay_us(10);
4. 小结
这一章也比较简单,就是不断取反产生脉冲驱动蜂鸣器呗。我们的代码只是一个简单的示例,如果想要演奏音乐就比较麻烦了,可以参考:[【51单片机】蜂鸣器演奏音乐《机里太美》-附仿真文件_蜂鸣器演奏歌曲-CSDN博客](https://blog.csdn.net/m0_74063149/article/details/131771393)
2024…6.24修订,后期不在维护