#includereg52.h sbit SPK=P1^2; //定义音乐输出端口unsigned char t; // 休止符标志unsigned char w; // 节拍选择 unsigned char Timer0_H,Timer0_L,Time; //致爱丽丝unsigned char code MUSIC[]={ 3,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 7,1,1, 2,2,1, 1,2,1, 6,1,2, 6,0,1, 1,1,1, 3,1,1, 6,1,1, 7,1,2, 5,0,1, 3,1,1, 5,1,1, 7,1,1, 1,2,2, 6,1,1, 3,1,1, 3,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 7,1,1, 2,2,1, 1,2,1, 6,1,2, 6,0,1, 1,1,1, 3,1,1, 6,1,1, 7,1,2, 5,0,1, 3,1,1, 5,1,1, 7,1,1, 6,1,2, 6,0,1, 7,1,1, 1,2,1, 2,1,1, 3,1,2, 1,1,1, 5,1,1, 4,2,1, 3,2,1, 2,2,2, 7,0,1, 4,1,1, 3,2,1, 2,2,1, 1,2,2, 6,0,1, 3,1,1, 2,2,1, 1,2,1, 7,0,1, 3,1,1, 3,1,1, 3,2,1, 3,1,1, /* 3,2,1, 3,2,1, 3,3,1, 2,2,1, 3,2,1, 2,3,1, //高音 3,3,1, 2,2,1, 3,2,1, 2,3,1, 3,3,1, 2,3,1, 3,3,1, 2,3,1, 3,3,1, 7,2,1, 2,3,1, 1,3,1, */ 3,2,1, 3,2,1, 3,2,1, 2,2,1, 3,2,1, 2,2,1, //低音 3,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 7,1,1, 2,2,1, 1,2,1, 6,2,2, 6,1,1, 1,2,1, 3,2,1, 6,2,1, 7,2,2, 5,1,1, 3,2,1, 5,2,1, 7,2,1, 1,3,2, 6,1,1, 3,2,1, 3,3,1, 2,3,1, 3,3,1, 2,3,1, 3,3,1, 7,2,1, 2,3,1, 1,3,1, 6,2,2, 6,1,1, 1,2,1, 3,2,1, 6,2,1, 7,2,2, 5,2,1, 3,2,1, 1,3,1, 7,2,1, 6,2,4, 6,2,4, 11 }; // 音阶频率表 高八位code unsigned char FREQH[]={ 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, //1,2,3,4,5,6,7,8,i 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, } ; // 音阶频率表 低八位code unsigned char FREQL[]={ 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B, 0x8F,0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, //1,2,3,4,5,6,7,8,i 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, }; /*------------------------------------------------ 节拍延时函数 各调1/4节拍时间: 调4/4 125ms 调2/4 250ms ------------------------------------------------*/void delay_ms(){ unsigned char i; for(i=0;i230;i++);}void delay(unsigned char t){ unsigned char i; for(i=0;it;i++) { unsigned int k,j; j=500; for(k=0;kj;k++) { delay_ms(); } } }/*------------------------------------------------ 定时器0中断------------------------------------------------*/void TIM0_ISR() interrupt 1{ TR0=0; if(t!=0) { SPK=!SPK; } else { SPK=0; } TH0=Timer0_H; TL0=Timer0_L; TR0=1; }/*------------------------------------------------ 歌曲处理函数------------------------------------------------*/void Song(){ TH0=Timer0_H;//赋值定时器时间,决定频率 TL0=Timer0_L; TR0=1; //打开定时器 delay(Time); //延时所需要的节拍 }/*------------------------------------------------ 主函数------------------------------------------------*/ void main(void) { unsigned int k,i; TMOD|=0x01; //置定时器0工作方式1 EA=1; //打开全局中断 ET0=1; //打开定时0中断 while(1) { i=0;// w=0; while(MUSIC[i]!=11) { //音乐数组长度 ,唱完从头再来 k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振荡频率所需数据 t=MUSIC[i]; Timer0_H=FREQH[k]; Timer0_L=FREQL[k]; Time=MUSIC[i+2]; //节拍时长 i=i+3;// w++; Song(); } } }
#includereg51.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=0;ix;i++)
for(j=0;j60;j++);
}void pulse_BZ(int count;int TH;int TL)
{
int i;
for(i=o;icount;i++) //循环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单片机,编写延时程序,控制蜂鸣器发声:
很简单的
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
sbit fengmingqi=P0^0; //声明IO口
void delay(uint x)//延时子函数
{
uint i,j;
for(i=x;i0;i--)
for(j=50;j0;j--);
}
void main(void)
{
while(1) //循环
{
fengmingqi=1; //p0.0口高电平,蜂鸣器发声
delay(500); //延时
fengmingqi=0; //p0.0口低电平,蜂鸣器不发声
delay(500); //延时
}
}
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
sbit SPK=P1^0;
sbit K1=P1^7;
//发声函数,注意这里是用扬声器,不能用普通的蜂鸣器
void Alarm(uchar t)
{
uchari,j;
for(i=0;i200;i++)
{
SPK=~SPK;
for(j=0;jt;j++); //由参数t行成不同的频率产生不同的声音
}
}
voidmain()
{
SPK=0;
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}
#inclde "reg52.h" /*头文件*/
#define P1^1 p1.1 /*将蜂蜜器连到这个引脚,你也可以连到其他脚,改这行代码就是*/
int i,j;
void delay() /*延时程序*/
{
for(i=0;i1000;i++)
{
for(j=0;j1000;j++)
{
;/*nothing*/
}
}
}
void main()
{
while(1) /*让蜂鸣器反复响停响停。。。*/
{
p1.1 = 1;/*响*/
delay();
p1.1 = 0;/*停*/
}
}
你丫的要看书,好好学习,,看你问话的口气,一点都不谦虚,像别人欠你的一样。
设按键为k1,k2,k3
void main()
{
char beepflag=0;
while(1)
{
if((k1==0)
beepflag|=0x01;
else
beepflag=0xFE;
if(k2==0) //按键按下
beepflag|=0x02;
else
beepflag=0xFD;
if(k3==0) //按键按下
beepflag|=0x04;
else
beepflag=0xFB;
//------------这里判断字符低三位,如果有其中两位置一,则开启蜂鸣器
}
}
思路大概就是这样,如对您有帮助,请采纳,谢谢!
int sec=60;
int cnt=0;
char Buzzer=1;//关闭蜂鸣器
void Timer0Init(void) //5毫秒@11.0592MHz
{
AUXR = 0x7F; //定时器时钟12T模式
TMOD = 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0xEE; //设置定时初值
TF0 = 0; //清除TF0标志
ET0 = 1;//开T0中断
EA = 1;//开总中断
TR0 = 1; //定时器0开始计时
}
void Timer0Interrupt(void) interrupt 1
{
cnt++;
if(cnt=200)
{
cnt=0;sec--;
if(sec==0)EA=0;
}
}
其它就自己写了。
if(sec==0)Buzzer=0;
单片机l蜂鸣器报警代码的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:单片机l蜂鸣器报警代码