标题:
为什么我的蜂鸣器不响
[打印本页]
作者:
虚荣心像恶鬼
时间:
2016-12-1 21:18
标题:
为什么我的蜂鸣器不响
#include<reg51.h>
#define uchar unsigned char /*宏定义 */
#define uint unsigned int /*宏定义 */
uchar hour,hour_h,hour_l; /*定义小时,小时的高位,小时的低位*/
uchar min,min_h,min_l; /*分*/
uchar sec,sec_h,sec_l; /*秒*/
uchar int_num; /*定时溢出作用标号*/
sbit key_secadd=P1^1; /*定义了 p1.1为秒增1键,用在调时中断里*/
sbit key_minadd=P1^2; /*定义了 p1.2为分增1键,用在调时中断里*/
sbit key_houradd=P1^3; /*定义了 p1.3为时增1键,用在调时中断里*/
sbit key_intime=P1^0; //按P1.0进入调时
sbit key_quit=P1^5; //P1.5退出调时
sbit bell=P1^5; //小喇叭
void delay(uchar time); /*延时子函数声明*/
void display(); /*显示子函数声明*/
void inter_init(); /*定时器初始化子函数声明*/
void time24();
/****专用数码管显示表***/
uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40}; /*0x40显示“一”符号*/
uchar code wema[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00};
/*小时hour 分min 秒sec*/
//---------------------延时子函数--------------------------------
void delay(uchar time) /*延时子函数*/
{
uchar time_1;
for (;time>0;time--)
for (time_1=100;time_1>0;time_1--);
}
//---------------------初始化T0函数--------------------------
void time0(void) interrupt 1 /*定时器T0服务子程序*/
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
int_num++;
}
//---------------------定时器函数--------------------------
void inter_init() /*定时器初始化子函数*/
{
EA=1; /*开总中断*/
EX0=1; /*开外部中断0*/
ET0=1; /*打开定时器T0*/
TMOD=0x01; /*工作方式1*/
TCON = 0x00; /*触发方式*/
IP = 0x01; /*中断优先级别,T0优先*/
TH0=(65535-50000)/256; /*置初值,大约50ms一个中断 */
TL0=(65535-50000)%256;
TR0=1; /*置位TR0,启动定时器0*/
}
//---------------------24小时时间自加 --------------------------
void time24() /*时间递增*/
{
if(int_num==20) /*值满20,大约就是一秒的时间。*/
{ /* 其值设为2,则定时时间快10倍,可做毫秒计时*/
int_num=0;
sec++; /*秒值加1*/
if(sec==60) /*如果秒值满60,就归0*/
{
sec=0;
min++; /*分值加1*/
if(min==60)
{
min=0;
hour++; /*分值归0,时值加1*/
if(hour==24)
{
hour=0; /*时值满24归0*/
}
}
}
}
}
//-----------按键调整子函数-------------------------------------
void key(void) //按键调整子函数
{
if(key_intime==0)
{EA=0; // 关中断
sec=0; //秒归零
while(100) //正确
{ display();
if(key_quit==0)
{
EA=1;
break;
}
if(key_secadd==0)
{
delay(1);
if(key_secadd==0)
{
sec++;
while(!key_secadd);
if(sec==60)
{
sec=0;
}
}
}
if(key_minadd==0)
{
delay(80);
if(key_minadd==0)
{
min++;
while(!key_minadd);
if(min==60)
{
min=0;
}
}
}
if(key_houradd==0)
{
delay(80);
if(key_houradd==0)
{
hour++;
while(!key_houradd);
if(hour==24)
{
hour=0;
}
}
}
} }
}
//---------------------数码管显示子函数-------------------------------------
void display() /*数码管显示子函数*/
{
sec_h=sec/10; /*求出秒高位需要显示的字符*/
sec_l=sec%10; /*求出秒低位需要显示的字符*/
min_h=min/10;
min_l=min%10;
hour_h=hour/10;
hour_l=hour%10;
P2=duma[sec_h]; /*显示秒高位*/
P0=wema[6];
delay(10);
P2=duma[sec_l]; /*显示秒低位*/
P0=wema[7];
delay(10);
P2=duma[10]; /* “一”符号的显示 */
P0=wema[5];
delay(10);
P2=duma[min_h]; /*分*/
P0=wema[3];
delay(10);
P2=duma[min_l];
P0=wema[4];
delay(10);
P2=duma[10]; /* “一”符号的显示 */
P0=wema[2];
delay(10);
P2=duma[hour_h]; /*时*/
P0=wema[0];
delay(10);
P2=duma[hour_l];
P0=wema[1];
delay(10);
}
//---------------------主函数--------------------------------
/*void alarm_clock() //闹钟子函数-变频发声
{
uint i,j,y,m;
if(hour==00)//时到了00点?
{
if(min>=01){m=0;} //分大于或等于01就把m清零,若不成立向下执行
if(min==00)//到了00分?
{
if(m<15)
{
do{ //循环-变频
m++; display();
for(i=0;i<2000;i++)
{bell=~bell;for(j=0;j<24;j++);} //取反/
for(y=0;y<2000;y++)
{bell=~bell;for(j=0;j<25;j++);} //取反/
for(i=0;i<2000;i++)
{bell=~bell;for(j=0;j<26;j++);} //取反/
for(i=0;i<2000;i++)
{bell=~bell;for(j=0;j<27;j++);} //取反/
}
while(m<15); //闹15次结束
}
}
}
}*/
//---------------------主函数--------------------------------
void main()
{
inter_init(); /*定时器初始化*/
hour=23; /*自定义一个初值,方便快速观察翻转状态(可修改)*/
min=59;
sec=50;
while(1)
{
key();
time24(); /*分开时间,分别显示字符*/
//alarm_clock();//闹钟函数
display(); /*调用显示函数来显示*/
}
}
作者:
虚荣心像恶鬼
时间:
2016-12-1 21:47
P1^5接按键就可以退出 接蜂鸣器不可以退出 进不了闹钟调时功能 蜂鸣器不响
作者:
liuzhaoxin1020
时间:
2016-12-17 10:30
没有进入闹钟程序
作者:
phia
时间:
2016-12-17 11:15
蜂鸣器没有接收到信号
作者:
liuzhaoxin1020
时间:
2016-12-25 19:36
程序有问题,可以分享下pcb图不
作者:
mikanghon
时间:
2016-12-26 20:31
换成喇叭试一下
作者:
zyk123
时间:
2016-12-26 20:39
有图吗
作者:
925265150
时间:
2016-12-26 21:43
来个图
作者:
17863201837
时间:
2016-12-26 21:54
换成喇叭试一下
作者:
linyu1994
时间:
2016-12-26 22:26
来赚点币4
作者:
cj756801940
时间:
2016-12-27 15:29
我没看你的代码,但是我之前的蜂鸣器不响是因为蜂鸣器分有源和无源的,我当时没搞清楚,不知道会不会是这个原因
作者:
zhyntu88
时间:
2016-12-27 15:56
1,确定蜂鸣器的工作电压
2,确定蜂鸣器的工作方式,是高低电平驱动,还是脉冲方式驱动。
作者:
dmyy112
时间:
2016-12-27 17:57
哪种蜂鸣器,有的要脉冲才会响
作者:
Kener
时间:
2016-12-27 19:05
^5接按键就可以退出 接蜂鸣器不可以退出 进不了闹钟调时功能 蜂鸣器不
作者:
六六六111
时间:
2016-12-27 19:14
程序有问题
作者:
yingke
时间:
2016-12-27 20:54
蜂鸣器连接的I/O口要取反才能响
作者:
梦回冉末
时间:
2016-12-27 21:16
看存在接触的问题不
作者:
朱飞啊
时间:
2016-12-27 22:46
蜂鸣器分两种,即交流和直流。 直流蜂鸣器在施加直流电后即发出响声,交流蜂鸣器虽然也可用直流供电,但需另加振荡电路,起振后蜂鸣器才会发声。
作者:
5达go
时间:
2016-12-27 22:56
蜂鸣器那端有信号给进吗,看连线段有没有电平跳变,也就是红色低电平到蓝色高电平,程序就帮不上忙了
作者:
梦之翼
时间:
2016-12-27 23:10
蜂鸣器频率没调好
作者:
cgp0550525010
时间:
2016-12-28 09:15
先确定你用的是有源的还是无源的蜂鸣器
作者:
singlc
时间:
2016-12-28 09:56
有源的蜂鸣器才可以直接使用io口
作者:
qw5554959
时间:
2016-12-28 11:03
程序有问题,可以分享下pcb图不
作者:
周周周嘻嘻嘻
时间:
2016-12-28 21:44
蜂鸣器分两种,即交流和直流。 直流蜂鸣器在施加直流电后即发出响声,交流蜂鸣器虽然也可用直流供电,但需另加振荡电路,起振后蜂鸣器才会发声。
作者:
fefen0
时间:
2016-12-28 22:17
交流 还是直流的
作者:
人生如梦超
时间:
2016-12-29 11:10
脉冲的问题
作者:
灵风少人
时间:
2016-12-29 11:38
有有源轰鸣器和无源轰鸣器,无源的要脉冲才可以驱动。
作者:
灵风少人
时间:
2016-12-29 11:41
无源轰鸣器要脉冲,有源的就不用了。
作者:
C51鍗曠墖鏈
时间:
2016-12-29 22:17
原理图看看。。
作者:
zhangli019
时间:
2016-12-29 23:02
蜂鸣器分有源无源两种,先直接加电测试蜂鸣器有没有问题;在一步一步测试你的程序;你写的太长了,要分小段。小块的功能测试
作者:
w826398050
时间:
2016-12-30 10:39
哪种蜂鸣器,有的要脉冲才会响
作者:
13557837077
时间:
2016-12-30 23:14
仿真不响,还是实物不响
作者:
sjw
时间:
2016-12-31 09:46
用三极管控制,注意那个是输出引脚,要接到集级,发射机接vcc,接无缘风鸣器,控制音调音色。有缘蜂鸣器,就是低电平就响,接对就好
作者:
虚荣心像恶鬼
时间:
2017-1-25 00:27
已经搞清楚了 是有缘和无缘的问题 谢谢大家
作者:
199419zzq
时间:
2017-1-25 20:51
程序有问题,接蜂鸣器的要取反
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1