1、由于P0口是一个8位漏极开路的的双向I/O口,必需外接上拉电阻才能有高电平输出。当单片机输出高电平时对应的LED灯熄灭,当输出低电平时则点亮。2. C语言程序程序定义了五个数组分别对应五种不同的花样流水灯方式,其中每个数组中的每个元素控制P0口的壮态,从而控制每个LED灯的壮态。另外,程序将流水灯每个壮态的间隙时间进行了宏定义,这使得修改每个壮态的保持时间十分方便。#include /包含单片机头文件#define uint unsigned int#define uchar unsigned char#define DataPort P0 /定义P0为数据输出端口#define TIME 3
2、0 /设定流水灯每个状态的间隙时间/*us级延时程序*/void Delayus2x(uint n) while(-n);/*ms级延时程序*/void Delayms(uint n) while(-n) Delayus2x(245);Delayus2x(245); /*五个数组分别对应五种不同的流水灯*/uchar DB115=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;uchar DB215=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0x
3、c0,0xe0,0xf0,0xf8,0xfc,0xfe;uchar DB315=0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7;ucharDB436=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e, 0x3d,0x3b,0x37,0x2f,0x1f,0x1e,0x1d,0x1b,0x17,0x0f,0x0e,0x0d,0x0b,0x07,0x06,0x05,0x03,0x02,0x0
4、1,0x00;ucharDB536=0x80,0x40,0xc0,0xa0,0x60,0xe0,0xd0,0xb0,0x70,0xf0,0xe8,0xd8,0xb8,0x78,0xf8,0xf4,0xec,0xdc,0xbc,0x7c,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff;/*主函数*/void main(void) uint i=0; while(1) /死循环,流水灯依次在五种方式中循环 DataPort=0xff; /灯全灭 Delayms(TIME); for(i=0;i15;i+) DataPort=DB1i; /第一种方式 DataPort=DB2i; /第二种方式 DataPort=0xff; DataPort=DB3i; /第三种方式36; DataPort=DB4i; /第四种方式 DataPort=0x00; DataPort=DB5i; /第五种方式3. 软件仿真图3.1第一种3.2 第二种3.3 第三种3.4 (略)3.5 (略)