嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍

蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。

蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。

有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。

c51中的蜂鸣器是无源蜂鸣器

二、蜂鸣器原理图

如图所示的三极管是NPN三极管,当p11是1时,三极管导通,蜂鸣器会响 ,在我们的开发板上,就是把那个帽子戴上。使其有电原通过。

三、蜂鸣器实现

(1)用延时函数表示频率的变化。

#include"reg51.h"

void delay(unsigned int n)
{
    while(n)
    --n;
}
viod main(void)
{
    while(1)
    {
        P2=~P2;
        delay(3000);//控制频率改变蜂鸣器声音的尖锐
    }
}

单位时间内周期变化的越小,频率越大,声音越尖锐。

(2)利用定时器的计数功能,改变中断时间,来改变频率变化,使蜂鸣器声音变化。

 

#include "reg51.h"

void timer0Init(void)
{	
 	//TMOD |= (0x01<<0); //默认状态 TMOD 就是13位模式 
	TH0	 = 7192>>5;
	TL0	 = 7192&0x1F;
	IE   |= 0x01<<7 | 0x01<<1;
    TCON |= 0x01<<4; //开启定时器  
}

void timer0Handler(void) interrupt 1
{	 
     static int n = 0;
     static int m=0;  //控制占空比
     static unsigned  int k=0 //控制频率进阶变化
     if (k == 1000)//让声音持续一小段时间
	
	 {
     	++m;     //从1ms开始增加
		k= 0;
	 }

    k++;
     n++;
	 if (n == (m+1))//n也在加,相当于p2 1ms翻转一次
	
	 {
     	P2 = ~P2;
		n = 0;
	 }

	TH0	 = 7192>>5;
	TL0	 = 7192&0x1F;
}


void main(void)
{
	 timer0Init();
	while(1)
	{

	}

}

相关推荐

  1. 嵌入学习——51单片机——day16

    2024-06-19 02:22:03       12 阅读
  2. 普中51单片机学习笔记——蜂鸣器

    2024-06-19 02:22:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-19 02:22:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-19 02:22:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-19 02:22:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-19 02:22:03       20 阅读

热门阅读

  1. 利用Python调用闲鱼商品详情API接口

    2024-06-19 02:22:03       5 阅读
  2. 通义灵码使用笔记

    2024-06-19 02:22:03       6 阅读
  3. springboot redission 分布式锁

    2024-06-19 02:22:03       10 阅读
  4. win10 k8s dashboard

    2024-06-19 02:22:03       8 阅读
  5. Mybatis (plus 也适用)原生直接执行某句SQL

    2024-06-19 02:22:03       7 阅读
  6. Optional容器的使用技巧,判空处理

    2024-06-19 02:22:03       8 阅读
  7. 如何编辑和修改ROM,快速上手

    2024-06-19 02:22:03       7 阅读
  8. 使用 Redis 生成分布式唯一ID

    2024-06-19 02:22:03       6 阅读
  9. 带你学习Mybatis之ResultSetHandler结果集处理

    2024-06-19 02:22:03       6 阅读
  10. Docker 容器相关的常见面试问题及答案

    2024-06-19 02:22:03       6 阅读
  11. CAPL如何在底层模拟TCP Client端建立TCP连接

    2024-06-19 02:22:03       3 阅读