由你的代码看,是直流蜂鸣器,它的声音频率是无法改变的。而你也只是要改变鸣叫和不鸣叫的间隔频率(只是纠正闹禅拍一下名词),但这个程序不行。修改如下:
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)
}
}
}
原理图都没画完,至少和你描述激嫌灶的不一样啊。流水灯呢,单片机不能并行运行程序,同一时刻只能执行一条语句。你要数码管走时的情况下还要流明扮水灯显示花样,可能有点够呛。其它的都是小意思者蚂。蜂鸣器一直响很容易实现,无源蜂鸣竖吵者器给电平就可以控制发声了,程序如余薯下:
FMQ EQU P3.2ORG 0000H
LJMP 碰袭MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
CLR FMQ
LOOP:
MOV P1,A
RL A
LCALL DELAY
SJMP LOOP
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)