首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机流水灯设计

单片机流水灯设计

下面介绍几个单片机器流水灯设计的程序
*************************************************************/
#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;
}
===========
1口八个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



 
返回列表