
由你的代码看,是直流蜂鸣器,它的声音频率是无法改变的。而你也只是要改变鸣叫和不鸣叫的间隔频率(只是纠正闹禅拍一下名词),但这个程序不行。修改如下:
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=0j<7j++)
{
a=_crol_(a,1)
P2=a
sp()
Delay_ms(500)
}
for(k=0k<7k++)
{
a=_cror_(a,1)
P2=a
sp()
Delay_ms(500)
}
}
}
P1 外接 LED,低电平发光。
P3.7 外接 无源蜂鸣器。
ORG 0MOV A, #255
MOV 陆桐 R2, #9
LP:
MOV P1, 族哪A
CALL DIDI
CLR C
RLC A
DJNZ R2, LP
SJMP 0
DIDI:
DJNZ R7, $
CPL P3.7
DJNZ R7, $
CPL P3.7
DJNZ R6, DIDI
DJNZ R7, $
DJNZ R7, $
DJNZ 早穗坦R6, $ - 4
RET
END
#includesbit beep=p0^4
void main()
{
beep=0
while(1)
}试试这个怎样,单片机在执行完程序之后会回到初始山纳状态,然后再重新执行程序,所以蜂鸣器就会脊简反复的开和关,听起来声音逗野没会小很多;加个while(1)死循环,让程序一直保持在beep=0的状态。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)