四十六课 普中精灵 蜂鸣器实验 简介#单片机开发
大家好,这节课来学习一下蜂鸣器实验。
1. 蜂鸣器早在学习五幺单面积的时候就已经接触过,它的应用非常广泛,在生活当中到处可见,像门铃、儿童的一些玩具以及电脑内主板的蜂鸣报警等等都有它的身影。
2. 这节课主要介绍四点,首先来介绍一下蜂鸣器,然后介绍板仔蜂鸣器的电路以及要实现的软件程序和实现现象。首先来看一下蜂鸣器,蜂鸣器是一种采用直流电压供电,广泛应用于电子产品当中作为发声的器件,像前面说的音乐盒、报警器等等。只要涉及到发声的装置通常都会采用蜂鸣器,由此可见它的应用是非常广泛的。
3. 蜂鸣器主要分为两种类型,第一种有有源蜂鸣器,另一种是无源蜂鸣器。有源蜂鸣器在其他 sm 三开奥版的产品当中也涉及过,这种控制方式是最简单的,控制方式类似于 led 的点亮,只要给对应电路的电源,蜂鸣器就能发出声音。而无源蜂鸣器控制相对复杂一点,需要一定频率的脉冲信号。什么是一定频率脉冲信号?频率通常在一点五 k 赫值到五 k 赫值之间。不同厂家的蜂鸣器频率范围可能不同,频率不一样发出的声音也不一样。因此通常用作音乐播出的装置采用的是无源蜂鸣器,比如音乐盒、玩具、音乐盒之类的发声装置。无源蜂鸣器是需要一定频率的脉冲,也就是要让蜂鸣器得掉电流,然后再失去电流,再得到电流,这样往复类似于这样的脉冲波形。
4. 下面这两张图大家有没有认识?哪一张是有源蜂鸣器?哪一张是无源蜂鸣器?从外观来看,拿到蜂鸣器的时候可以看一下蜂鸣器的角,也就是底部。如果看到有裸露的绿色电路板,这种是无源蜂鸣器。如果看到角位这里通过塑胶封装起来的,这种是有源蜂鸣器。所以可以通过外形来区分所使用的蜂鸣器是有源还是无源。这是蜂鸣器的一些简单介绍。
51单片机C语言编程(二)-蜂鸣器和数码管的控制
1、蜂鸣器的发声
/**************************************************************************************
* 蜂鸣器实验 *
实现现象:下载程序后蜂鸣器发声
注意事项:无
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>//因为要用到左右移函数,所以加入这个头文件
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit beep=P1^5;
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
while(1)
{
beep=~beep;
delay(200); //延时大约100us 通过修改此延时时间达到不同的发声效果
}
}
2、静态数码管显示实验
/**************************************************************************************
* 静态数码管显示实验 *
实现现象:下载程序后数码管静态显示0。
注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit LSA=P2^2; //将p2口用LSA代替
sbit LSB=P2^3; //同上
sbit LSC=P2^4; //同上
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, /*u8就是指无符号字符数*/用typedef说明
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示0~F的值
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
LSA=0;
LSB=0;
LSC=0; //控制38译码器的Y0输出低电平
P0=smgduan[0];
while(1);
}
3、动态数码管显示
/**************************************************************************************
* 动态数码管显示实验 *
实现现象:下载程序后数码管从右至左显示0-7。
注意事项:如果不想让点阵模块显示,可以将74HC595模块上的JP595短接片拔掉。
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名 : DigDisplay
* 函数功能 : 数码管动态扫描函数,循环扫描8个数码管显示
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位
}
P0=smgduan[i];//发送段码
delay(100); //间隔一段时间扫描
P0=0x00;//消隐
}
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
while(1)
{
DigDisplay(); //数码管显示函数
}
}
相关问答
单片机蜂鸣器 的工作原理是什么?请详细说一下可以的话-ZOL问答单片机本身是没有蜂鸣器的。单片机外接的蜂鸣器通常是有压电陶瓷片、驱动电路和谐振腔组成,通电(加额定电压)就叫。单片机的引脚通常通过一个三极管驱动可接蜂...
单片机蜂鸣器 怎么响?需要进行以下步骤:首先,在程序中定义好蜂鸣器所连接的引脚,然后将这个引脚设置为输出模式。接着,将这个引脚输出高电平或低电平,控制蜂鸣器的通断。如果将...
为什么 单片机实验 中 蜂鸣器 一直滴答滴答的响?单片机实验中蜂鸣器一直滴答滴答响的原因可能有以下几种:1.CPU管脚程序没有初始化,导致蜂鸣器无法正常工作。2.驱动电路出现问题,例如使用的是有源蜂鸣器...
单片机蜂鸣器 不响怎样检查并排除?1、蜂鸣器没有安装前就不响,这是属蜂鸣器自身质量不行2、蜂鸣器焊接后出现没音或时响时不响,这种情形可能是焊接过程中运用的烙铁功率过大(建议用20-30W的烙...
51 单片机蜂鸣器 怎么才会响?1蜂鸣器会响2蜂鸣器会响是因为51单片机通过控制IO口的高低电平来控制蜂鸣器的工作状态。当IO口输出高电平时,蜂鸣器内部的驱动电路会被激活,产生声音;当IO口...
51 单片机蜂鸣器 隔一秒响一次程序?完整的源程序:#includedefineuintunsignedintsbitspk=P1^2;//与喇叭相连接的单片机引脚的定义voiddelayms(uint);...wh...
普中科技的HC6800 单片机 开发板的 蜂鸣器 该怎么使它响,只要响...蜂鸣器已经在板子的PCB上连接好了,P1.4,你要是想单独连接,不是有个蜂鸣器的跳线帽么,把那个拔下来,左边是蜂鸣器,右边是P1.4,你把左边接到你想接的IO上。那个蜂...
单片机 的 蜂鸣器 发声成曲调,具体程序示范有没有以供参考的? ...这个我做过,你如果对单片机有很好的了解,其实曲调就是用定时器的延时和平常的延时函数构成的!!
单片机 怎么控制 蜂鸣器 的声音时长?单片机只有驱动无源蜂鸣器时才可以控制音调。改变驱动引脚输出方波的频率,就可以调整音调。如果采用延时法产生方波,那就改变延时时间;如果采用定时器法,那就...
pcb中 蜂鸣器 在 单片机 中怎么布线?在单片机中布线蜂鸣器时,首先需要确定蜂鸣器的引脚连接方式,通常有两种:主动蜂鸣器和被动蜂鸣器。对于主动蜂鸣器,一端连接到单片机的IO口,另一端连接到电...