而利用I/O 定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。折叠编辑本段驱动电路由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动的*(但AVR可以驱动小功率蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。
以回授方式区分,压电式蜂鸣器大致分为回授式蜂鸣片(自激式)与无回授式蜂鸣片(外激式)两种。当回授式蜂鸣片搭配正回授振荡电路会产生一个与共振腔频率相同的单音;而无回授式蜂鸣片则可以搭配外部振荡电路,选择任意频率发出声音。折叠编辑本段特点及应用压电式蜂鸣器具有体积小、灵敏度高、耗电省、可靠性好,造价低廉的特点和良好的频率特性。因此它广泛应用于各种电器产品的报警、发声用途。最常见的莫过于音乐贺卡、电子手表、袖珍计算器、电子门铃和电子玩具等小型电子用品上作发声器件。
于这里要介绍两种驱动方式的方法,所以在设计模块系统中将两种驱动方式做到一块,即程序里边不仅介绍了PWM 输出口驱动蜂鸣器的方法,还要介绍I/O 口驱动蜂鸣器的方法。所以,我们将设计如下的一个系统来说明单片机对蜂鸣器的驱动:系统有两个他激蜂鸣器,频率都为2000Hz,一个由I/O 口进行控制,另一个由PWM 输出口进行控制;系统还有两个按键,一个按键为PORT 按键,I/O 口控制的蜂鸣器不鸣叫时按一次按键I/O 口控制的蜂鸣器鸣叫,再按一次停止鸣叫,另一个按键为PWM 按键,PWM 口控制的蜂鸣器不鸣叫时按一次按键PWM输出口控制的蜂鸣器鸣叫,再按一次停止鸣叫。