单片机 蜂鸣器加流水灯问题
我做一个蜂鸣器加流水灯的试验运行没问题但是延时如果调大蜂鸣器响声就不正常了这是怎么个情况#include<reg51.h>#include<intrins.h>#defi...
我做一个蜂鸣器加流水灯的试验 运行没问题 但是延时如果调大 蜂鸣器响声就不正常了 这是怎么个情况
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
uchar temp,a,b;
while(1)
{
temp = 0xfe;
P0 = temp;
for(a=0;a<7;a++)
{
temp = _crol_(temp,1); //左移1位
teep = 0;
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
}
for(b=0;b<7;b++)
{
temp = _cror_(temp,1); //右移1位
teep = 0; //蜂鸣器响
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
}
}
}
Delay(uint z) //延时程序
{
uint i,j;
for(i=100;i>0;i--)
for(j=z;j>0;j--);
}
求大神指点 谢谢了 展开
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
uchar temp,a,b;
while(1)
{
temp = 0xfe;
P0 = temp;
for(a=0;a<7;a++)
{
temp = _crol_(temp,1); //左移1位
teep = 0;
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
}
for(b=0;b<7;b++)
{
temp = _cror_(temp,1); //右移1位
teep = 0; //蜂鸣器响
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
}
}
}
Delay(uint z) //延时程序
{
uint i,j;
for(i=100;i>0;i--)
for(j=z;j>0;j--);
}
求大神指点 谢谢了 展开
展开全部
具体不知道蜂鸣器响声如何不正常。
但程序上时序有点不恰当。
temp = _cror_(temp,1); //右移1位
teep = 0; //蜂鸣器响
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
蜂鸣器停再过2~3个机器周期后 响,2~3个机器周期顶多就1ms,
人耳能区分开来?这个确定是正常??
建议在 teep = 1; //蜂鸣器停
后面加一点点延迟,比如Delay(60);
但程序上时序有点不恰当。
temp = _cror_(temp,1); //右移1位
teep = 0; //蜂鸣器响
P0 = temp;
Delay(260);
teep = 1; //蜂鸣器停
蜂鸣器停再过2~3个机器周期后 响,2~3个机器周期顶多就1ms,
人耳能区分开来?这个确定是正常??
建议在 teep = 1; //蜂鸣器停
后面加一点点延迟,比如Delay(60);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
宿兴电子
2024-11-28 广告
2024-11-28 广告
作为深圳市宿兴电子有限公司的工作人员,我无法对附近的蜂鸣器进行推荐。不过,您可以考虑以下因素来选择适合自己的蜂鸣器:1. 功能:选择适用于您需要的蜂鸣器,例如,用于提示、报警或装饰等不同场合。2. 声音:根据您的需要选择不同声音类型的蜂鸣器...
点击进入详情页
本回答由宿兴电子提供
展开全部
//延时程序有些问题,调整一下顺序
Delay(uint z) //延时程序
{
uint i,j;
for(j=z;j>0;j--)
for(i=100;i>0;i--);
}
//另外,蜂鸣器有两种,一种是随频率而发声变化(speaker),一种是固定声音的,你选后一种就可以了。
Delay(uint z) //延时程序
{
uint i,j;
for(j=z;j>0;j--)
for(i=100;i>0;i--);
}
//另外,蜂鸣器有两种,一种是随频率而发声变化(speaker),一种是固定声音的,你选后一种就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
uchar temp, a, b;
temp = 0xfe;
P0 = temp;
while(1) {
for(a = 0; a < 7; a++) {
temp = _crol_(temp, 1); //左移1位
P0 = temp;
Delay(260);
}
for(b = 0; b < 7; b++) {
temp = _cror_(temp, 1); //右移1位
P0 = temp;
Delay(260);
}
}
}
Delay(uint z) //含有发音功能的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
teep = 0; for(i = 100; i > 0; i--);
teep = 1; for(i = 100; i > 0; i--);
}
}
试试看。
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit teep = P1^2; // P1.2口控制蜂鸣器
Delay(uint);
main ()
{
uchar temp, a, b;
temp = 0xfe;
P0 = temp;
while(1) {
for(a = 0; a < 7; a++) {
temp = _crol_(temp, 1); //左移1位
P0 = temp;
Delay(260);
}
for(b = 0; b < 7; b++) {
temp = _cror_(temp, 1); //右移1位
P0 = temp;
Delay(260);
}
}
}
Delay(uint z) //含有发音功能的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
teep = 0; for(i = 100; i > 0; i--);
teep = 1; for(i = 100; i > 0; i--);
}
}
试试看。
更多追问追答
追问
能解释下那个延时程序吗 怎么就能出声了? 谢谢
追答
无源蜂鸣器,需要反复的通、断,才能发音。
Delay(uint z) //含有发音功能的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
teep = 0; for(i = 100; i > 0; i--);--零,延时
teep = 1; for(i = 100; i > 0; i--);--壹,延时
}---------------循环多少次,这就发音了。
}
如果需要,还可以编写一个不发音的延时程序:
Delay_2 (uint z) //不发音的延时程序
{
uint i, j;
for(j = z; j > 0; j--) {
teep = 1; for(i = 100; i > 0; i--);--壹,延时
teep = 1; for(i = 100; i > 0; i--);--壹,延时
}
}
用在不同的场合。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这蜂鸣器的响声本来看的就是开关之间的时间,间隔时间不动,响声也不同啊,这不是很正常嘛
追问
是说蜂鸣器随着延时的曾加或者减小声音也会变得不同吗
追答
是啊,蜂鸣器不就是这么用的嘛,主要不就是看间隔时间嘛,间隔不同,频率就不同,书上有讲的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询