昨晚终于把流水灯的程序写出来了,好高兴啊!虽然是用很笨的方法,因为对循环用得还不是很熟,但终究还是有成就感的!
题目: /*硬件前提:用51的P3口控制8个LED,0 点亮,1 熄灭。
(1)第1,3,5,7个灯半亮,其余的全亮。
(2)第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮6/8,第7个亮7/8,第8个全亮。
(3)来点小难的,所有的灯逐渐从暗到全亮,再由全亮到暗。*/
#include<at89x51.h>
#define uchar unsigned char
void delay(uchar i);
void sbj_1();
void sbj_2();
void sbj_3();
void sbj_4();
void main()
{
unsigned int i;
for(i=500;i;i--)sbj_1();
for(i=500;i;i--)sbj_2();
for(i=5;i;i--)sbj_3();
}
void delay(uchar i)
{
uchar j,k;
for(i;i;i--)
for(j=4;j;j--)
for(k=124;k;k--);
}
void sbj_1()
{
P3 = 0X00;
delay(5);
P3 = 0x55;
delay(5);
}
void sbj_2()
{
P3=0x00;delay(1);
P3=0x01;delay(1);
P3=0x03;delay(1);
P3=0x07;delay(1);
P3=0x0F;delay(1);
P3=0x1F;delay(1);
P3=0x3F;delay(1);
P3=0x7F;delay(1);
}
void sbj_3()
{
int i;
for(i=100;i;i--)
{
P3=0x00;delay(1);
P3=0xFF;delay(7);
}
for(i=100;i;i--)
{
P3=0x00;delay(2);
P3=0xFF;delay(6);
}
for(i=100;i;i--)
{
P3=0x00;delay(3);
P3=0xFF;delay(5);
}
for(i=100;i;i--)
{
P3=0x00;delay(4);
P3=0xFF;delay(4);
}
for(i=100;i;i--)
{
P3=0x00;delay(3);
P3=0xFF;delay(5);
}
for(i=100;i;i--)
{
P3=0x00;delay(2);
P3=0xFF;delay(6);
}
}