STC51单片机C语言开启蜂鸣器

STC51单片机C语言开启蜂鸣器,第1张

#include<reg52h>

sbit  beep=P0^4;

void  main()

  

   beep=0;

   while(1);

}

试试这个怎样,单片机在执行完程序之后会回到初始状态,然后再重新执行程序,所以蜂鸣器就会反复的开和关,听起来声音会小很多;加个while(1)死循环,让程序一直保持在beep=0的状态。

      蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。我们开发板上常用的蜂鸣器就是常常说的交流蜂鸣器或直流蜂鸣器(自激式蜂鸣器)。 直流蜂鸣器是给一定的驱动直流电压就会响。而交流蜂鸣器是需要给蜂鸣器一个脉冲才会响。常见的有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);

}

  }

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

有源蜂鸣器都是长鸣固定频率的,只要加5Ⅴ电压就响。要按不同频率发声,应该用无源蜂鸣器,或小功率的扬声器,即小喇叭。利用定时器定时,输出一定频率的方波信号即可。如1KHz方波,信号周期为1ms,定时05ms=500us,假设单片机晶振频率是12M,机器周期是1us,用定时器T0,定时的初始值,X=65536-500=65036=FE0CH,TH0=FEH,TL0=0CH。

汇编程序:

START:MOV TMOD , #01H

SETB TR0

LOOP:MOV TH0 , #0FEH

MOV TL0 , #0CH

JNB TF0 , $

CLR TF0

CPL P17 ; P17输出方波信号

SJMP LOOP

你想要其他频率的信号,可参照上面的计算过程和程序,自己修改一下就成了。

P10口接喇叭,P33接按键后接地。

P33用作外部中断口,中断方式为1,下降沿触发。

程序功能为按下按键后,蜂鸣器响,释放按键,蜂鸣器停止发声。

当然,要是将问题实用化的话,要在51单片机的IO口接上驱动电路,不然带不动大功率的元件的。

#include <reg51h>

sbit P1_0=P1^0;

sbit P3_3=P3^3;

void delay(unsigned char y)

{ unsigned char i,k;

for(i=0;i<y;i++)

{for(k=0;k<0;k++);}

}

void main()

{

while(1)

{

EA=1;

EX1=1;IT1=1;

IT1=1;

}

}

void SPEAKER() interrupt 2

{ unsigned char x;

EA=0;

P3_3=1;

x=P3_3;

while(x==0)

{

P1_0=0;

delay(1);

P1_0=1;

P3_3=1;

x=P3_3;

delay(1);

}

}

PS:如果是想学的话,程序只供参考,自己把程序写的更加好。要是只是应付老师之类的,就随意了。

你们给问题总是条件不全面!

假设P11控制LED,低电平亮;

P12控制蜂鸣器,低电平响。

sbit p11=p1^1;

sbit p12=p1^2;

if((p11=!p11) && (p11==1))

{

p12=0;

//此处延时50毫秒

p12=1;

}

ORG 0000H

STAR:

JB P10,$; p10作为开关 打开程序才能继续下去

CALL DI ;发音200ms

CALL NO_DI ;静音200ms

CALL DI

CALL NO_DI

CALL DI

CALL NO_DI

SJMP STAR;继续从头执行程序

;-------------------

DI:

MOV R1,#100 ;发音200ms

D2:

CLR P17

LCALL DEL ;约1ms

SETB P17;

LCALL DEL;设置蜂鸣声音的频率高低

DJNZ R1, D2

RET

;-------------------

NO_DI:

MOV R1,#100 ;静音200ms

ND2:

; CLR P17

LCALL DEL ;约1ms

SETB P17;

LCALL DEL;设置蜂鸣声音的频率高低

DJNZ R1, ND2

RET

;-------------------

DEL: ;约1ms

MOV R7,#5

DLY1:

MOV R6,#100

DJNZ R6,$

DJNZ R7,DLY1

RET

END

以上就是关于STC51单片机C语言开启蜂鸣器全部的内容,包括:STC51单片机C语言开启蜂鸣器、51单片机之蜂鸣器、求一个51单片机上能用的有源蜂鸣器不同频率响的汇编程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存