51单片机蜂鸣器发出1KHz的信号的c语言程序

51单片机蜂鸣器发出1KHz的信号的c语言程序,第1张

//假设晶振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;

}

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);

}

}

}

#include<reg51h>

#define uchar unsigned char

sbit k1=P1^0;

sbit k2=P1^1;

sbit k3=P1^2;

sbit k4=P1^3;

sbit fmq=P1^7;

uchar cnt,sec;

vodi t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

cnt++;

if(cnt>=20)

    {

    cnt=0;

    sec--;

    if(sec==0)

        {

        TR0=0;

        fmq=1;

        }

    }

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

while(1)   

    {

    if(k1==0)

        {

        sec=1;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    if(k2==0)

        {

        sec=2;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    if(k3==0)

        {

        sec=3;

        cnt=0;

        TR0=1;

        while(k3==0);

        fmq=0;

        }

    if(k4==0)

        {

        sec=4;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    }

}

我写的一个简单的C程序

Just for you information!^_^^_^^_^

#include <reg51H>

#include <INTRINSH>

bit flag;

sbit P1_7=P1^7;

sbit P1_0=P1^0;

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();

}

}

}

}

很简单的

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit fengmingqi=P0^0; //声明IO口

void delay(uint x)//延时子函数

{

uint i,j;

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

for(j=50;j>0;j--);

}

void main(void)

{

while(1) //循环

{

fengmingqi=1; //p00口高电平,蜂鸣器发声

delay(500); //延时

fengmingqi=0; //p00口低电平,蜂鸣器不发声

delay(500); //延时

}

}

蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(15~15V直流工作电压),多谐振荡器起振,输出15~25kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。

下面是电磁式蜂鸣器的外形及结构图。。。电磁式蜂鸣器实物图:电磁式蜂鸣器结构示意图:图 1图 2 电磁式蜂鸣器内部构成:1 防水贴纸

2 线轴

3 线圈

4 磁铁 5 底座

6 引脚

7 外壳

8 铁芯9 封胶

10 小铁片

11 振动膜

12 电路板

一、电磁式蜂鸣器驱动原理

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:

S51增强型单片机实验板蜂鸣器驱动原理图:图 3

如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P37引脚控制,当P37输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P37输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P37脚的电平来使蜂鸣器发出声音和关闭。

程序中改变单片机P37引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P37输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。

二、蜂鸣器列子 下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。

1、简单的蜂鸣器实验程序:本程序通过在P37输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。

2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上P12和P15上的两个**发光二极管来发出**警示灯。

3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。

以上就是关于51单片机蜂鸣器发出1KHz的信号的c语言程序全部的内容,包括:51单片机蜂鸣器发出1KHz的信号的c语言程序、C51单片机流水灯蜂鸣器程序、求汇编语言或c语言编写无源蜂鸣器程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存