用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮),第1张

#include<reg51h>

voiddelay(void)

{

unsignedinti,j;

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

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

;

}

voidmain(void)

{

while(1)

{

P3=0xfe;//第一个灯亮

delay();//延时

P3=0xfd;//第二个灯亮

delay();

P3=0xfb;//第三个灯亮

delay();

P3=0xf7;//第四个灯亮

delay();

P3=0xef;//第五个灯亮

delay();

P3=0xdf;//第六个灯亮

delay();

P3=0xbf;//第七个灯亮

delay();

P3=0x7f;//第八个灯亮

delay();

}

}

扩展资料

单片机C语言16种方式流水

voidmain()

{

while(1)

{

P1=0xfe;//点亮第一个发光管

Delay(5000);

P1=0xfd;//点亮第二个发光管

Delay(5000);

P1=0xfb;

Delay(5000);

P1=0xf7;

Delay(5000);

P1=0xef;

Delay(5000);

P1=0xdf;

Delay(5000);

P1=0xbf;

Delay(5000);

P1=0x7f;//点亮第八个发光管

}

}

#include <reg51h>

#include<intrinsh>

#define uchar unsigned char

uchar j,temp;

void delay(unsigned int ms)

{

uchar t;

while(ms--)

for(t=0;t<123;t++);

}

void main()

{

P1=0xff;

delay(500);

temp=0xfe; //有点怪,led接在P23~P26

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

{

P1=temp;

delay(500);

temp=_crol_(temp,1);

}

P1=0xff;

while(1);

}

5只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯

ORG 0000H

START:MOV P1,#01111111B ;最下面的LED点亮

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

MOV P1,#10111111B ;最下面第二个的LED点亮

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11101111B

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11110111B

LCALL DELAY

LCALL DELAY ;延时60秒

MOV P1,#11111011B

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;延时60秒

LCALL DELAY ;完成第一次循环点亮,延时约025秒

AJMP START ;反复循环

;延时子程序,12M晶振延时约250毫秒

DELAY: ;大约值:2us2562562=260ms,也可以认为为250ms

PUSH PSW ;现场保护指令(有时可以不加)

MOV R4,#240

L3: MOV R2 ,#00H

L1: MOV R3 ,#00H

L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)

DJNZ R2 ,L1 ; 中层循环:256次

DJNZ R4 ,L3 ;外层循环:240次

POP PSW

RET

END

随便改了一个

#include<reg51h>

#define uchar unsigned char

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

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

uchar led2[]={0xe7,0xdb,0xbd,0x7e};

bit flag;

void delay(uchar a)

{

uchar i;

while(a--)for(i=0;i<120;i++);

}

void prog1(void)

{

uchar i;

while(flag)

{

P0=led1[i];

i++;

i%=8;

delay(200);

}

}

void prog2(void)

{

uchar i;

while(flag)

{

P0=led2[i];

i++;

i%=4;

delay(200);

}

}

viud prog3{void)

{

uchar i=7;

while(flag)

{

P0=led1[i];

i--;

if(i>7)i=7;

delay(200);

}

}

main()

{

flag=0;

while(1)

{

if(key1==0)

{

flag=0;

while(key1==0);

flag=1;

}

if(key2==0)

{

flag=0;

while(key2==0);

flag=1;

}

if(key3==0)

{

flag=0;

while(key3==0);

flag=1;

}

}

}

以上就是关于用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)全部的内容,包括:用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)、单片机流水灯程序、急!急!急!单片机流水灯汇编语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9287335.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存