单片机一个 IO口可以控制一串LED作流水实验吗

一个IO口控制20颗串联LED
隔一秒中断一会行不?

程序和电路都已经帮你弄好了,功能可以实现,如果觉得对你有用,请选最佳答案。用两个74hc138(三八译码器)一个74hc139(二四译码器)就可以实现,电路如图,成为如下:#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

sbit ctrl1=P3^0;

sbit ctrl2=P3^1;

sbit ctrl3=P3^2;

uchar t,i,g;

void init()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器中断0

  TR0=1;

t=0;

}

void main()

{

init();

while(1)

{

ctrl1=1;

ctrl2=0;

ctrl3=1; 

P2=0X00;

g=P2;

for(i=0;i<8;i++)

{

P2=g;

while(t!=20);

t=0;

g=g+1;

}

ctrl2=1;

ctrl1=0;

g=0x00;

for(i=0;i<8;i++)

{

P2=(g+i<<3)+0x07;  

while(t!=20);

t=0;

}

ctrl1=0;

ctrl2=0;

ctrl3=0;

g=0x00;

for(i=0;i<4;i++)

{

P2=(g+i<<6)+0x3f;  

while(t!=20);

t=0;

}

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-02
同时亮,同时灭可以,流水灯完成不了。
第2个回答  2011-12-02
20颗串联的无法流水。
第3个回答  2011-12-02
不可能的任务。
第4个回答  2011-12-02
………………
把那个IO口设置成串口输出吧