单片机,利用键盘控制LED灯显示不同的流水形式(单灯流水、双灯流水、随机流水),这个程序该怎么做啊。

单片机,利用键盘控制LED灯显示不同的流水形式(单灯流水、双灯流水、随机流水),这个程序该怎么做啊。,第1张

首先、你要的是3个功能

如果你要用3个按钮,那就每个实现1种

如果你用的是1个按钮,那就1个实现3种

-

单灯流水,P*口(灯的接口) 循环左移命令 _crol_

比方:led1=0xff_crol_(led1,1)P1=0xff 这样就OK

双灯:也是一样的道理,把_crol_(led1,2)改下2就可以了

注意左移命令,在头文件 intrins.h 里面

随机流水? 这点有点不明白意思,是随机亮灭,还是怎么样个随机流水呢

原理就是用RAND 产生随机数,然后付给LED灯IO口就可以了

1、单片机AT89C51的P2口接8个发光二极管,让这8个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如此循环。

参考程序:

ORG 0000H

start: MOV P1,#0H

CALL delay

MOV P1,#0FFH

CALL delay

CALL delay

LJMP start

delay:

MOV R7,#200

d2: MOV R6,#250

d1: DJNZ R6,d1

DJNZ R7,d2

RET

END

200*250次*2*1us=1000ms=1s

2、单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,

形成霹雳灯的效果,如此循环5次后全灭,延时0.5S。灯右移,形成霹雳灯的效果,

如此循环5次后全灭。延时0.5S。

共阳接法。二极管阴极分别串限流电阻510欧姆接到P2口。阳极全部接5V。

P2=0xfC

for(i=0i<5i++)

{

while(P2!=(0xcf))

{

delay()

P2<<=1P2+=1

}

while(P2!=(0xcf))

{

delay()

P2>>=1P2+=0x80

}

}

P2=0xff


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存