单片机第1季:零基础学51单片机-蜂鸣器介绍

学习目标:

1.蜂鸣器的原理
2.蜂鸣器代码
3.定时器控制蜂鸣器
4.定时器发出滴滴声


学习内容:

1)蜂器的原理
无源蜂鸣器原理
( 1 ) 早期的蜂鸣器都是无源的
( 2 ) 内部结构和材料
( 3 ) 发声原理
( 4 ) 控制信号, 是高低电平相间的方波
( 5 ) 电路图
( 6 ) 音调如何控制, 音调受震动频率控制, 就等于控制信号的频率。频率越高音调越高,听起来,越刺耳。
( 7 ) 声音的大小由硬件控制的,软件没法控制声音大小
有源蜂鸣器原理
2)蜂鸣器代码

#include<reg51.h> 		//头文件包含

sbit BUZZER = P0^0;

void delay(void)
{
	unsigned char i,j;
	for(i=0;i<5;i++)
		for(j=0;j<5;j++);
}
void main(void)
{
	while(1)
	{
		BUZZER = 1;
		delay();
		BUZZER = 0;
		delay();
	}		
}

3)定时器控制蜂鸣器
上节驱动方法
( 1 ) 不容易精准控制时间
( 2 ) CPU 控制蜂鸣器中不能做其他事
定时器控制蜂鸣器响
( 1 ) 10KHz = > 1 / 10000s = > 1000us
一> 高电平+ 低电平一共1000us , 那高电平和低电平的时间都是500us。所以要定的时间就是500us。
( 2 ) 外部晶振12MHz + 12T 设置= > 内部时钟频率1MHz = > 1us= >
TL0 = (65535-500) % 256,TH0 = (65535-500) / 256;

#include<reg51.h> 		//头文件包含

sbit BUZZER = P0^0;

void timer0_isr(void) interrupt 1
{
	TL0 = (65535-500) % 256;
	TH0 = (65535-500) / 256;

	BUZZER = !BUZZER;
}

void main(void)
{
	TMOD = 0x01;   //T0使用16bit定时器
	TL0 = (65535-500) % 256;
	TH0 = (65535-500) / 256;

	TR0 = 1;	   //T0打开开始计数
	ET0 = 1;	   //T0的中断允许
	EA = 1;		   //中断总开关

	BUZZER = 1;
	while(1);		
}

4)定时器发出滴滴声

#include<reg51.h> 		//头文件包含

sbit BUZZER = P0^0;
unsigned int count;
unsigned char flag;

#define XKHZ	10
#define US		(500/XKHZ)
#define N		(65535-US)

void timer0_isr(void) interrupt 1
{
	TL0 = N % 256;
	TH0 = N / 256;

	if(count-- == 0)
	{
		count = 5000;
		if(flag == 0)
		{
		   flag = 1;
		
		}
		else
		{
		   flag = 0;
		   BUZZER = !BUZZER;
		
		}
	}
	else
	{
		//常规情况不反转时
		if(flag == 0)
		{
			BUZZER = !BUZZER;	//4999次声音	
		}
		else
		{
			
		}
	}
}

void main(void)
{
	TMOD = 0x01;   //T0使用16bit定时器
	TL0 = N % 256;
	TH0 = N / 256;

	TR0 = 1;	   //T0打开开始计数
	ET0 = 1;	   //T0的中断允许
	EA = 1;		   //中断总开关

	BUZZER = 1;

	//设置响和不响的周期时间
	count = 5000;	//5000*100us = 500ms;
	flag = 0;

	while(1);		
}


学习时间:

提示:这里可以添加计划学习的时间

例如:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值