几个使用单片机设计流水灯的程序概述

电子说

1.3w人已加入

描述

  51单片机流水灯C语言源程序(源创) **************************************************************

  文件名称:flash_led.c

  文件说明:流水灯C程序

  编写人员:Jerry Yang

  编写日期:2006年10月5日

  程序说明:MCU采用AT89S51,外接12M晶振,P1口输出

  *************************************************************/

  #include《reg51.h》 //51系列单片机定义文件

  #define uchar unsigned char //定义无符号字符

  #define uint unsigned int //定义无符号整数

  void delay(uint); //声明延时函数

  void main(void)

  {

  uint i;

  uchar temp;

  while(1)

  {

  temp=0x01;

  for(i=0;i《8;i++) //8个流水灯逐个闪动

  {

  P1=~temp;

  delay(100); //调用延时函数

  temp《《=1;

  }

  temp=0x80;

  for(i=0;i《8;i++) //8个流水灯反向逐个闪动

  {

  P1=~temp;

  delay(100); //调用延时函数

  temp》》=1;

  }

  temp=0xFE;

  for(i=0;i《8;i++) //8个流水灯依次全部点亮

  {

  P1=temp;

  delay(100); //调用延时函数

  temp《《=1;

  }

  temp=0x7F;

  for(i=0;i《8;i++) //8个流水灯依次反向全部点亮

  {

  P1=temp;

  delay(100); //调用延时函数

  temp》》=1;

  }

  }

  }

  void delay(uint t) //定义延时函数

  {

  register uint bt;

  for(;t;t--)

  for(bt=0;bt《255;bt++);

  }

  /************************************************************

  *89C51、S51单片机32个IO口流水灯测试程序

  *Flash0、1、2、3分别对应单片机的P0、1、2、3四个口

  *a程序对应流水灯从全灭到一个一个亮

  *b程序对应流水灯从全亮到一个一个灭

  *Author:大灵通

  *2006-7-26 10:57,OK!

  *************************************************************/

  #include《reg51.h》

  #include《intrins.h》

  #include《absacc.h》

  #define uchar unsigned char

  #define uint unsigned int

  #define TimeDelay 60000

  void delay(uint n);

  void Flash0a(void);

  void Flash0b(void);

  void Flash1a(void);

  void Flash1b(void);

  void Flash2a(void);

  void Flash2b(void);

  void Flash3a(void);

  void Flash3b(void);

  /************************************************************

  *Function: 主函数

  *parameter:

  *Return:

  *Modify:

  *************************************************************/

  void main(void)

  {

  while(1)

  {

  Flash1b();

  Flash1a();

  delay(TimeDelay);

  delay(TimeDelay);

  Flash0b();

  Flash0a();

  Flash2b();

  Flash2a();

  Flash1b();

  Flash1a();

  Flash3b();

  Flash3a();

  }

  }

  /************************************************************

  *Function: 延时

  *parameter:

  *Return:

  *Modify:

  *************************************************************/

  void delay(uint n)

  {

  while(n!=0)

  {

  n--;

  }

  }

  void Flash0a(void)

  {

  uchar i;

  uchar Temp;

  Temp = 0x80;

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

  {

  P0 = ~Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P0 = 0xff;

  }

  void Flash0b(void)

  {

  uchar i;

  uchar Temp;

  Temp = 0x80;

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

  {

  P0 = Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P0 = 0;

  }

  void Flash1a(void)

  {

  uchar i;

  uchar Temp;

  P1 = 1;

  Temp = 0x80;

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

  {

  P1 = ~Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P1 = 0xff;

  }

  void Flash1b(void)

  {

  uchar i;

  uchar Temp;

  P1 = 1;

  Temp = 0x80;

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

  {

  P1 = Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P1 = 0;

  }

  void Flash2a(void)

  {

  uchar i;

  uchar Temp;

  P2 = 1;

  Temp = 0x80;

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

  {

  P2 = ~Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P2 = 0xff;

  }

  void Flash2b(void)

  {

  uchar i;

  uchar Temp;

  P2 = 1;

  Temp = 0x80;

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

  {

  P2 = Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P2 = 0;

  }

  void Flash3a(void)

  {

  uchar i;

  uchar Temp;

  P3 = 1;

  Temp = 0x80;

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

  {

  P3 = ~Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P3 = 0xff;

  }

  void Flash3b(void)

  {

  uchar i;

  uchar Temp;

  P3 = 1;

  Temp = 0x80;

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

  {

  P3 = Temp;

  delay(TimeDelay);

  Temp = Temp 》》 1;

  }

  P3 = 0;

  }

  ===========

  ;P1口八个LED灯做三路流水灯实验

  ;***************************************************************

  ;* Date : 2004.4.20 *

  ;* Support Mb:020-34007281 E-mail:c51cn@163.com *

  ;* Create by :dengdewu http://www.c51.cn 更多例程请登陆网站 *

  ;* 网站单片机学习资料同步更新,敬请新老朋友随时关注 *

  ;***************************************************************

  ORG 0000H

  LJMP MAIN

  ORG 030H

  MAIN:MOV P1,#0DBH ;11011011--0为亮,1为灭

  ACALL DELAY

  MOV P1,#06DH ;01101101

  ACALL DELAY

  MOV P1,#0B6H ;10110110

  ACALL DELAY

  AJMP MAIN

  DELAY:MOV R7,#255 ;延时子程序

  D1: MOV R6,#255

  D2: DJNZ R6,D2

  DJNZ R7,D1

  RET

  END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分