51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止

51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止,第1张

就拿三个灯来说吧

#include"reg52h"

#include"intrinsh"

sbit led1=P2^0;

sbit led2=P2^1;

sbit led3=P2^2;//led灯

sbit ring=P2^3;//蜂鸣器

void Delay1000ms() //@110592MHz

{

unsigned char i, j, k;

_nop_();

_nop_();

i = 43;

j = 6;

k = 203;

do

{

do

{

while (--k);

} while (--j);

} while (--i);

}

void main(){

led1=0;led2=0;led3=0;//初始化为零

//下面开始

goto B:

A:while(1){;}//跑完一遍程序后执行死循环

B:

led1=1;Delay1000ms();led1=0;

led2=1;Delay1000ms();led2=0;

led3=1;Delay1000ms();led3=0;//流水灯

ring=1;Delay1000ms();ring=0;

ring=1;Delay1000ms();ring=0;

ring=1;Delay1000ms();ring=0;//蜂鸣

goto A;//跳转到死循环执行

}

sbit buzzer=p37;

上面的p37你在其他地方宏定义了吗?

没有就改为P3^7

其他的除非是用中文全角输入有错,不然应该没问题了……

再有问题就应该是keil软件问题,再装一次,就好了

如果是蜂鸣器的话,那么加一个电平信号就可以发声了。\x0d\FMQ EQU P10\x0d\ORG 0000H\x0d\LJMP MAIN\x0d\ORG 0030H\x0d\MAIN:\x0d\CPL FMQ\x0d\LCALL DELAY\x0d\SJMP MAIN\x0d\DELAY:\x0d\MOV R2,#200\x0d\DLY:\x0d\MOV R3,#250\x0d\DJNZ R3,$\x0d\DJNZ R2,DLY\x0d\RET\x0d\END

让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#include#defineucharunsignedchar#defineuintunsignedintsbitSPK=P1^0;sbitK1=P1^7;//发声函数voidAlarm(uchart){uchari,j;for(i=0;i<200;i++){SPK=~SPK;for(j=0;j

      蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。我们开发板上常用的蜂鸣器就是常常说的交流蜂鸣器或直流蜂鸣器(自激式蜂鸣器)。 直流蜂鸣器是给一定的驱动直流电压就会响。而交流蜂鸣器是需要给蜂鸣器一个脉冲才会响。常见的有PWM波控制蜂鸣器的频率。脉冲就是高低电平的切换,如下图:一个方波脉冲

我们用单片机的IO口实现一种这样高低电平的方波,驱动蜂鸣器发音。我们板子上配的就是交流蜂鸣器。

     接下来我们看一下蜂鸣器的硬件电路:

蜂鸣器通过三极管驱动。我们利用杜邦线将蜂鸣器的一端J8连接到板子上P15管脚上。

 示例程序:

  #include "reg52h"

  #include "intrinsh"

  typedef unsigned char uint8;

  typedef unsigned int  uint16;

  sbit beep = P1^5;

  void delay(uint16 i)

  {

  while(i--);

  }

  void main()

  {

while(1)

{

beep = ~beep;

delay(10);

}

  }

该程序实现蜂鸣器的响和停,程序较为简单,可以在此基础上进行扩展。

请确认你这蜂鸣器的类型:

1,如果是有源的,那么检查电路,或者单独测试 BUZZ=0 时,会不会响。假如会响,那么就是你上面一段程序没有运行到 BUZZ=0处,继续检查;如果不会响,说明控制蜂鸣器的电路有问题;

2,如果是无源的,需要发送方波才会响,类似 BUZZ=0 ;BUZZ=1 ;BUZZ=0 ;BUZZ=1 ;BUZZ=0 ;BUZZ=1 ;

你这里没有说清楚,所以具体还是靠你自己查了,这里只能给个参考。

简易蜂鸣器程序:

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit P36=P3^6;//我的系统板蜂鸣器口定义

sbit k1=P1^4; //按钮1

sbit k2=P1^5; //按钮2

void Delay(uint num)//延时函数

{uchar i,j;

for(i=0;i<255;i--)

{for(j=0;j>0;j++)}

}

main()

{

while(1)

{

if(k1==0)

{P36=0;//蜂鸣器响

Delay();

P36=1;//蜂鸣器停

Dalay();

key_time();

}

}

}

以上就是关于51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止全部的内容,包括:51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止、keil编程问题、单片机用汇编语言怎么写一个蜂鸣器程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10171330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存