#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<reg51.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=0i<200i++)
{
SPK=~SPK
for(j=0j<tj++)//由参数t行成不同的频率产生不同的声音
}
}
voidmain()
{
SPK=0
while(1)
{
if(K1==1)
{
Alarm(90)
Alarm(120)
}
}
}
ORG 0000HSTAR:
JB P1.0,$ p1.0作为开关 打开程序才能继续下去
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 P1.7
LCALL DEL 约1ms
SETB P1.7
LCALL DEL设置蜂鸣声音的频率高低
DJNZ R1, D2
RET
-------------------
NO_DI:
MOV R1,#100 静音200ms
ND2:
CLR P1.7
LCALL DEL 约1ms
SETB P1.7
LCALL DEL设置蜂鸣声音的频率高低
DJNZ R1, ND2
RET
-------------------
DEL: 约1ms
MOV R7,#5
DLY1:
MOV R6,#100
DJNZ R6,$
DJNZ R7,DLY1
RET
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)