单片机流水灯程序 C语言

我想知道如何通过按键来选择各个花样,希望能提供一个完整的程序,用全亮作为花样就行……按键希望用中断实现,然后,一定要是C语言啊!谢谢!

第1个回答  2012-05-26

#include<reg51.h>

void delay(unsigned int i);

unsigned int i,n,k,j,m,w=0;

sbit P2_7=P2^7;

void main()

{m=0xfe;

 n=0x01;

 k=0x80;

 EA=1;

 EX1=1;

 IT1=1;

 P2_7=1;

while(1)

 { m=0XFE;

   if(w==1)

    {for(i=0;i<8;i++)

          {P0=~m;

           delay(100);

           m<<=1;

           }

       m=0XFE;

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

   {P0=m;

    delay(100);

     m<<=1;

        }

     }

    if(w==2)

  {

     for(j=0;j<2;j++)

     { n=0X01;

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

           {P0=n;

    delay(100);

    n<<=1;

    }

      }

  }

   if(w==3)

     {  for(i=0;i<2;i++)

 {P0=0X55;

          delay(100);

          P0=0XAA;

  delay(100);

          }

      }

  if(w==4)

   {n=0X01;

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

{P0=n;

 delay(200);

 n<<=1;

 }

     k=0x80;

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

  {P0=k;

   delay(200);

   k>>=1;

   }

    }

 }

}

void dong()interrupt 2

{ w++;

 if(w==5)

 {w=0;}

 } 

 

void delay(unsigned int i) 

  {  unsigned int j,k;

     for(k=0;k<i;k++)

 for(j=0;j<255;j++);

   }

 每按P3.3一次都会出现不同的流水灯,不过必须等他执行完一种花样才会响应按的另一种。

本回答被提问者和网友采纳
第2个回答  2012-05-22
是用外部中断?还是内部计时中断?追问

按键就是两种实现方式好像,查询方式和中断方式……我也不懂啦……

追答

那就是接在外部中断口了。给个简单的程序你吧。按键接口接在外部中断1的io口~
#include//包含头文件
void main()
{
EA=1;//开启总中断
EX0=1//开启外部中断0
IT0=1;//中断方式为下降沿
while(1)//死循环
{
}
}
void ex0_int() interrupt 0 using 0//外部中断 按键太快闪跟灭也加快。
{
EX0=0;
P1=~P1;//P1口接灯,进入中断时候灯状态取反,就是亮灭了。
EX0=1;
}

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
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个...

用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)_百度...
delay();P3=0xef;\/\/第五个灯亮 delay();P3=0xdf;\/\/第六个灯亮 delay();P3=0xbf;\/\/第七个灯亮 delay();P3=0x7f;\/\/第八个灯亮 delay();} }

单片机流水灯怎么实现的?
在这个单片机流水灯代码中,假设使用的是8051单片机。需要定义8个LED灯,分别连接到P1端口的不同引脚上。然后使用一个循环结构来控制这8个LED灯按照一定的顺序逐个亮起,形成流水灯的效果。具体来说,使用for循环来控制LED灯的亮灭顺序。在每次循环中,通过给P1端口赋值来控制LED灯的亮灭状态。例如,给P...

如何用c语言实现流水灯功能?
可以用for循环试试unsingned char i;for(i=0;i<5;i++)\/\/流水灯闪烁程序。若干个灯泡依次点亮就叫流水灯,它用在夜间建筑物装饰方面。例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处...

编写出单片机流水灯程序
编写一个基于8051单片机的流水灯程序,假设我们使用P1口连接了8个LED灯,要实现从第一个LED开始依次点亮,形成流水效果。以下是一个简单的C语言程序示例:```c include void delay(unsigned int ms) { unsigned int i, j;for (i = ms; i > 0; i--)for (j = 110; j > 0; j--); \/...

如何用单片机实现流水灯,从一依次亮到八,再从八依次亮?
单片机流水灯C语言程序的源代码如下:include \/\/51系列单片机定义文件。define uchar unsigned char \/\/定义无符号字符。define uint unsigned int \/\/定义无符号整数。void delay(uint); \/\/声明延时函数。硬件特征 1、单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分...

单片机C语言编程:控制流水灯
T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次。k3触发外部中断0,级别高于计时器中断,故暂停。include <reg52.h>#include <intrins.h> #defineuint unsigned int#defineuchar unsigned charsbit k1=P1^0; \/\/左循环按钮sbit k2=P1^1; \/\/右循环按钮sbit k4=P1^2; \/\/恢复暂停...

单片机流水灯程序
程序如下:include <reg52.h> sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3。让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用...

51单片机流水灯用C语言编写的设计程序???
include<reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int void delay(uint z);main(){ uchar aa;while(1){ aa=0xfe;P1=aa;delay(100);while(1){ aa=_crol_(aa,1);P1=aa;delay(100);} } } void delay(uint z){ uint x,y;for(x=z;x>0;x-...

单片机流水灯c语言程序。灯按从左到右2468然后1357依次循环亮。速求...
include "REG52.H"\/\/ 显示花样流水灯编码 const unsigned char Expetr_ROM[] = { 0xFD, 0xF7, 0xDF, 0x7F, 0xFE, 0xFB, 0xEF, 0xBF } ;\/\/ 延时1ms void Delay_1ms(unsigned int Cnt){ unsigned int x, y;for(x = Cnt; x > 0; x--)for(y = 120; y > 0; y--);}...

相似回答