找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教大佬单片机+三极管驱动蜂鸣器电路程序的问题

  [复制链接]
跳转到指定楼层
楼主
10黑币
为啥我按图连接的电路,程序烧进去了,但是按下K1蜂鸣器却不响,是单片机程序的问题吗?
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Key=P2^5;
sbit DoorBell=P2^7;
uint p=0;
//主程序
void main()
{
DoorBell=0;
TMOD=0x00; //T0 方式 0
TH0=(8192-700)/32; //700us 定时
TL0=(8192-700)%32;
IE=0x82;
while(1)
{
if(Key==0) //按下按键启动定时器
{
TR0=1;
while(Key==0);
}
}
}
//T0 中断控制点阵屏显示
void Timer0() interrupt 1
{
DoorBell=~DoorBell;
p++;
if(p<400) //若需要拖长声音,可以调整 400 和 800
{
TH0=(8192-700)/32; //700us 定时
TL0=(8192-700)%32;
}
else if(p<800)
{
TH0=(8192-1000)/32; //1ms 定时
TL0=(8192-1000)%32;
}
else
{
TR0=0;
p=0;
}
}

51hei截图20210501211116.png (82.39 KB, 下载次数: 74)

51hei截图20210501211116.png

最佳答案

查看完整内容

听你这么一解释,我真是又涨知识了,我没有注意楼主用的是无源蜂鸣器,我以为是有源蜂鸣器,但是,无论如何,我的认为是设计电路必须按标准电路设计,没有必要搞些非标的出来,还有就是,电路设计不能因为程序的任何问题出现烧毁元器件的情况,否则就是电路设计不完善。 楼主可以试试这个电路,我没有驱动过无源蜂鸣器,我要是驱动无源蜂鸣器,肯定就是画成这个样子,这个电路驱动过其它元件,从来不会出现烧毁元件的情况, ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:383215 发表于 2021-5-1 21:12 | 只看该作者
wulin 发表于 2021-5-5 06:44
版主的电路图是两种驱动蜂鸣器的标准电路。楼主的电路图虽然是非标准接法,但实践证明是可以正常驱动蜂鸣 ...

听你这么一解释,我真是又涨知识了,我没有注意楼主用的是无源蜂鸣器,我以为是有源蜂鸣器,但是,无论如何,我的认为是设计电路必须按标准电路设计,没有必要搞些非标的出来,还有就是,电路设计不能因为程序的任何问题出现烧毁元器件的情况,否则就是电路设计不完善。

楼主可以试试这个电路,我没有驱动过无源蜂鸣器,我要是驱动无源蜂鸣器,肯定就是画成这个样子,这个电路驱动过其它元件,从来不会出现烧毁元件的情况,说白了就是多加一个电容就搞定。记得以前用单片机通过三极管驱动8Ω喇叭,三极管基级没有加电容,但是,集电极和喇叭之间加了个100μF的电解电容,也从来没有出现烧三极管和喇叭的情况。

回复

使用道具 举报

板凳
ID:635345 发表于 2021-5-1 21:18 | 只看该作者
复位电路那个线是连着的,我不小心删掉了
回复

使用道具 举报

地板
ID:506248 发表于 2021-5-2 10:46 | 只看该作者
经过实验,程序没有问题,可以正常使用,估计是你引脚连接错误,例如把三极管1和3脚焊接反了等,请仔细检查。程序在我这里可以正常发音的。
回复

使用道具 举报

5#
ID:96682 发表于 2021-5-2 11:40 来自手机 | 只看该作者
成品中复位电路上用的是 1K 电阻
回复

使用道具 举报

6#
ID:635345 发表于 2021-5-2 11:41 来自手机 | 只看该作者
欣欣 发表于 2021-5-2 10:46
经过实验,程序没有问题,可以正常使用,估计是你引脚连接错误,例如把三极管1和3脚焊接反了等,请仔细检查 ...

我仿真的也没问题,我焊的时候也没啥问题,但是上电以后三极管发烫,而且按键也没有反应
回复

使用道具 举报

7#
ID:635345 发表于 2021-5-2 13:05 来自手机 | 只看该作者
wc86110 发表于 2021-5-2 11:40
成品中复位电路上用的是 1K 电阻

是复位电路的问题吗?
回复

使用道具 举报

8#
ID:96682 发表于 2021-5-2 14:54 来自手机 | 只看该作者
按键没反应是因为三极管可能已经挂了蜂鸣器是没法发声的
回复

使用道具 举报

9#
ID:213173 发表于 2021-5-2 17:44 | 只看该作者
根据程序和原理图分析DoorBell在main()初始化时DoorBell=0; 是错误的。会导致Q1长时间导通,导致Q1或蜂鸣器损坏。另外在中断中DoorBell=~DoorBell;看似没有问题,但中断里条件满足时,定时器TR0=0;此时必须保证DoorBell=1;,否则同样会因Q1长时间导通导致Q1或蜂鸣器损坏。
回复

使用道具 举报

10#
ID:748096 发表于 2021-5-2 19:50 | 只看该作者
三极管发烫有可能工作在放大器,而不是导通区。
回复

使用道具 举报

11#
ID:915096 发表于 2021-5-2 21:59 | 只看该作者
换个npn管试试。pnp三级管这样接是有问题的,网上常有这样接法,有些教科书也是这样接,不求甚解
回复

使用道具 举报

12#
ID:889094 发表于 2021-5-2 22:57 | 只看该作者
5V接蜂鸣器,再三极管,直接到地了,三极管压降好像很小,查参数,蜂鸣器电阻多少,查参数,
一旦导通,查查电流是多少,你没有限流电阻,电流估计会超过三极管电大电流的,然后,估计瞬间你不听到响就已经OVer了
回复

使用道具 举报

13#
ID:435676 发表于 2021-5-3 20:18 来自手机 | 只看该作者
加限流电阻就好了!电阻加小一点的
回复

使用道具 举报

14#
ID:465763 发表于 2021-5-4 15:10 | 只看该作者
把Q1和R2去掉接一个50V/1UF的电容,一端接蜂鸣器,一端接IO口
回复

使用道具 举报

15#
ID:143767 发表于 2021-5-4 16:43 | 只看该作者
蜂鸣器要接到驱动三极管Q1的集电极与地之间,你这种接法是错误的
回复

使用道具 举报

16#
ID:227393 发表于 2021-5-4 20:15 来自手机 | 只看该作者
Q1无法饱和导通,蜂鸣器压降5v,蜂鸣器移到集电极就可以了
回复

使用道具 举报

17#
ID:383215 发表于 2021-5-4 22:16 | 只看该作者



驱动蜂鸣器的电路都是错的,还有什么好讨论的?两种三极管驱动蜂鸣器的电路是这个样子,PNP三极管驱动蜂鸣器适合复位期间I/O口为高电平的单片机,复位期间I/O口为高阻的单片机,两种三极管都可以。单片机驱动蜂鸣器很简单啊,PNP三极管的是低电平蜂鸣器就响了,NPN三极管的是高电平蜂鸣器就响了,三极管就用8550(PNP)或者8050(NPN)以及其它的都行。

回复

使用道具 举报

18#
ID:213173 发表于 2021-5-5 06:44 | 只看该作者
kmsj 发表于 2021-5-4 22:16
驱动蜂鸣器的电路都是错的,还有什么好讨论的?两种三极管驱动蜂鸣器的电路是这个样子,PNP三极管驱 ...

版主的电路图是两种驱动蜂鸣器的标准电路。楼主的电路图虽然是非标准接法,但实践证明是可以正常驱动蜂鸣器。所以这不是其采用的无源蜂鸣器不响且晶体管发烫的主要原因。实际是楼主的程序错误导致开机即烧毁晶体管。市场常见的电磁式无源蜂鸣器的内阻几欧~几十欧,9012导通后很快过热击穿。
回复

使用道具 举报

19#
ID:275826 发表于 2021-5-5 09:54 | 只看该作者
17楼正解
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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