
51单片机蜂鸣器程序为:
#include"reg52.h"
typedef unsigned char u8
typedef unsigned int u16
sbit beep=P1^5
void delay(u16 i)
{
while(i--)
}
void main()
{
while(1)
{
beep=~beep
delay(1000)//控制音调频率
beep=~beep/控制声音大小
delay(10)
}
}
扩展资料:
BUZZER蜂鸣器的分类:
1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器)。
2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。
3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器)。
4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。
电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。
由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。
#include<reg51.h>
sbit buzzer = P1^0 声明区
void delay(int)
void pulse_BZ(int,int,int)声明函数void main(void)
{
while(1)
{
pulse_BZ(500,1,1) 调用发声
delay(1000) 延时1000 X 0.5ms
pulse_BZ(500,1,1)
delay(1000)
pulse_BZ(500,1,1)
delay(1000)
pulse_BZ(200,1,1)
delay(1000)
pulse_BZ(200,1,1)
delay(1000)
}
}void delay(int x)
{
int i,j
for(i=0i<xi++)
for(j=0j<60j++)
}void pulse_BZ(int countint THint TL)
{
int i
for(i=oi<counti++) //循环count次,时间count x 1ms
{
buzzer=1 //此程序段产生1HZ 信号
delay(TH)
buzzer=0
delay(TL)
}
}
51单片机蜂鸣器
开关C语言程序:
sbit P2^0=KEY
sbit P2^1=BEEP
unsigned char KEYNUM=0
void main()
{
while(1)
{
if(KEY==0)//开关按下;
{
KEYNUM++
}
if(KEYNUM==1)//第一次按下;
{
BEEP=1//蜂鸣器响
}
if(KEYNUM==2)/第二次按下;
{
BEEP=0//蜂鸣器不响
KEYNUM=0
}
}
}
51单片机,编写延时程序,控制蜂鸣器发声:
很简单的
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit fengmingqi=P0^0//声明IO口
void delay(uint x)//延时子函数
{
uint i,j
for(i=xi>0i--)
for(j=50j>0j--)
}
void main(void)
{
while(1) //循环
{
fengmingqi=1//p0.0口高电平,蜂鸣器发声
delay(500)//延时
fengmingqi=0//p0.0口低电平,蜂鸣器不发声
delay(500)//延时
}
}
#include\r\n#include\r\n//本例采用89C52,晶振为11.0592MHZ\r\n//关于如何编制音乐代码,其实十分简单,各位可以看以下代码.\r\n//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍\r\n//所以拿出谱子,试探编吧!\r\nsbitBeep=P1^5\r\n\r\nunsignedcharn=0//n为节拍常数变量\r\nunsignedcharcodemusic_tab[]={\r\n0x18,0x30,0x1C,0x10,//格式为:频率常数,节拍常数,频率常数,节拍常数,\r\n0x20,0x40,0x1C,0x10,\r\n0x18,0x10,0x20,0x10,\r\n0x1C,0x10,0x18,0x40,\r\n0x1C,0x20,0x20,0x20,\r\n0x1C,0x20,0x18,0x20,\r\n0x20,0x80,0xFF,0x20,\r\n0x30,0x1C,0x10,0x18,\r\n0x20,0x15,0x20,0x1C,\r\n0x20,0x20,0x20,0x26,\r\n0x40,0x20,0x20,0x2B,\r\n0x20,0x26,0x20,0x20,\r\n0x20,0x30,0x80,0xFF,\r\n0x20,0x20,0x1C,0x10,\r\n0x18,0x10,0x20,0x20,\r\n0x26,0x20,0x2B,0x20,\r\n0x30,0x20,0x2B,0x40,\r\n0x20,0x20,0x1C,0x10,\r\n0x18,0x10,0x20,0x20,\r\n0x26,0x20,0x2B,0x20,\r\n0x30,0x20,0x2B,0x40,\r\n0x20,0x30,0x1C,0x10,\r\n0x18,0x20,0x15,0x20,\r\n0x1C,0x20,0x20,0x20,\r\n0x26,0x40,0x20,0x20,\r\n0x2B,0x20,0x26,0x20,\r\n0x20,0x20,0x30,0x80,\r\n0x20,0x30,0x1C,0x10,\r\n0x20,0x10,0x1C,0x10,\r\n0x20,0x20,0x26,0x20,\r\n0x2B,0x20,0x30,0x20,\r\n0x2B,0x40,0x20,0x15,\r\n0x1F,0x05,0x20,0x10,\r\n0x1C,0x10,0x20,0x20,\r\n0x26,0x20,0x2B,0x20,\r\n0x30,0x20,0x2B,0x40,\r\n0x20,0x30,0x1C,0x10,\r\n0x18,0x20,0x15,0x20,\r\n0x1C,0x20,0x20,0x20,\r\n0x26,0x40,0x20,0x20,\r\n0x2B,0x20,0x26,0x20,\r\n0x20,0x20,0x30,0x30,\r\n0x20,0x30,0x1C,0x10,\r\n0x18,0x40,0x1C,0x20,\r\n0x20,0x20,0x26,0x40,\r\n0x13,0x60,0x18,0x20,\r\n0x15,0x40,0x13,0x40,\r\n0x18,0x80,0x00\r\n}\r\n\r\nvoidint0()interrupt1//采用中断0控制节拍\r\n{TH0=0xd8\r\nTL0=0xef\r\nn--\r\n}\r\n\r\nvoiddelay(unsignedcharm)//控制频率延时\r\n{\r\nunsignedi=3*m\r\nwhile(--i)\r\n}\r\n\r\nvoiddelayms(unsignedchara)//豪秒延时子程序\r\n{\r\nwhile(--a)//采用while(--a)不要采用while(a--)各位可编译一下看看汇编结果就知道了!\r\n}\r\n\r\nvoidmain()\r\n{unsignedcharp,m//m为频率常数变量\r\nunsignedchari=0\r\nTMOD&=0x0f\r\nTMOD|=0x01\r\nTH0=0xd8TL0=0xef\r\nIE=0x82\r\nplay:\r\nwhile(1)\r\n{\r\na:p=music_tab[i]\r\nif(p==0x00){i=0,delayms(1000)gotoplay}//如果碰到结束符,延时1秒,回到开始再来一遍\r\nelseif(p==0xff){i=i+1delayms(100),TR0=0gotoa}//若碰到休止符,延时100ms,继续取下一音符\r\nelse{m=music_tab[i++],n=music_tab[i++]}//取频率常数和节拍常数\r\nTR0=1//开定时器1\r\nwhile(n!=0)Beep=~Beep,delay(m)//等待节拍完成,通过P1口输出音频(可多声道哦!)\r\nTR0=0//关定时器1\r\n}\r\n}\r\n\r\n你参考这个吧欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)