八个发光二极管至少四种不同的循环点亮,并且每隔5秒闪烁4次,画出硬件控制电路,编写出程序

兄弟帮个忙,用的是51单片机... 兄弟帮个忙,用的是51单片机 展开
 我来答
myfrine
2011-06-04 · TA获得超过470个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:122万
展开全部

很简单的,用取表法就行了,这个是我刚编的,你改时间对就行了,,我仿真过了,OK了

#include <reg51.H>

#define led P1

#define uchar unsigned char

#define uint unsigned int

void delay(uchar i);

uchar z,t;

uint y;

uint code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xE7,0xC3,0x81,0x00,0x7E,0x3C,0x18,0x00,0xFF,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xFF

};

void main()

 {

   while(1)

   {  for(z=0;z<32;z++)

     {led=table[z];

     delay(5);

     y++;

      }

   

     if(z==32)

     {for(t=0;t<5;t++)

            {

             led=~led;

             delay(10);

            } 

            

      

       }

    

  } 

 }

void delay(uchar i)

{uint j,k;

 for(j=i;j>0;j--)

 for(k=5000;k>0;k--);

}

汝云逸6g
2011-06-02
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
这是科学的提问,哥不懂。闪人
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
樊知
2011-06-03 · TA获得超过310个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:156万
展开全部
用c还是汇编?
那就是流水灯喽
P1口8个灯循环点亮
ORG 0000H;程序开始
LJMP MAIN;
ORG 030H;
MAIN:MOV R0,#08H;把8送入R0中,
MOV A,#0FEH;把FE送入A中,即11111110
PLAY:RR A;右移动1位
MOV P1,A;输出显示
ACALL DEL;延时
DJNZ R0,PLAY;一共移动8次
AJMP MAIN;重新开始
DEL: MOV R7,#0FH;延时子程序
DEL1:MOV R6,#0FFH;
DEL2:MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
END
更多追问追答
追问
兄弟,是4种不同的循环亮法,你这个只有一种,帮忙编编,谢谢
追答
干脆你用这个 这个是接了按键的哈哈
#include"reg51.h" //
#define char unsigned char
char key,keytmp; //扫描键值
//
//
//*****按键扫描函数*********//
void scan()
{
key=(~P3)&0x0f; //读入键值
if(key!=0) //
{
while(((~P3)&0x0f)!=0); //等待按键释放
keytmp=key; // 键值存放
}
}
//
//
//*******延时函数*********//
void delay(int t)
{
int k,j;
for(k=0;k<t;k++)
for(j=0;j<100;j++)
scan();
}
//
//
//*******功能函数-逐点闪亮*********//
fun0()
{
int i,s;
s=0xfe;
for(i=0;i<8;i++)
{
P1=s;
delay(100);
s=s<<1;
s=s|0x01;
}
}
//
//
//*******功能函数-依次点亮*********//
fun1()
{
int i,s;
s=0xfe;
for(i=0;i<8;i++)
{
P1=s;
delay(100);
s=s<<1;
}
}
//
//
//*******功能函数-交叉闪亮*********//
fun2()
{
int i,s;
s=0x55;
for(i=0;i<2;i++)
{
P1=s;
delay(100);
s=~s;
}
}
//
//
//**********************//
// 主函数 //
//**********************//
main()
{
keytmp=1; //上电自动演示功能(逐点闪亮)
P3=0xff; //初始值,读入状态
while(1)
{
switch(keytmp)
{
case 1:{fun0();break;}
case 2:{fun1();break;}
case 4:{fun2();break;}
case 8:{scan();P1=0xff;break;} //暂停
default:{break;}
}
}
}
//
//
//***************结束******************//
//********给你个很棒的网站希望对你学习有帮助*****//
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式