1.3.第三个实验——流水灯

1.3.第三个实验——流水灯

实验目的:实现流水灯效果

预备知识:左移<< 右移>>

实验过程分析:

流水灯的第一个状态 0x80(1000 0000)
流水灯的第二个状态 0x40(0100 0000)
流水灯的第二个状态 0x20(0010 0000)
流水灯的第二个状态 0x10(0001 0000)
流水灯的第二个状态 0x08(0000 1000)
流水灯的第二个状态 0x04(0000 0100)
流水灯的第二个状态 0x02(0000 0010)
流水灯的第二个状态 0x01(0000 0001)

实验代码:

#include<reg51.h>

void delay(void)
{
    unsigned char i,j;                        //char 的范围是有正负的,±127
    for ( i=0; i<200; i++)         // 当i的值超出char的范围之后就无法正常工作了。
    {
        for ( j=0; j<200; j++);
    }

}

void main(void)
{
// 从左到右依次闪烁

     P0=0x80; //第1个状态
     delay();
     P0=0x40; //第2个状态
     delay();
     P0=0x20; //第3个状态
     delay();
     P0=0x10; //第4个状态
     delay();
     P0=0x08; //第5个状态
     delay();
     P0=0x04; //第6个状态
     delay();
     P0=0x02; //第7个状态
     delay();
     P0=0x01; //第8个状态
     delay();


        //从中间往两边扩散

    P0=0x18;  // 00011000
    delay();
    P0=0x24;  // 00100100
    delay();
    P0=0x42;  // 01000010
    delay();
    P0=0x81;  // 10000001
    delay();

实验总结:
通过二进制数写出每一个LED灯的状态,然后分别控制。罗列出流水灯的每一个状态这样太繁琐了,下个实验进行流水灯改进。

你可能感兴趣的:(X)