52单片机IO口输出-蜂鸣器(硬核)


欢迎你的到来!这里是我的单片机学习笔记,希望我的笔记可以在你学习的道路上对你有所帮助!

什么是蜂鸣器

蜂鸣器是一种一体化结构的电子讯响器,广泛应用于电子产品中作发声器件,起到警报提醒的作用。
有源蜂鸣器与无源蜂鸣器

这里的“源”不是指电源,而是指震荡源。
有源蜂鸣器内部带震荡源,所以只要异同点就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。需要用2K~5K的方波去驱动它,有源蜂鸣器往往比无源的贵,就是因为里面多个振荡电路。

无源蜂鸣器的优点是:

1.便宜
2.声音频率可控,可以做出音乐里基本七音符的效果

有源蜂鸣器的优点是:

程序控制方便,接通电源就可以工作,程序简单。

三极管的工作原理

什么是三极管:
三极管全称半导体三极管,也称晶体三极管,是一种控制电流的半导体器件其作用是把微弱的电信号放大成幅度值较大的电信号,也用作无触点开关,在电路中主要起开关和增大电流的作用。

三极管正如其名有三个引脚分别是:B(基极),C(集电极),E(发射极)
按照半导体排列方式区分:分为NPN三极管和PNP三极管两种。
按照材质区分:硅管(PN结导通电压0.5 ~ 0.7V)、锗管(PN结导通电压0.1 ~ 0.3V)

三极管的型号记忆方式:箭头朝内PNP,箭头朝外NPN,箭头引脚发射极

PN结偏置:正偏,反偏,零偏

P(阳极) N(阴极) (PN结)状态
正偏 电位高 电位低 正向导通
反偏 电位低 电位高 反向截止
零偏 电位相等 电位箱等

三种状态:

状态 发射结 集电结
截止 反偏 反偏
放大 正偏 反偏
饱和 正偏 正偏(零偏)

口诀:发正集反是放大,全正饱和全反截。

蜂鸣器驱动电路分析

这是蜂鸣器的控制电路,因为IO口的输出电流小,无法直接用IO口驱动,需要用接了10K的上拉电阻的IO口才可以

这次我用的是IO口驱动这种方法,我用的单片机是STC89C52,它的P1组IO口没有上拉排阻,所以我用的P2组IO口

*74hc595芯片可以起到扩充单片机IO口的作用,因为输出电流也比IO口大,所以也有放大电流的作用*

参考代码

延时方法1
unsigned int i = 1000;
while(i--);
延时方法2
void delay();//延时函数声明
void delay()//延时函数 { uint16 i; for(i=100000;i>0;i--); }
延时方法3
使用_nop_();函数(记得带上头文件#include<intrins.h>
我们可以使用stc官方软件直接生成我们想要的函数(懒)
方法如下
①打开下图的软件,在右上菜单栏中点开软件延时计算器
②左上角修改参数,选择自己的晶振频率和想要延长的时间
③点击生成代码,然后软件会自动生成,复制即可使用

完整参考代码↓(用的延时方法3)

#include<reg52.h>
#include<intrins.h>

sbit beep = P2^0;//蜂鸣器端口
void Delay500ms();//@11.0592MHz

void main()
{
    
    
	while(1)
	{
    
    
		beep = 1;     //蜂鸣器启动
		Delay500ms(); //@11.0592MHz
		beep = 0;     //蜂鸣器关闭
		Delay500ms(); //@11.0592MHz
	}
}
void Delay500ms()		//@11.0592MHz
{
    
    
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
    
    
		do
		{
    
    
			while (--k);
		} while (--j);
	} while (--i);
}

参考内容链接: https://www.bilibili.com/video/BV1Kt411Q7aV?p=6.

如有错误,还望斧正!有好的想法和意见可以在评论区告诉博主,感谢你的观看!

嘿~我亲爱的伙计!我想慷慨大方的你一定不会吝啬给我这个可怜的博主点赞的。

猜你喜欢

转载自blog.csdn.net/chuxiqianye2020/article/details/112861871
今日推荐