8个灯泡依次堆加滚动。第8个灯泡滚到第8个位置,第7个滚到第7个位置,依此类推,第1个灯泡滚到第一个位置。
P2.0~P2.7接8个灯泡,第一个灯泡先从P2.0移到P2.7,到了P2.7之后,保持亮着,接着第二个灯泡从P2.0移到P2.6,也保持亮着,接着第三个灯光从P2.0移到P2.5.也保持亮着状态,依此类推。最后就是全亮了,再循环下去。我用二进制表示下。1为亮。
最终状态如下:
10000000,11000000,11100000,11110000,11111000,11111100,11111110,11111111。
帮我调下程序,如下:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
void delay(int x)
{
int y;
while(x--) for(y=0;y<120;y++);
}
void main()
{
int i;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xFF&(0x01<<i;
delay();//延时函数 自己编写
}
for(i=0;i<7;i++)
{
P2=0xFF&(0x80|(0x01<<i);
delay();
}
for(i=0;i<6;i++)
{
P2=0xFF&(0xC0|(0x01<<i));
delay();
}
for(i=0;i<5;i++)
{
P2=0xFF&(0xE0|(0x01<<i));
delay();
}
for(i=0;i<3;i++)
{
P2=0xFF&(0xF0|(0x01<<i));
delay();
}
for(i=0;i<2;i++)
{
P2=0xFF&(0xF8|(0x01<<i));
delay();
}
P2=0xFF&(0xFC|(0x01<<1));
delay();
P2=0xFF;
delay();
}
}
请位高手帮我写个89C51单片机控制流水灯C语言源程序。谢谢
答案:4 悬赏:50
解决时间 2021-04-06 23:59
- 提问者网友:伴他一生,无悔
- 2021-04-06 14:50
最佳答案
- 二级知识专家网友:万千宠爱
- 2021-04-06 15:04
用P2=0xFF&(0x01+2*i)用for循环,之后是P2=0xFF&(0x81+2*i)用for循环,之后类推P2=P2=0xFF&(0xC1+2*i),P2=0xFF&(0xE1+2*i),P2=0xFF&(0xF1+2*i),P2=0xFF&(0xF9+2*i),P2=0xFF&(0xFD+2*i),P2=0xFF;每次循环都比前一次少一次循环就可以了。
全部回答
- 1楼网友:猖狂的痴情人
- 2021-04-06 16:51
接电路注意,二极管正极接电源vcc,是低电平驱动
org 00h
sjmp star
star: org 30h
loop: mov p1,#00h
lcall delay
mov p1,#aah
lcall delay
mov p1,#55h
lcall delay
mov p1,#0f0h
lcall delay
mov p1,#0fh
lcall delay
ljmp loop
delay:mov r7,#250 ;延时0.5秒需要更长的话多加几个lcall delay
d1: mov r6,#250
d2:nop
nop
nop
nop
nop
nop
djnz r6,d2
djnz r7,d1
ret
end
- 2楼网友:努力只為明天
- 2021-04-06 15:43
用一组端口就行了,89C51单片机有一个函数_crol_或_cror_就很简单了。
- 3楼网友:时光挺欠揍
- 2021-04-06 15:11
按你的描述,这应该不叫流水灯了吧,说的更明白一点,我看我有现成的没……
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯