单片机按键控制LED灯亮灭程序怎么做到的

单片机按键控制LED灯亮灭程序怎么做到的,第1张

led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led  的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;}

使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?

单片机的P10-P13接四个发光二极管L1-L4的阴极,P14-P17接四个开关K1-K4

程序:

ORG 00H

START: MOV A,P1

ANL A,#0F0H

RR A

RR A

ORl A,#0F0H

MOV P1,A

SJMP START

可以检测单个按键,也可以同时检测多个按键

过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始

MAIN: MOV P1,#11111110B;点亮P10所接的灯

ACALL YS ;调用延时子程序,让P10所接的灯亮一小段时间

MOV P1,#11111101B;点亮P11所接的灯

ACALL YS ;调用延时子程序,让P11所接的灯亮一小段时间

MOV P1,#11111011B;点亮P12所接的灯

ACALL YS ;调用延时子程序,让P12所接的灯亮一小段时间

MOV P1,#11110111B;点亮P13所接的灯

ACALL YS ;调用延时子程序,让P13所接的灯亮一小段时间

MOV P1,#11101111B;点亮P14所接的灯

ACALL YS ;调用延时子程序,让P14所接的灯亮一小段时间

MOV P1,#11011111B;点亮P15所接的灯

ACALL YS ;调用延时子程序,让P15所接的灯亮一小段时间

MOV P1,#10111111B;点亮P16所接的灯

ACALL YS ;调用延时子程序,让P16所接的灯亮一小段时间

MOV P1,#01111111B;点亮P17所接的灯 ACALL YS ;调用延时子程序,让P17所接的灯亮一小段时间

LJMP MAIN ;循环这回用长调用指令LJMP,当程序比较长的时候就用

LJMP YS: ;延时子程序YS,功能是能让LED亮起来或者灭掉一小段时间

MOV R1,#200 ;让灯亮灭时间的长短也就是延时的长短跟#号后面的数据有关

D: MOV R2,#200 ;延时长点#号后面的数据就大点,延时短点#号后面的数据

T: MOV R3,#200 ;就小点,但#号后面最大的数据是255

DJNZ R3,$

DJNZ R2,T

DJNZ R1,D

RET ;子程序返回指令,子程序的设计一般都是因为主程序要调用它, ;调用完是要返回到主程序继续运行下一个语句的

END

单片机P0循环点亮八盏灯的程序并不复杂,只需要实现一个循环点亮的过程,就可以实现了。

一、硬件接线

首先,电路接线是最重要的环节,需要将外部组件与单片机核心引脚相连接,如接线正确,接地和电源,以及led灯和信号脚之间的接法、灯丝与中断脚的线路等,全部调整正确才能正常工作。

二、编程 *** 作

接着,编写程序,设置数字输出端口,将接线好的八盏灯分别设定为1-8口,编写时序程序,循环点亮8个信号脚和led灯,进行点亮和关灯,完成点亮循环工作。

三、调试程序

最后,就可以进行程序调试,将调试好的程序导入单片机,上电启动,查看8个信号脚的点亮情况,运行效果达到预期,即可完成点亮循环程序的编写。

以上是我关于单片机P0循环点亮八盏灯的程序编写步骤,希望能够帮助您更好地理解并完成编写程序,把您的设计想法实现出来!

#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的位置循环左移一位

}

}

用位定义的方法定义端口,例如:sbit LED0=P1^0; sbit LED1=P1^1sbit LED7=P1^7;

接下来,LED0=0;//点亮第一个灯 延时一段时间 LED1=0;//点亮第二个灯 依次点亮。

如下即可:

#include<reg52h>

void main()

{

    unsigned int  i, j;

    P1 = 85;

    while(1)  {

      P1 ^= 255;

      for(i = 100; i > 0; i--)  for(j = 800; j > 0; j--);

    }

}

以上就是关于单片机按键控制LED灯亮灭程序怎么做到的全部的内容,包括:单片机按键控制LED灯亮灭程序怎么做到的、单片机的点亮一盏灯程序、单片机p0循环点亮八盏灯的程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存