当前位置: 网站首页 > 技术应用 > 单片机应用 > 应用范例

单片机驱动蜂鸣器的示例程序

SN 单片机驱动蜂鸣器的示例程序
在使用 SN 单片机做各种项目时,可能需要一些蜂鸣器发音信号,例如按键按动,控制输出动作,传感器发生错误,或者测量数据超过允许范围,水位缺水.....等等.

而不同的对象又可能下午蜂鸣器发出的声音或节奏不同,以便可以方便区分报警类型,同时也增加了项目的人性化.
SN 单片机不同型号的资源不同,这里使用的是 27E65 ,代码选项内部高速时钟 16MHZ/4 .
使用一个有 PWM 或蜂鸣器频率产生功能的定时器,设置好蜂鸣器的频率,这个频率接近蜂鸣器本身固有特征频率时,发音效率最好,声音也最大.不用它的中断功能.
另外使用一个定时器产生 0.1S,0.3S,0.5S 等多种定时信号,做好各自的标志,这就要使用中断功能.
下面示例程序可以改变所用定时信号的间隔时间,或长短结合的次数,方法,举一反三,就会产生各种较好效果.
测试好后,就可以保存这些程序段落,需要时,拷贝到实际项目里就可以使用了.
经常练习这些单元功能,一砖一瓦,天长日久,积累多了,就可以熟能生巧.
示例程序如下(仅供参考):
;====================================================================
;初始化中设置蜂鸣器使用 TC0 的 PWM 
;设置TC0 时钟源和TC0速率。-----使用蜂鸣器就不能使用它作为定时器了!
        ZB0        FP51M ;输出模式
        ZB0        FP51  ;输出低电平
        MOV_        TC0M,#40H;#30H ; /8  输出2KHZ,非常响亮!!
        MOV_        TC0C,#120;80;180;设置TC0C 和TC0R 寄存器获得PWM 周期。
        B0MOV         TC0R,A;设置TC0D 寄存器获得PWM 占空比。
        MOV         A,#240;160 ;TC0D 的值必须大于TC0R 的值。
        B0MOV         TC0D,A
;使能PWM 和TC0 定时器。驱动蜂鸣器!!
        ZB1         FTC0ENB ; TC0 开始计数
        ZB0         FTC0IRQ ;TC0 中断功能.
        ZB0         FTC0IEN ;TC0 中断功能.
;        ZB1        FPWM0OUT 51 输出蜂鸣器
        ZB0        FPWM0OUT 51 输出蜂鸣器
;这里设置一个定时器,产生 0.3S 和 0.5S 等定时信号.根据芯片资源选择 T0,TC1 等
        ZB1        FGIE
;========================================================
B_LOOP:
        @RST_WDT
;//        其它子程序
;下面 4 个子程序,测试时,每次使用一个子程序. 比较效果,可以任意修改子程序有关参数.
;        CALL        B_BBP_00S; 1 长 3 短
        CALL        B_BBP_01S;3 短 1 长
;        CALL        B_BBP_02S;// 0.3S间隔: 急促报警:;嘀,嘀,嘀,嘀,
;        CALL        B_BBP_03S;// 0.5S间隔: 普通报警:;嘀 -,嘀 -,
;//        其它子程序
        JMP        B_LOOP
;================================================================
B_BBP_00S:; 1 长 3 短
        BS1        FBB05S
        RET
        ZB0        FBB05S  ;;嘀---,嘀,嘀,
        BS1        FBB05S
        JMP        $-1
        ZB1     FPWM0OUT
        ZB1        LEDS.4
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        ZB0     FPWM0OUT
        ZB0        LEDS.4
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB1     FPWM0OUT
        ZB1        LEDS.4
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB0     FPWM0OUT
        ZB0        LEDS.4
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB1     FPWM0OUT
        ZB1        LEDS.4
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB0     FPWM0OUT
        ZB0        LEDS.4
        ZB0        FBB05S
        RET
;-------------------------------------------------------------------
B_BBP_01S:;3 短 1 长
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1  ;嘀,嘀,嘀,嘀-----
        ZB0     FP51
        ZB1     FP51M
        ZB1     FPWM0OUT
        ZB1        LEDS.5 ;超温
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB0     FPWM0OUT
        ZB0        LEDS.5 ;超温
        ZB0        FAD01S
        BS1        FAD01S
        JMP        $-1 ;//B_TEMP
        INCM        BBJS
        COM1        BBJS,#3;2
        RET
        ZM0        BBJS
        ZB0        FAD01S
        BS1        FAD01S
        JMP        $-1
        ZB0        FBB05S
        ZB1     FPWM0OUT
        ZB1        LEDS.5 ;超温
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        ZB0     FPWM0OUT
        ZB0        LEDS.5 ;超温
        RET
;----------------------------------------------------------------------
B_BBP_02S:
        BS1        FBB03S ;// 0.3S间隔: 急促报警:;嘀,嘀,嘀,嘀,
        RET
        ZB0     FP51
        ZB1     FP51M
        ZB1     FPWM0OUT
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB0        FBB03S
        BS1        FBB03S
        JMP        $-1
        ZB0        FBB03S
        ZB0     FPWM0OUT
        RET
;----------------------------------------------------------------------
B_BBP_03S:
        BS1        FBB05S;// 0.5S间隔: 普通报警:;嘀 -,嘀 -,
        RET
        ZB0     FP51
        ZB1     FP51M
        ZB1     FPWM0OUT
        ZB0        FBB05S
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        BS1        FBB05S
        JMP        $-1
        ZB0        FBB05S
        ZB0     FPWM0OUT
        RET

点击次数:  【关闭
  • 壹零零单片机©版权所有 2008-2025 粤ICP备17151077号

Powered by  xinfuke  5.2.5 ©2008-2025  www.100mcu.com