蜂鸣器的软件测试方法,进阶教程:51单片机控制蜂鸣器发声实验 适合新手

说明:本文是51单片机控制蜂鸣器发声实验,和流水灯差不多,这也是入门时候非常基础而且非常重要的一个实验,同样本文重在夯实基础,如果是大神,请自觉飘过。

好了我们言归正传,用单片机控制蜂鸣器发声其实也很简单,基本上和控制LED的原理差不多,但是有一点需要说明的是如果是无源蜂鸣器的话,控制方式稍微会复杂一点点,我们下面会详细介绍。我们同样从硬件和软件两个角度来给大家详细说明。

24262f7f1b9407f874fd9ba15ecc40e6.png

硬件部分

蜂鸣器顾名思义就是可以蜂鸣(发声)的器件,一般分为有源和无源两种,注意此处的源是震荡源,也就是有源蜂鸣器自带震荡源,只要单片机的IO口一给出高电平就会鸣叫,而无源蜂鸣器由于其内部没有震荡源必须用一个K级别频率的方波去驱动它发声,为了降低难度,从基础学起我们实验全部用有源蜂鸣器。

下面是经典的蜂鸣器驱动电路图:

d720b847a5ce81c7e21097cd6734ef74.png

大概说一下原理:单片机通过三极管基极去控制蜂鸣器的发声,当单片机输出低电平时蜂鸣器发声,当输出高电平时三极管断开,发声停止。如果不明白请自行充电模拟电路相关知识或者给我私信。

单片机

单片机的原理已经说过好多次了,其实控制都是大同小异,不明白请移步扫盲教程:51单片机控制单个LED灯点亮 适合新手,再次不在叙述。

软件部分

下面附上软件参考代码及详细注释

代码功能 : 蜂鸣器先尖声鸣叫,隔一段时间后停止发声,再隔一段时间发出声,如此循环下去

# include //C语言程序头文件

# define unit16 unsigned int //宏定义

sbit BEEP=P1·4 // P1.4口定义为 BEEP

void delayMS(unit16 va1ms)

{ unit16 uival, ujval;

for(uival=0;uival

for(ujval=0;uival<113;ujval++) //定义两个FOR循环函数 用于计时

}

void main(void) //主函数程序开始执行

{ while(1) // while大循环

{ BEEP=0; //响彻大地

delayms(50); //改变此变量可以调整发声间隔的时间

BEEP=1; //鸦雀无声

delayms(50)

}}

下面开始测试代码,代码用PROTEUS仿真后实现了我们需要的间断鸣叫发声功能。因此代码OK.

2374cd31bbc3072603d17631349b681c.png

好了,看完了以上的文章,我想你应该明白这个实验的软硬件控制原理了吧,其实没有多难,只要理解了原理,然后多动动手 很轻松就会掌握,其实这个实验效果还有其他方法可以实现,如果你也感兴趣自己动动手用其他代码方式试一下吧!

最后如果有什么问题或者建议请给我留言或者私信啊,看到一定第一时间回复,如果你喜欢我的文章,欢迎关注转发评论哦,我们下期再见!

专注基础,从软硬件两个角度,从零开始带你探寻单片机的神秘世界!

举报/反馈

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值