爱心流水灯的程序代码(爱心流水灯的装配过程)

http://www.itjxue.com  2023-03-17 17:03  来源:未知  点击次数: 

51单片机流水灯程序

程序如下:

#include reg52.h

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;

void main()

{

? int i,j;

?//点亮第一个灯

? led1 = 1;

? led2 = 0;

? led3 = 0;

? led4 = 0;

? led5 = 0;

? led6 = 0;

? led7 = 0;

? led8 = 0;

? //延时1秒

for(i = 0;i 110; ++i)

{

?for(j = 0; j 1000; ++j)

?{

? ?;//什么也不做

?}

}

? //点亮第二个灯

? led1 = 0;

? led2 = 1;

? led3 = 0;

? led4 = 0;

? led5 = 0;

? led6 = 0;

? led7 = 0;

? led8 = 0;?

? //点亮剩余的灯

? //省略……

? while(1);

}

扩展资料:

流水灯几点说明:

void:因为该延时函数不需要返回值,所以写为void

delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。

(): 不需要传入参数,所以括号中为空

至此我们可以把流水灯程序写为以下形式:

如何用c语言编写流水灯?

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

(一)

#includereg51.h //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;i8;i++) //8个流水灯逐个闪动

{

P2=~temp;

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

temp=1;

}

temp=0x80;

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

{

P2=~temp;

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

temp=1;

}

temp=0xFE;

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

{

P2=temp;

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

temp=1;

}

temp=0x7F;

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

{

P2=temp;

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

temp=1;

}

}

}

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

{

uint i;

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

{

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

}

}

(二)

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

#includereg51.h

#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;

}

(三)

定时流水灯//

#includereg51.h

#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;

}

}

(四)

变速流水灯//

#includereg51.h

#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两圈改变一次亮度

#includereg51.h

#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;

}

}

(六)

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

#includereg51.h

#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;

}

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //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;i8;i++) //8个流水灯逐个闪动

{

P1=~temp;

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

temp=1;

}

temp=0x80;

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

{

P1=~temp;

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

temp=1;

}

temp=0xFE;

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

{

P1=temp;

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

temp=1;

}

temp=0x7F;

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

{

P1=temp;

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

temp=1;

}

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

{

register uint bt;

for(;t;t--)

for(bt=0;bt255;bt++);

}

扩展资料

51单片机流水灯的源代码如下

#includereg51.h

#includeintrins.h

void?delay(int?a)

{

int?i;

while(a--)for(i=0;i110;i++);

}

main()

{

int?i;

while(1)

{

P0=0xfe;

for(i=0;i8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

51单片机中如何用汇编语言编写流水灯

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:

ORG 0000H ;复位启动

AJMP START ;

ORG 001BH ;T1中断

AJMP T1INT ;

;定义变量========================

YSJS EQU 30H;延时计数器

LED EQU 31H;LED控制缓冲器

;主程序==========================

START: MOV LED,#0FEH ;初始化数据

MOV YSJS,#0 ;

MOV TMOD,#10H ;定时器1工作于方式1,16位定时器

MOV TL1,#0B0H ;设置定时初值

MOV TH1,#3CH ;定时时间=50mS

SETB ET1 ;使能定时器1中断

SETB TR1 ;启动定时器1

SETB EA ;开总中断

MOV P1,LED ;初始化流水灯

LOOP: JMP LOOP ;循环等待中断

T1INT: PUSH PSW ;定时器1中断程序

PUSH ACC ;保护现场

MOV TH1,#3CH ;定时时间=50mS

MOV TL1,#0B0H ;

INC YSJS ;

PUSH ACC ;保护ACC

MOV A,YSJI ;

CJNE A,#2,QT1 ;50mS*2=100mS

MOV P1,LED ;

MOV A,LED ;

RL A ;累加器A的值循环左移1位

MOV LED,A ;

MOV YSJS,#0 ;

QT1: POP ACC ;恢复现场

POP PSW ;

RETI ;返回主程序

END ;汇编程序结束

扩展资料:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

51单片机16个灯的心形流水灯编程

利用51单片机的p0,p1,p2口,分别驱动一个LED灯。然后,首先让它们都输出低电平0x00,再然后,按顺序位移输出高电平。

(责任编辑:IT教学网)

更多

推荐linux服务器文章