專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)流水燈設(shè)計(jì)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2007年06月12日   【字體:

下面介紹幾個單片機(jī)器流水燈設(shè)計(jì)的程序

51單片機(jī)流水燈C語言源程序(源創(chuàng)) **************************************************************
  文件名稱:flash_led.c
  文件說明:流水燈C程序
  編寫人員:Jerry Yang
  編寫日期:2006年10月5日
  程序說明:MCU采用AT89S51,外接12M晶振,P1口輸出
  版權(quán)標(biāo)注:豪杰電子工作室(http://hokepoly.bokee.com)
*************************************************************/
#include<reg51.h>   //51系列單片機(jī)定義文件
#define uchar unsigned char //定義無符號字符
#define uint unsigned int  //定義無符號整數(shù)
void delay(uint);   //聲明延時函數(shù)
void main(void)
{
uint i;
uchar temp;
while(1)
  {
 temp=0x01;
   for(i=0;i<8;i++)  //8個流水燈逐個閃動
    {
    P1=~temp;
    delay(100);   //調(diào)用延時函數(shù)
    temp<<=1;
    }
 temp=0x80;
 for(i=0;i<8;i++)  //8個流水燈反向逐個閃動
  {
  P1=~temp;
  delay(100);   //調(diào)用延時函數(shù)
  temp>>=1;
  }
    temp=0xFE;
 for(i=0;i<8;i++)  //8個流水燈依次全部點(diǎn)亮
  {
  P1=temp;
  delay(100);   //調(diào)用延時函數(shù)
  temp<<=1;
  }
  temp=0x7F;
  for(i=0;i<8;i++)  //8個流水燈依次反向全部點(diǎn)亮
   {
  P1=temp;
  delay(100);   //調(diào)用延時函數(shù)
  temp>>=1;
  }
 }

}
 void delay(uint t)   //定義延時函數(shù)
{
register uint bt;
for(;t;t--)
 for(bt=0;bt<255;bt++);
}


/************************************************************
*89C51、S51單片機(jī)32個IO口流水燈測試程序
*Flash0、1、2、3分別對應(yīng)單片機(jī)的P0、1、2、3四個口
*a程序?qū)?yīng)流水燈從全滅到一個一個亮
*b程序?qū)?yīng)流水燈從全亮到一個一個滅
*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: 主函數(shù)
*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燈做三路流水燈實(shí)驗(yàn)
;***************************************************************
;* Date : 2004.4.20                                                                                               *
;* Support Mb:020-34007281     E-mail:c51cn@163.com                                    *
;* Create by :dengdewu
http://www.c51.cn 更多例程請登陸網(wǎng)站                       *
;* 網(wǎng)站單片機(jī)學(xué)習(xí)資料同步更新,敬請新老朋友隨時關(guān)注                         *
;***************************************************************

     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

關(guān)閉窗口

相關(guān)文章