找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3020|回复: 10
收起左侧

如何能用一个51单片机边刷新数码管边驱动无源蜂鸣器鸣叫呢

[复制链接]
ID:775739 发表于 2020-6-20 19:39 来自手机 | 显示全部楼层 |阅读模式
如题,让两个循环交替执行的话效果又不太好,是不是必须得加些外部电路了,求大佬给点建议(>﹏<)
回复

使用道具 举报

ID:686782 发表于 2020-6-20 22:45 | 显示全部楼层
顶一顶,同问
回复

使用道具 举报

ID:332444 发表于 2020-6-21 05:26 | 显示全部楼层
添加锁存器可让IO口复用。
回复

使用道具 举报

ID:213173 发表于 2020-6-21 07:50 | 显示全部楼层
51单片机当然可以边刷新数码管边驱动无源蜂鸣器鸣叫。方案有很多,要根据硬件环境选择具体采用那种方案。
回复

使用道具 举报

ID:775739 发表于 2020-6-22 08:44 来自手机 | 显示全部楼层
主要是我这没有什么数字芯片,那我再上网找找资料
回复

使用道具 举报

ID:213173 发表于 2020-6-22 10:47 | 显示全部楼层
濑某人 发表于 2020-6-22 08:44
主要是我这没有什么数字芯片,那我再上网找找资料

不需要外围数字芯片,给你一个数码管闹钟程序,你仔细看看就明白边刷新数码管边驱动无源蜂鸣器鸣叫的一种方法。 数码管闹钟 仿真.zip (141.65 KB, 下载次数: 61)
回复

使用道具 举报

ID:775739 发表于 2020-6-22 20:10 | 显示全部楼层
wulin 发表于 2020-6-22 10:47
不需要外围数字芯片,给你一个数码管闹钟程序,你仔细看看就明白边刷新数码管边驱动无源蜂鸣器鸣叫的一种 ...

好的,谢谢大佬
回复

使用道具 举报

ID:401564 发表于 2020-6-23 08:27 | 显示全部楼层
1:定时器中断刷新数码管,在中断中驱动蜂鸣器
2:使用单片机自带的PWM输出控制蜂鸣器
3:在数码管延时程序中驱动蜂鸣器
4:如果单片机有ADC,可以使用ADC中断定时器,ADC的结果不需要理会就行了
回复

使用道具 举报

ID:569384 发表于 2020-6-23 11:42 | 显示全部楼层
个人使用的方法,如果不当望请指出

1.定时器中断中刷数码管
2.pwm管脚驱动蜂鸣器
或者:
一个定时器同时刷数码管和蜂鸣器也可以,我一直都是这么做的,但是前提是你要把定时器溢出时间等于蜂鸣器的频率。(比如125us或者250us)这样每次进定时器中断就翻转蜂鸣器io口,就不会影响声音。

写个伪代码:
#define    BUZ    蜂鸣器io口

void 定时器中断服务函数()//125us(等于无缘蜂鸣器频率)
{
      变量a(数码管计数),变量b(蜂鸣器响的时间计数)

      if(++a > 80)//125us*80=10ms,10ms刷新一次数码管
      {
            a = 0;
            //数码管代码
            //数码管代码
            //数码管代码
            //数码管代码等等
      }

      if(蜂鸣器使能标志位)
      {
            BUZ ^= 1;//翻转io口
            if(++b > 4000)//125us*4000=500ms   响500毫秒
            {
                  b = 0;
                  蜂鸣器使能标志位 = 0;
            }
      }
}

回复

使用道具 举报

ID:782998 发表于 2020-10-24 13:54 | 显示全部楼层
wulin 发表于 2020-6-22 10:47
不需要外围数字芯片,给你一个数码管闹钟程序,你仔细看看就明白边刷新数码管边驱动无源蜂鸣器鸣叫的一种 ...

文件是空的
回复

使用道具 举报

ID:414556 发表于 2020-10-25 23:33 | 显示全部楼层
使用定时中断就可以,数码管在主程序循环刷,蜂鸣在中断响。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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