原创 4.广告灯的左移右移

2007-4-14 16:13 4775 9 9 分类: MCU/ 嵌入式

1. 实验任务


  做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。


2.电路原理图


 cbe75b2f-c981-48bb-98ab-4ce52ed23e03.gif
图1


3. 程序设计内容


  我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。


  每次送出的数据是不同,具体的数据如下表1所示



P1.7


P1.6


P1.5


P1.4


P1.3


P1.2


P1.1


P1.0


说明


L8


L7


L6


L5


L4


L3


L2


L1

 

1


1


1


1


1


1


1


0


L1亮


1


1


1


1


1


1


0


1


L2亮


1


1


1


1


1


0


1


1


L3亮


1


1


1


1


0


1


1


1


L4亮


1


1


1


0


1


1


1


1


L5亮


1


1


0


1


1


1


1


1


L6亮


1


0


1


1


1


1


1


1


L7亮


0


1


1


1


1


1


1


1


L8亮


表1


4.程序框图


bef307d4-457d-4496-a776-caacb79388f4.jpg
图2


5. 汇编源程序


                   ORG 0


START:             MOV R2,#8


                   MOV A,#0FEH


                   SETB C


LOOP:              MOV P1,A


                   LCALL DELAY


                   RLC A


                   DJNZ R2,LOOP


                   MOV R2,#8


LOOP1:             MOV P1,A


                   LCALL DELAY           


                   RRC A


                   DJNZ R2,LOOP1


                   LJMP START


DELAY:             MOV R5,#20             ;


D1:                MOV R6,#20


D2:                MOV R7,#248


                   DJNZ R7,$


                   DJNZ R6,D2


                   DJNZ R5,D1


                   RET


                   END


6.C语言源程序


#include <AT89X51.H>


unsigned char i;


unsigned char temp;


unsigned char a,b;


void delay(void)


{


  unsigned char m,n,s;


  for(m=20;m>0;m--)


  for(n=20;n>0;n--)


  for(s=248;s>0;s--);


}


void main(void)


{


  while(1)


    {


      temp="0xfe";


      P1=temp;


      delay();


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


        {


          a="temp"<<i;


          b="temp">>(8-i);


          P1=a|b;


          delay();


        }


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


        {


          a="temp">>i;


          b="temp"<<(8-i);


          P1=a|b;


          delay();


        }


    }


}


7.文件下载


rar 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /3 下一条