找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我这个单片机程序为什么蜂鸣器不响?求帮助

[复制链接]
跳转到指定楼层
楼主
ID:711481 发表于 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;

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

使用道具 举报

沙发
ID:739545 发表于 2020-7-8 21:38 | 只看该作者
feng=0;没用,改成feng=~feng;
回复

使用道具 举报

板凳
ID:711481 发表于 2020-7-9 08:05 来自手机 | 只看该作者
lovezjf234 发表于 2020-7-8 21:38
feng=0;没用,改成feng=~feng;

feng=0低电平给pnp放大,他不是应该响吗?
回复

使用道具 举报

地板
ID:420836 发表于 2020-7-9 08:24 | 只看该作者
请告诉我们您使用的是哪种类型的蜂鸣器,它是主动蜂鸣器还是被动蜂鸣器? 不同类型的蜂鸣器由不同的原理驱动。
回复

使用道具 举报

5#
ID:711481 发表于 2020-7-9 09:25 来自手机 | 只看该作者
TTQ001 发表于 2020-7-9 08:24
请告诉我们您使用的是哪种类型的蜂鸣器,它是主动蜂鸣器还是被动蜂鸣器? 不同类型的蜂鸣器由不同的原理驱 ...

有缘蜂鸣器,接pnp放大,单片机送出低电平,发声
回复

使用道具 举报

6#
ID:213173 发表于 2020-7-9 11:52 | 只看该作者
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.p ... 2074&highlight=
回复

使用道具 举报

7#
ID:207421 发表于 2020-7-9 13:27 | 只看该作者
1. 不用单片机信号,直接给三极管低电平试试有没有声音,如果有声音,硬件正常的,最好接光耦驱动好一点
2. 直接在大循环feng=0; 测试一下,看看能不能驱动,如果正常,硬件与单片机共地或电路正常
3. 到此可能是你的定时器中的while()可能死循环了,可以一个普通的延时函数测试一下,把延时稍微延长一点时间,看看效果
回复

使用道具 举报

8#
ID:711481 发表于 2020-7-9 13:31 来自手机 | 只看该作者
wulin 发表于 2020-7-9 11:52
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=192074 ...

又出来一个问题
回复

使用道具 举报

9#
ID:711481 发表于 2020-7-9 13:32 来自手机 | 只看该作者
wulin 发表于 2020-7-9 11:52
相同问题重复发帖,前面的回复也不去看。
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=192074 ...

以前不稳,现在不响,唉,不知道哪里问题,
回复

使用道具 举报

10#
ID:213173 发表于 2020-7-9 14:21 | 只看该作者
可爱萌萌哒 发表于 2020-7-9 13:32
以前不稳,现在不响,唉,不知道哪里问题,

仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。
回复

使用道具 举报

11#
ID:711481 发表于 2020-7-9 14:42 来自手机 | 只看该作者
wulin 发表于 2020-7-9 14:21
仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。

我用的开发版,是有缘蜂鸣器,
回复

使用道具 举报

12#
ID:711481 发表于 2020-7-9 14:43 来自手机 | 只看该作者
wulin 发表于 2020-7-9 14:21
仿真蜂鸣器不响不代表实物不响,按你的程序应该是有源蜂鸣器,如果实物是无源蜂鸣器当然不响。

这个地方困扰好久了,改动程序,马上出来一个新问题,
回复

使用道具 举报

13#
ID:799680 发表于 2020-7-9 15:14 | 只看该作者
1.确定单片机工作~检查复位电路:复位按键按下测量9(RES)脚是否置高(不按为低)~晶振电路是否连接正确,正确则最小系统正常。 2.若最小系统正常,确定程序是否烧录进去~楼主的问题很可能是程序没烧进去~ 3.若程序烧进去,用万用表测量各电路是否连接正确,确定没有虚焊漏焊以及短路现象~
回复

使用道具 举报

14#
ID:801878 发表于 2020-7-12 11:29 | 只看该作者
晶振电路是否连接正确
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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