前言
大家对龙芯1B200有任何问题都可以私信我,大家的关注才是我不断更新的动力。
可能私信不能很及时的回,大家稍微谅解一下,看到立马就回。
一、蜂鸣器介绍
这里简单的介绍一下大家众所周知的蜂鸣器,蜂鸣器分为有源蜂鸣器和无源蜂鸣器。
有源蜂鸣器:
首先“源”不是指电源,而是指震荡源。有源蜂鸣器内部带震荡源,所以只要一通电就会叫。
无源蜂鸣器:
无源蜂鸣器内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用规定的频率方波去驱动它。
有源和无源的区别:
因为有源蜂鸣器内部自带震荡源,并且有可能是多个震荡电路。所以价格方面肯定比无源蜂鸣器要高,但比无源蜂鸣器好用,高低电平就能使蜂鸣器鸣叫。
无源的好处就在于便宜、声音频率可控可做电子琴的效果,并且可以引脚复用(在特殊情况下)
有源蜂鸣器
无源蜂鸣器
二、程序代码
1.开发步骤
说明:此项针对嵌入式考证设备,讲解的是有源蜂鸣器,程序是有源蜂鸣器的,后续讲解无源蜂鸣器。
第1步, 新建工程
第2步, 在 bsp.h 中打开 PWM2 设备的宏定义, 并在 main.c 下添加 ls1b_gpio.h
第3步, 定义蜂鸣器的引脚和编写初始化函数
第4步, 定义蜂鸣器初始状态
第5步, 主函数对引脚进行高低变换,蜂鸣器鸣叫
第6步, 编写一个1000ms鸣叫一次的程序
2.代码
main.c
#include <stdio.h>
#include "ls1b_gpio.h"
#include "ls1b.h"
#include "mips.h"
#include "led.h"
#include "beep.h"
//-------------------------------------------------------------------------------------------------
// BSP
//-------------------------------------------------------------------------------------------------
#include "bsp.h"
int temp;
//-------------------------------------------------------------------------------------------------
// 主程序
//-------------------------------------------------------------------------------------------------
int main(void)
{
printk("\r\nmain() function.\r\n");
//LED_Init();//LED初始化
//KEY_Init();//按键初始化
BEEP_Init();
/*
* 裸机主循环
*/
for (;;)
{
BEEP_Off();
delay_ms(500);
BEEP_On();
delay_ms(500);
}
return 0;
}
beep.c
/*
* beep.c
*
* created: 2022/2/25
* author:
*/
#include "beep.h"
#include "ls1b_gpio.h"
//BEEP初始化函数
void BEEP_Init(void)
{
gpio_enable(BEEP,DIR_OUT);
gpio_write(BEEP,0);
}
//开启指定BEEP函数
void BEEP_On(void)
{
gpio_write(BEEP,1);
}
//关闭指定BEEP函数
void BEEP_Off(void)
{
gpio_write(BEEP,0);
}
总结
后续会对无源蜂鸣器以及有源蜂鸣器唱歌进行程序调试,大家敬请期待!
源码链接:龙芯1B:蜂鸣器使用例程-单片机文档类资源-CSDN文库
联系我们
vx ——> buildupup 公众号 嵌入式up 如果文章对您有帮助,请打赏一元呗,感谢支持,分享不易,码字不易。希望对大家帮助!