51单片机学习笔记4 -- 蜂鸣器控制

发布者:Xiaochen520最新更新时间:2022-07-08 来源: csdn关键字:51单片机  蜂鸣器控制 手机看文章 扫描二维码
随时随地手机看文章

1.蜂鸣器简介

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示


1.分类

按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器);

按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器;

按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器);

按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。


2.有源蜂鸣器和无源蜂鸣器

下面有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器

这里的“源”不是指电源。而是指震荡源。

也就是说有源蜂鸣器内部带震荡源,所以只要一通电就会叫;而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它

有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。无源蜂鸣器的优点是:1。便宜,2。声音频率可控,可以做出“多来米发索拉西”的效果。3。在一些特例中,可以和LED复用一个控制口;有源蜂鸣器的优点是:程序控制方便 。


3.区分有源蜂鸣器和无源蜂鸣器

判断有源蜂鸣器和无源蜂鸣器,可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器"+"引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器,如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器


4.蜂鸣器驱动电路

由于蜂鸣器的工作电流比较大,以单片机的I/O 口是无法直接驱动的,所以要利用放大电路来驱动,一般使用三极管来放大电流


2.电路图绘制

先看看蜂鸣器的原理图,单片机的蜂鸣器控制引脚串联1k电阻经三极管连接到蜂鸣器

在Protues中找出来三极管和蜂鸣器,三极管直接搜PNP即可,不用找详细型号,需要做水平镜像翻转,接地与按键并到一起,其他的参照原理图接

3.蜂鸣器控制

51开发板上搭载的蜂鸣器是有源蜂鸣器,只需要高低电平来控制即可,也就是和LED的控制方式一样,参考程序如下


#include


#define ON  0

#define OFF 1


sbit BUZZER = P0^7;


void delay_ms(unsigned int nms)

{

unsigned int i,j;


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

for(j=113;j>0;j--);

}


void main()

{

BUZZER = ON;

delay_ms(200);

BUZZER = OFF;

delay_ms(200);


while(1);

}


蜂鸣器在protues上不能做仿真,也就是不能看到蜂鸣器是否有响应控制,只能找开发板进行蜂鸣器测试


4.程序补充

学习了蜂鸣器控制后,可以结合前面的LED和按键,如下面代码可做参考


#include

#include


#define ON  0

#define OFF 1


sbit KEY1 = P3^3;

sbit KEY2 = P3^4;

sbit KEY3 = P3^6;

sbit KEY4 = P3^7;


sbit BUZZER = P0^7;


void delay_ms(unsigned int nms)

{

unsigned int i,j;


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

for(j=113;j>0;j--);

}


void main()

{

unsigned int i;

P1 = 0xff;


while(1)

{

if(KEY1 == ON){

delay_ms(10);

if(KEY1 == ON)

{

BUZZER = ON;

}

while(KEY1 == ON);

}

if(KEY2 == ON){

delay_ms(10);

if(KEY2 == ON)

{

BUZZER = OFF;

}

while(KEY2 == ON);

}

if(KEY3 == ON){

delay_ms(10);

if(KEY3 == ON)

{

P1 = 0xfe;

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

{

delay_ms(150);

P1 = _crol_(P1,1);

}

}

while(KEY3 == ON);

}

if(KEY4 == ON){

delay_ms(10);

if(KEY4 == ON)

{

P1 = 0x7f;

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

{

delay_ms(150);

P1 = _crol_(P1,-1);

}

}

while(KEY4 == ON);

}

}

}

关键字:51单片机  蜂鸣器控制 引用地址:51单片机学习笔记4 -- 蜂鸣器控制

上一篇:51单片机学习笔记3 -- 按键输入检测
下一篇:51单片机学习笔记6 -- 定时器中断

推荐阅读最新更新时间:2024-11-12 14:04

51单片机——按键操作
在51单片机开发板上,对按键设置进行操作,其中包括按键的按下,显示对应位置,以及按键密码锁 1.按下按键显示对应位置 main.c #include REGX52.H #include Delay.h #include LCD1602.h #include MatrixKey.h unsigned char KeyNum; void main() { LCD_Init(); LCD_ShowString(1,1, helloworld ); while(1) { KeyNum=MatrixKey(); if(KeyNum) { LCD_ShowNum(2,1,KeyNum,
[单片机]
37-基于51单片机智能温控风扇设计
具体实现功能 系统由STC89C52单片机+DS18B20温度传感器+数码管+风扇+按键+电源构成。 具体功能: 1、采用DS18B20温度传感器测温并用数码管实时显示; 2、可以手动设置温度上下限;共3个按键:设置键、加键、减键; 3、温度小于下限风扇不转,温度在上下限之间50%转动,大于上限时,风扇全速转动。 设计背景 近些年来,随着空调行业的迅速发展,空调价格的大幅度“跳水”,电风扇行业曾被普遍认为是“夕阳产业”。其实并非如此,市场人士称,家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态势。其主要原因:一是风扇和空调的降温效果不同;(空调有强大的制冷功能,可以快速有效地降低环境温
[单片机]
37-基于<font color='red'>51单片机</font>智能温控风扇设计
51单片机程序——定时器控制蜂鸣器
#include reg52.h #define uint unsigned int sbit bb=P3^5; //位定义蜂鸣器接口 sbit led1=P0^0; //位定义LED接口 unsigned int i=0; void delay(uint z); //延迟函数声明 void main() { TMOD=0x01; //TMOD赋值,以确定T0和T1的工作方式 TH0=(65536-50000)/256; //计算初值,并将其写入TH0、TL0或TH1、TL1 TL0=(65536-50000)%6; E
[单片机]
C51单片机,128*64串口LCD驱动
CA12864K 串口C51演示程序 // CA12864K 测试程序(串口) //*************************************************************************** //连线表: CPU=89C52 SystemClock=12Mhz * //CS=P3.0 SCLK=P3.1 SID=P3.2 Reset=RC in Board * //************************************************************************
[单片机]
以AT89C51单片机为核心的发光二极管阵列控制系统设计
现代社会的不断发展,也促进了高科技技术的不断发展,给人们的日常生活带来了更多的便利。而经常在晚会等娱乐节目场合出现发热发光二极管也给人们带来了新的体验。 本文通过研究和设计一个利用事先编好程序来控制16 个LED ,并配合左右手的摇晃来显示字符和简易图形的电子装置(简称为“摇摇棒”),来传递有趣的信息。此装置利用 对发光二极管进行控制。用滚珠开关检测当前摇动状态,单片机控制16 个发光二极管进行不同频率的亮灭刷新,则只要摇动就可以可显示输出文字及图案等信息,从而达到在该视觉平面上传达信息的作用。 1 硬件系统的组成 本设计的简单有趣的LED 摇摇棒,它是基于单片机控制的电子装置。具有按键进行画面切换和消除重影等功能,能使
[单片机]
以AT89C<font color='red'>51单片机</font>为核心的发光二极管阵列<font color='red'>控制</font>系统设计
mcs51单片机有什么组成 分别有什么功能作用
  MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。   mcs51单片机组成   运算器   运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻
[单片机]
mcs<font color='red'>51单片机</font>有什么组成 分别有什么功能作用
51单片机汇编语言带借位减法指令(4条)
这组 指令 包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。 这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。 SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中 SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减
[单片机]
ok6410定时器精确控制蜂鸣器
各种说明请参见上一篇led控制:http://www.51hei.com/mcu/2503.html 由于飞凌提供的源码并不是定时器精确控制蜂鸣器的程序,所以自己写了一个,群里需要裸机程序源码的同志们可以自行在我空间下载,程序调试可用,注意添加飞凌的int.s文件,否则在codewarrior无法编译,各种条件的文件请参详飞凌paf,这里我只提供个程序代码。 #define GPFCON (*(volatile unsigned*)(0x7F0080A0)) #define GPFDAT (*(volatile unsigned*)(0x7F0080A4)) #define GPFPUD (*(volatile unsigned*
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved