进阶教程:51单片机控制蜂鸣器发声实验 适合新手
说明:本文是51单片机控制蜂鸣器发声实验,和流水灯差不多,这也是入门时候非常基础而且非常重要的一个实验,同样本文重在夯实基础,如果是大神,请自觉飘过。 好了我们言归正传,用单片机控制蜂鸣器发声其实也很简单,基本上和控制LED的原理差不多,但是有一点需要说明的是如果是无源蜂鸣器的话,控制方式稍微会复杂一点点,我们下面会详细介绍。我们同样从硬件和软件两个角度来给大家详细说明。 硬件部分 蜂鸣器顾名思义就是可以蜂鸣(发声)的器件,一般分为有源和无源两种,注意此处的源是震荡源,也就是有源蜂鸣器自带震荡源,只要单片机的IO口一给出高电平就会鸣叫,而无源蜂鸣器由于其内部没有震荡源必须用一个K级别频率的方波去驱动它发声,为了降低难度,从基础学起我们实验全部用有源蜂鸣器。 下面是经典的蜂鸣器驱动电路图: 大概说一下原理:单片机通过三极管基极去控制蜂鸣器的发声,当单片机输出低电平时蜂鸣器发声,当输出高电平时三极管断开,发声停止。如果不明白请自行充电模拟电路相关知识或者给我私信。 单片机 单片机的原理已经说过好多次了,其实控制都是大同小异,不明白请移步,再次不在叙述。 软件部分 下面附上软件参考代码及详细注释 代码功能 : 蜂鸣器先尖声鸣叫,隔一段时间后停止发声,再隔一段时间发出声,如此循环下去 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. 好了,看完了以上的文章,我想你应该明白这个实验的软硬件控制原理了吧,其实没有多难,只要理解了原理,然后多动动手 很轻松就会掌握,其实这个实验效果还有其他方法可以实现,如果你也感兴趣自己动动手用其他代码方式试一下吧! 最后如果有什么问题或者建议请给我留言或者私信啊,看到一定第一时间回复,如果你喜欢我的文章,欢迎关注转发评论哦,我们下期再见! 专注基础,从软硬件两个角度,从零开始带你探寻单片机的神秘世界! |