哪位大虾帮帮我用AT89C51单片机控制8个Led的流水灯的单片机程序 希望是能够仿真运行的啊!急求

//8 个流水灯逐个闪动
8 个流水灯反向逐个闪动
8 个流水灯依次全部点亮
8 个流水灯依次反向全部点亮
最好能把按钮用进去,谢谢
刚开始不用按钮的时候就是8 个流水灯逐个闪动8 个流水灯反向逐个闪动,
一个按钮控制8 个流水灯依次全部点亮 8 个流水灯依次反向全部点亮,
还有一个按钮控制从中间散开和从两侧合拢(这项选做)

你的LED用错模型了,要用LED-RED 那几个后面带颜色的。
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar i,j;
void delay(uint ms)
{
uchar k;
while(ms--)
for(k=0;k<123;k++);
}
void main()
{
while(1)
{
i=0xfe;
for(j=0;j<7;j++)
{
P1=i;
i=_crol_(i,1);
delay(500);
}

for(j=0;j<7;j++)
{
P1=i;
i=_cror_(i,1);
delay(500);
}

for(j=0;j<8;j++)
{
P1=i;
i=i<<1;
delay(500);
}
i=0x7f;
for(j=0;j<8;j++)
{
P1=i;
i=i>>1;
delay(500);
}
}
}追问

有单片机程序的吗?

追答

这个就是单片机的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-20
我也觉得挺简单的,现在手机登的,回去如果记得就给你,还有proteus的仿真

#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
/*
* 用总线形式的,也可以用移位实现
*/
uchar code LED[]={0xfe,0xfd,0xfb,0xf7,0xdf,0xbf,0x7f,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
0xff};

void delay(uint);
uint i;
void main(){
P1=0xfe;
while(1){
for(i=0;i<24;i++){
P1=LED[i];
delay(300);
}
}
}

void delay(uint ms){
uint i,y;
for(i=0; i< ms; i++)
for(y=113; y>0 ;y--);
}追问

你好,如果有时间请加QQ401773203,我还有几个问题想请教你啊,谢谢啦

追答

你两次说的不一样啊,第一次说还有全部反向点亮,你后面追问没有提到这个了。、
你看看
#include
typedef unsigned char uchar;
typedef unsigned int uint;
/*
* 用总线形式的,也可以用移位实现
*/
uchar code LED1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,};
uchar code LED2[]={0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff};
uint i,n=1;
void delay(uint);
void int0() interrupt 0 {
n=0;
}

void int1() interrupt 2 {
n=1;
}
void main(){
P1=0xff;
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
while(1){
for(i=0;i0 ;y--);
}

第2个回答  2011-12-20
这么简单的代码 不会写 ?追问

········