51单片机蜂鸣器响程序怎么写最简单的。

51单片机蜂鸣器响程序怎么写最简单的。,第1张

如果是有源蜂鸣器的话很简单,只需要按照对应的电路给出电平(比如PNP驱动的只要给出低电平即可),无源的麻烦一点,需要给一定频率的方波才能发声,增强型51可以直接使用PWM,普通51可以使用定时器模拟PWM进行驱动,网上的例子很多,多看看就行了

P2是端口啊,所以P2=_crol_(P2,1);这句中等号左边的P2表示的读取P2端口,这时的值取决于外围电路,而不是原来的赋值。所以需要一个变量来解决这个问题。

由你的代码看,是直流蜂鸣器,它的声音频率是无法改变的。而你也只是要改变鸣叫和不鸣叫的间隔频率(只是纠正一下名词),但这个程序不行。修改如下:

void sp()

{

speak=1;

Delay_ms(5);

speak=0;

Delay_ms(5);

}

void main(void)

{

uchar j,k,a;

a=0xfe;

P2=0xfe;

Delay_ms(500);

while(1)

{

for(j=0;j<7;j++)

{

a=_crol_(a,1);

P2=a;

sp();

Delay_ms(500);

}

for(k=0;k<7;k++)

{

a=_cror_(a,1);

P2=a;

sp();

Delay_ms(500);

}

}

}

6. 报警产生器

1. 实验任务

用P10输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P17接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。

2. 电路原理图

图461

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P10端口用导线连接到“音频放大模块”区域中的SPK IN端口上;

(2. 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭;

(3. 把“单片机系统”区域中的P17/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;

4. 程序设计内容

(1. 信号产生的方法

500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;

5. 程序框图

图462

6. 汇编源程序

FLAG BIT 00H

ORG 00H

START: JB P17,START

JNB FLAG,NEXT

MOV R2,#200

DV: CPL P10

LCALL DELY500

LCALL DELY500

DJNZ R2,DV

CPL FLAG

NEXT: MOV R2,#200

DV1: CPL P10

LCALL DELY500

DJNZ R2,DV1

CPL FLAG

SJMP START

DELY500: MOV R7,#250

LOOP: NOP

DJNZ R7,LOOP

RET

END

7. C语言源程序

#include <AT89X51H>

#include <INTRINSH>

bit flag;

unsigned char count;

void dely500(void)

{

unsigned char i;

for(i=250;i>0;i--)

{

_nop_();

}

}

void main(void)

{

while(1)

{

if(P1_7==0)

{

for(count=200;count>0;count--)

{

P1_0=~P1_0;

dely500();

}

for(count=200;count>0;count--)

{

P1_0=~P1_0;

dely500();

dely500();

}

}

}

}

//假设晶振12MHZ,P17控制蜂鸣器

#include "reg51h"

sbit FMQ=P1^7;

void main(void)

{

TMOD |= 0X10; //定时器1工作于方式1,16位定时器

TH1 = 0XFE; //定时器1定时时间=500uS

TL1 = 0X0C;

ET1 = 1; //使能定时器1中断

EA =1; //开总中断

while(1)

{

}

}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组

{

TH1 = 0XFE; //定时器1定时时间=500us

TL1 = 0X0C;

FMQ=!FMQ;

}

以上就是关于51单片机蜂鸣器响程序怎么写最简单的。全部的内容,包括:51单片机蜂鸣器响程序怎么写最简单的。、C51单片机流水灯蜂鸣器程序、求一个关于单片机的蜂鸣器的C语言程序,如果好,可行的话有追加分~等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9817287.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存