流水灯程序

流水灯程序,第1张

/

名称:键控跑马灯2

作者:武汉莱斯特电子科技有限公司

功能描述:上电时,LED等全熄灭;

S17键闭合时,LED1~LED8被依次点亮后全熄灭,

然后等待S17再次闭合,重复上述过程;

若中间S18键闭合时,LED立即全部熄灭,回到起始状态;

连线方式:D0~D7接P0口,K17=P2^0,K18=P2^1;短接JP2,键盘模块接地;

/

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

sbit Key1=P2^0;

sbit Key2=P2^1;

void Delay(uint x)

{

uchar y;

for(;x>0;x--)

for(y=114;y>0;y--);

}

void main()

{

while(1)

{

uchar i,Temp;

uchar Data=0xfe;

P0=0xff;

if(Key1==0) //S17键闭合,进入循环

{

for(i=8;i>0;i--) //左移8次

{

if(Key2==0) //S18键闭合,退出本次循环

break;

P0=Data;

Temp=Data; //左移前数据保存

Delay(800);

Data=_crol_(Data,1);

Data=Temp&Data; //与左移前的数据进行位与

}

}

}

C语言流水程序是学习的基础,一定要搞懂!给你发两个!

(一)

#include<reg51h> //51系列单片机定义文件

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

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

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

void main()

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

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

{

P2=~temp;

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

temp<<=1;

}

temp=0x80;

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

{

P2=~temp;

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

temp>>=1;

}

temp=0xFE;

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

{

P2=temp;

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

temp<<=1;

}

temp=0x7F;

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

{

P2=temp;

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

temp>>=1;

}

}

}

void delay(uint a) //延时函数,毫秒级别

{

uint i;

while(--a!=0) //执行空 *** 作循环,其中a为形参,由调用该函数的函数语句提供值

{

for(i=0;i<125;i++);//执行当0加到125时,大约会用掉1ms的时间

}

}

(二)

以下程序均采用12M晶振/

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

sbit p2=P2^0;

void main()

{

TMOD=0x01;

TR0=1;

ET0=1;

EA=1;

while(1)

{

;

}

}

timer0() interrupt 1

{

TH0=0x00;

TL0=0x06;

p2=!p2;

}

(三)

定时流水灯//

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)leda=0;

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==10)

{

t=0;

ldelay=1;

}

}

(四)

变速流水灯//

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speed=100;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

speed-=10;

if(speed==0)speed=100;

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speed)

{

t=0;

ldelay=1;

}

}

(五)

//每2两圈改变一次亮度

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay)

{

ldelay=0;

P2=led[leda];

leda++;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

}

(六)

//在上面基础上调灯的亮度(调占空比)

#include<reg51h>

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

bit ldelay=0;

uchar speeda=30;

uint k=0;

uchar scale;

void main()

{

uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};

uchar leda;

uchar speed[10]={5,80,70,60,50,40,30,20,10,5};

uint i;

uint k;

TMOD=0x00;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(ldelay==1)

{

ldelay=0;

P2=led[leda];

leda++;

scale++;

if(scale==10)scale=0;

if(leda==9)

{

leda=0;

k++;

if(k==2){

k=0;

speeda=speed[i];

i++;

if(i==9)i=0;

}

}

}

}

}

timer2() interrupt 1

{

static uchar t;

TH0=0x1c;

TL0=0xbf;

TF0=0;

t++;

if(t==speeda)

{

t=0;

ldelay=1;

}

if(scale==10)P2=0;

if(scale==0)P2=1;

}

我是一名多年的单片机工程师,下面的程序你参考一下

效果图

程序如下:

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

uint i;

uchar j;

void delay_ms(uint k)  //延时子程序

{

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

 {

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

{

 ;

}

 }

}

main()

{

uchar a,b;

P1=0xfe;

delay_ms(1000);

b=P1;

while(1)

{

for(a=0;a<7;a++)

{

  b=_crol_(b,1);

  P1=b;

  delay_ms(1000);

}

  for(a=0;a<7;a++)

{

  b=_cror_(b,1);

  P1=b;

  delay_ms(1000);

}

  }

}

如果你想学习更多单片机和程序的知识,可以看看我整理好的“17个实验学会单片机”,百度一下“17个实验学会单片机”就可以看到在首页了。

以上就是关于流水灯程序全部的内容,包括:流水灯程序、用c语言编写流水灯。、流水灯c语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10169441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存