单片机:16个发光二极管组成的流水灯实验

实验图和程序

不好意思,暂时没有财富值

电路图注意:1、P0口里应加上排阻,图里我没画出来。

            2、单片机最小系统所需的晶振、复位电路我也没画。

临时帮你做的图,写的程序,细节就不是很完善啦,凑合着看吧!!

下面是程序,_crol_()函数是让temp的值左移一位的即执行一次该函数,temp的值由11111110到11111101,再执行一次是11111011……

_cror_()是右移。

#include<reg51.h>

#include<intrins.h>//包含对_crol_(),_cror_()函数的说明的头文件

unsigned char temp,i;

void delay(unsigned int z)//延时子程序,晶振11.0592M时延时大概1毫秒

{

 unsigned int x ,y;

 for(x=z;x>0;x--)

  for(y=110;y>0;y--);

}

void main()

{

while(1)

{

 temp=0xfe; 

 for(i=0;i<8;i++)//流水灯从P0^0口到P0^7口

 {

   

  P0=temp;

  temp=_crol_(temp,1);

  delay(5);

 }

 i=0;

temp=0xfe;

 for(i=0;i<8;i++)//流水灯从P1^0口到P1^7口

 {

    

  P1=temp;

  temp=_crol_(temp,1);

  delay(5);

 }

 i=0;

temp=0x7f;

 for(i=0;i<8;i++)//流水灯从P1^7口到P1^0口

 {

    

  P1=temp;

  temp=_cror_(temp,1);

  delay(5);

 }

 i=0;

 temp=0x7f; 

 for(i=0;i<8;i++)//流水灯从P0^7口到P0^0口

 {

  

  P0=temp;

  temp=_cror_(temp,1);

  delay(5);

 }

 i=0;

 

 }

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-15
这个问题很简单阿,
1. 你可以选用最简单的单片机(譬如89c51)只需要两组IO口(2*8)或者只用10个IO口(把16个分两组并用,两个负责选择其中哪一组)就可以了,连接起来只需要简单几行程序就可以搞定了;
2. 你可以选用一些与或非门以及触发器等用电路连接起来,可能需要的门比较多(数字电路知识),只需要最开始用逻辑图和真值表设计好线路连接起来就可以了,这个不需要程序,但需要有一个脉冲源。
第2个回答  2021-04-15

花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,

第3个回答  2010-06-16
simple
第4个回答  2010-06-15
在“电子之城”网站上去找,上面有很多初学单片机的程序及原理图及翻译。
相似回答