标题: 我这个单片机程序为什么蜂鸣器不响?求帮助 [打印本页]

作者: 可爱萌萌哒    时间: 2020-7-8 21:20
标题: 我这个单片机程序为什么蜂鸣器不响?求帮助
启动时,没有效果,按下1按键,数码管显示,按下二号键,蜂鸣器响一秒(此时数码管依旧亮) 按下复位键回到初始状态,我这个程序为什么蜂鸣器不响?

#include<reg51.h>
#define uchar unsigned char
uchar smg[]={0xc0,0xf9,0xa4,0xb0}; //数码管
sbit a1=P2^0;
sbit a2=P2^1;
sbit a3=P2^2;
sbit a4=P2^3; //位选码
sbit feng=P2^5;
sbit jian0=P3^2; //按键
sbit jian1=P3^3;
void delay1() //定时1秒
{
uchar k;
for(k=20;k>0;k--)
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
while(TF1==0);
TF1=0;
}
}
void delay()
{
int i;
for(i=600;i>0;i--);
}
void main()
{
TMOD=0X11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256; //初始化
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
EA=1;
ET0=1; //开中断
while(1)
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;

if(jian1==0) //按键,去抖
{
delay();
if(jian1==0)
{
while(!jian1);
TR0=1;
}
}
if(jian0==0)
{
delay();
if(jian0==0)
{
while(!jian0);

feng=0;
delay1();
feng=1;
}
}
}
}
void t0(void) interrupt 1 using 1
{


TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
a1=0;
P0=smg[2];
delay();
a1=1;

a2=0 ;
P0=smg[0];
delay();
a2=1;

a3=0;
P0=smg[0];
delay();
a3=1;

a4=0;
P0=smg[3];
delay();
a4=1;

}
作者: lovezjf234    时间: 2020-7-8 21:38
feng=0;没用,改成feng=~feng;
作者: 可爱萌萌哒    时间: 2020-7-9 08:05
lovezjf234 发表于 2020-7-8 21:38
feng=0;没用,改成feng=~feng;

feng=0低电平给pnp放大,他不是应该响吗?
作者: TTQ001    时间: 2020-7-9 08:24
请告诉我们您使用的是哪种类型的蜂鸣器,它是主动蜂鸣器还是被动蜂鸣器? 不同类型的蜂鸣器由不同的原理驱动。
作者: 可爱萌萌哒    时间: 2020-7-9 09:25
TTQ001 发表于 2020-7-9 08:24
请告诉我们您使用的是哪种类型的蜂鸣器,它是主动蜂鸣器还是被动蜂鸣器? 不同类型的蜂鸣器由不同的原理驱 ...

有缘蜂鸣器,接pnp放大,单片机送出低电平,发声
作者: wulin    时间: 2020-7-9 11:52
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.p ... 2074&highlight=
作者: lwh999995    时间: 2020-7-9 13:27
1. 不用单片机信号,直接给三极管低电平试试有没有声音,如果有声音,硬件正常的,最好接光耦驱动好一点
2. 直接在大循环feng=0; 测试一下,看看能不能驱动,如果正常,硬件与单片机共地或电路正常
3. 到此可能是你的定时器中的while()可能死循环了,可以一个普通的延时函数测试一下,把延时稍微延长一点时间,看看效果
作者: 可爱萌萌哒    时间: 2020-7-9 13:31
wulin 发表于 2020-7-9 11:52
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=192074 ...

又出来一个问题
作者: 可爱萌萌哒    时间: 2020-7-9 13:32
wulin 发表于 2020-7-9 11:52
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=192074 ...

以前不稳,现在不响,唉,不知道哪里问题,
作者: wulin    时间: 2020-7-9 14:21
可爱萌萌哒 发表于 2020-7-9 13:32
以前不稳,现在不响,唉,不知道哪里问题,

仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。
作者: 可爱萌萌哒    时间: 2020-7-9 14:42
wulin 发表于 2020-7-9 14:21
仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。

我用的开发版,是有缘蜂鸣器,
作者: 可爱萌萌哒    时间: 2020-7-9 14:43
wulin 发表于 2020-7-9 14:21
仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。

这个地方困扰好久了,改动程序,马上出来一个新问题,
作者: 轩baba    时间: 2020-7-9 15:14
1.确定单片机工作~检查复位电路:复位按键按下测量9(RES)脚是否置高(不按为低)~晶振电路是否连接正确,正确则最小系统正常。 2.若最小系统正常,确定程序是否烧录进去~楼主的问题很可能是程序没烧进去~ 3.若程序烧进去,用万用表测量各电路是否连接正确,确定没有虚焊漏焊以及短路现象~
作者: 乐儿翅    时间: 2020-7-12 11:29
晶振电路是否连接正确




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1