C51单片机流水灯蜂鸣器程序

C51单片机流水灯蜂鸣器程序,第1张

P2是端液羡口啊,所以P2=_crol_(P2,1)这句中等号左边的P2表袭前示的读取P2端口,这时的值取决于外围电路,而不是原来的赋值。所以需要一个变量来解决这个问题。

由你的代码看,是直流蜂鸣器它的声音频率是无法改变的。而你也只是要改变鸣叫和不鸣叫的间隔频率(只是纠正闹禅拍一下名词),但这个程序不行。修改如下:

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.2

ORG 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12362639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存