单片机控制8个led灯交替点亮的程序

单片机控制8个led灯交替点亮的程序,第1张

#include "reg51h"

main()

{

unsigned int i,j;

while(1)

{

P1=0xfe; //点亮第一个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xfd; //点亮第二个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xfb; //点亮第三个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xf7; //点亮第四个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xef; //点亮第五个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xdf; //点亮第六个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0xbf; //点亮第七个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

P1=0x7f; //点亮第八个LED

for(i=200;i>0;i--)

for(j=500;j>0;j--);

}

}

或:

#include "reg51h"

void delay(unsigned int t)

{

unsigned inti,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

main()

{

unsigned char w,i;

while(1)

{

w=0xfe;

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

{

P1=w; //循环点亮LED

w<<=1; //点亮灯的位置移动,最低位补0

w=w|0x01; //将最低位置1

delay(500); //延时

}

}

}

或:

#include "reg51h"

//程序中使用_crol_函数,所以要包含头文件"intrinsh"

#include "intrinsh"

void delay(unsigned int t)

{

unsigned int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

main()

{

unsigned char temp;

temp=0xfe;

while(1)

{

P1=temp;

delay(500); //延时

temp=_crol_(temp,1); //点亮LED的位置循环左移一位

}

}

#include"reg51h"

#include"stdioh"

sbit led=P1^0;//LED灯接P10口,低电平有效。

sbit key=P1^1;//按键接P11口,低电平有效。

bit key_flag=0;//给你定义一个按键标志,为后面点亮LED保持使用

void main(void)//进入主程序

{

led=1;开机的时候保持LED不亮

while(1)//进入主程序循环状态,一直在这个while循环里检测

{

if(key==0)//如果有按键被按下

{

key_flag = ~key_flag;//将这个标志取反,如果在按下前,他是1,则变为0,如果是0,则变为1

while(!key);//按键是否松开,如果松开,上面的取反有效,否则一直不变LED的状态。

}

if(key_flag)//如果这个标志为1,则LED=0,就是点亮了。

{led=0;}//点亮

else{led=1;}//否则就是熄灭LED指示灯。

}

}

}

编了一个小程序,供参考,没有环境调试,大概意思就这样,你可以参考自己试试。

#include<reg51h>

#include<stringh>

#define uchar unsigned char

sbit LED=P1^0;

uchar buf[16],num;

uchar strOpen="Open";

uchar strClose="Close";

void uart() interrupt 4

{

if(RI)

{

RI=0;

buf[num]=SBUF;

num++;

}

if(TI)TI=0;

}

void initbuf()

{

uchar i;

for(i=0;i<16;i++)buf[i]=0x00;

}

main()

{

TMOD=0x20;

SCON=0x50;

TH1=TL1=0xfd;

TR1=1;

ES=1;

EA=1;

initbuf();

while(1)

{

switch(num)

{

case 0:break;

case 1:break;

case 2:break;

case 3:break;

case 4:

if(strcmp(strOpen,buf)==0)LED=0;

initbuf();

num=0;

break;

case 5:

if(strcmp(strClose,buf)==0)LED=1;

initbuf();

num=0;

break;

default:num=0;break;

}

}

}

用MCS51单片机汇编语言编写的点亮一只LED灯源程序LED1ASM,代码如下:

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:MOV A,#FEH

MOV P1,A

AJMP $

END

电源的两端各连出一根导线,然后左边一根接灯,右边一根接你的电阻(接电阻那头不固定也行,能在电阻上滑动)。然后灯与电阻之间再用一根导线相连。当电源通电以后,灯应该就能亮了,而且还能根据你的那个能滑动的导线头在电阻上滑动来改变灯的亮度。

差不多就是这样了。

初级物理题???我力学比较在行

LED显示屏后面都是有电源盒的,都串联好了,然后在用发送卡连接到电脑上,显示屏上有接受卡,接收到电脑传出来的数字信号,自然显示屏出现的效果和电脑上是同步的,自然不插电源,显示屏是不会亮的!以上就是LED显示屏如何电亮大概过程。

初始化部分你要自己根据芯片资料写,数码管部分可以根据数码管的资料做数组xs[10]={0x3b……}要看数码管引脚定义了,看原理图看不出来的,可以做个200MS的定时器,然后计数5次就是1S

直接给数码管的IO口附数组的值,如P1=xs[5];要看你给的是哪个IO口了,我这边看不清你的原理图,LED亮200MS后就换动作太快,看不出效果,可以把时间加长

以上就是关于单片机控制8个led灯交替点亮的程序全部的内容,包括:单片机控制8个led灯交替点亮的程序、开关控制LED点亮AT89S52单片机程序讲解、怎么用上位机通过串口去控制51单片机点亮一个LED 求程序。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存