找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10607|回复: 9
打印 上一主题 下一主题
收起左侧

用单片机怎样可以让无源蜂鸣器滴滴响?

[复制链接]
跳转到指定楼层
楼主
ID:422947 发表于 2018-12-28 21:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
无源蜂鸣器是靠高低电平转换来发声,但是搞不清楚怎样才能让它响一下停一下,响一下停一下呢?求大佬解答,谢谢!

评分

参与人数 1黑币 +3 收起 理由
周超然 + 3 淡定

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:164602 发表于 2018-12-29 08:03 | 只看该作者
这是一个试验程序,就是让无源蜂鸣器发出两种声音:
void main()
{
        n=0;
        while(n<1000)//也可以用for语句:for (n=0;n<1000;n++)
        {
                Beep= 1;
                delay(10);
                Beep= 0;
                delay(10);
                n++;
        }

        delay(10000);

        n=0;

        while(n<100)
        {
                Beep= 1;
                delay(100);
                Beep= 0;
                delay(100);
                n++;
        }

        delay(10000);

}
回复

使用道具 举报

板凳
ID:449525 发表于 2018-12-29 09:03 | 只看该作者
网上有很多例子的,你去了解下,简单点就是pwm波
回复

使用道具 举报

地板
ID:424598 发表于 2018-12-29 09:12 来自手机 | 只看该作者
我发的贴有无源蜂鸣器的部分,你可以参考一下。滴滴响就设循环+判断
回复

使用道具 举报

5#
ID:447180 发表于 2018-12-29 10:01 | 只看该作者
高电平响,低电平不响,交替输出高低电平就行,频率1hz或以下就行
回复

使用道具 举报

6#
ID:367840 发表于 2018-12-29 10:03 | 只看该作者
加一个循环反复高低电平
回复

使用道具 举报

7#
ID:447180 发表于 2018-12-29 10:03 | 只看该作者
有源输出1hz以下方波就行,无源的要几千hz方波才可以响。输出波形响,不输出则不响
回复

使用道具 举报

8#
ID:158375 发表于 2018-12-29 14:56 | 只看该作者
无源蜂鸣器的鸣响是靠高低电平变化实现的,你可以在一定频率下改变高低电平来改变音量,这个要硬件实现。改变频率来改变音调。
回复

使用道具 举报

9#
ID:213173 发表于 2018-12-29 17:20 | 只看该作者
定时器用作无源蜂鸣器的驱动器程序示例
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit key =P3^0;
sbit Buzzer=P2^3;
uchar num;

void Timer0Init()                //250微秒@11.0592MHz
{
        TMOD |= 0x02;                //设置定时器模式
        TL0 = 0x1A;                //设置定时初值
        TH0 = 0x1A;                //设置定时重载值
        TR0 = 1;                //定时器0开始计时
        EA=1;
        ET0=1;       
}

void keyscan()//按键程序        
{
        static uchar count;        //计数消抖变量                        
        static bit key_sign=0;     //按键自锁标志

        if(key==0)             //检测输入如果为0
        {
                if((++count>=100)&&(key_sign==0))
                {                        
                        key_sign=1;   //按键自锁标志置1,防止重复响应
                        num=10;                        //任意置响铃次数
                }
        }
        else
        {
                count=0;        //计数变量清0
                key_sign=0;     //按键自锁标志清0
        }
}


void main()
{
        Timer0Init();
        while(1)
        {
                keyscan();
        }
}

void timer0() interrupt 1
{
        static uint count=0;                        //中断计数变量
        if(num>0)
        {
                count++;
                if(count>2000)                                        //0.5秒时间到
                        Buzzer=~Buzzer;                                //蜂鸣器端口取反
                if(count>=4000)                                        //1秒时间到
                {
                        count=0;                                        //计数清0
                        num--;                               
                        Buzzer=1;                                        //蜂鸣器端复位
                }
        }
}

回复

使用道具 举报

10#
ID:366464 发表于 2020-2-15 10:43 | 只看该作者
wulin 发表于 2018-12-29 17:20
定时器用作无源蜂鸣器的驱动器程序示例
#include
#define uchar unsigned char

请问:怎么增加两个按键和两个LED IO 按K1LED1亮,嘀嘀响一声,按K2 LED2 亮,嘀嘀响一声,按K3 LED1  和2 全灭,嘀嘀响一声,本人接近小白,请给个C程序!我改了好多遍不成功!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表