标题:
单片机初学者想知道为啥下面的程序led灯亮,但是蜂鸣器不响,蜂鸣器是P1^5
[打印本页]
作者:
1279095941
时间:
2020-4-14 09:36
标题:
单片机初学者想知道为啥下面的程序led灯亮,但是蜂鸣器不响,蜂鸣器是P1^5
#include<reg52.h>
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit beep=P1^5;
uchar temp;
void delay( uint z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void main()
{
temp=0xf0;
P2=temp;
delay(100);
while(1)
{
beep=0;
temp=_crol_(temp,1);
P2=temp;
beep=~beep;
delay(100);
}
}
作者:
hmgqljz
时间:
2020-4-14 11:09
看看你的硬件电路,蜂鸣器怎么驱动的
作者:
hmgqljz
时间:
2020-4-14 11:16
给你个蜂鸣器驱动函数void Beep() { unsigned char i ; for (i=0 ;i<100 ;i++) { delay(100) ; BEEP=!BEEP ; //Beep取反 } BEEP=1 ; //关闭蜂鸣器 delayms(100); }
作者:
小盼666
时间:
2020-4-14 11:39
你把延时放大点 0.1s可能听不出来
作者:
枫林售后
时间:
2020-4-14 13:47
while(1)
{
beep=0;
temp=_crol_(temp,1);
P2=temp;
beep=~beep;
delay(100);
}
把delay(100)改成500或更高试试,不行的话检查硬件
作者:
wulin
时间:
2020-4-14 14:00
驱动无源蜂鸣器最好单独写一个驱动子程序供主程序调用。
#include<reg52.h>
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
sbit beep=P1^5;
void delay( uint z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void Ring(unsigned int t) //半周期无源蜂鸣器驱动程序
{
unsigned char i;
while(t--)
{
beep=~beep; //蜂鸣器端口取反
for(i=0;i<25;i++); //延时0.234ms
} //约=蜂鸣器谐振频率2.135KHz,占空比50%方波
beep=1; //蜂鸣器端口复位
}
void main()
{
P2=0xfe;
Ring(500);
delay(1500);
while(1)
{
P2=_crol_(P2,1);
Ring(500);//响铃约120ms
delay(1500);//延时1.5s
}
}
作者:
liufeng180840
时间:
2020-4-14 15:09
延时时间太短了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1