1. 首页 > 科技

求单片机点动开关控制LED灯的程序(求51单片机一个点动开关控制三个led程序)

求单片机点动开关控制LED灯的程序(求51单片机一个点动开关控制三个led程序)

求51单片机一个点动开关控制三个led程序

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar j,k;

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

void delay(int ms)

{

uchar i;

while(ms--)

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

}

uchar code tab[]={

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfb,0xef,0x7f,0xfd,0xf7,0xdf,0x7f,

};

void keyscan()

{

while(!key1)

{

delay(10);

if(key1)

k=1;

}

while(!key2)

{

delay(10);

if(key2)

k=2;

}

while(!key3)

{

delay(10);

if(key3)

k=3;

}

}

void main()

{

while(1)

{

keyscan();

switch(k)

{

case 1:

{

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

{

keyscan();

if(k!=1)

break;

P1=tab[j];

delay(200);

}

};break;

case 2:

{

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

{

keyscan();

if(k!=2)

break;

P1=tab[j+8];

delay(200);

}

};break;

case 3:

{

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

{

keyscan();

if(k!=3)

break;

P1=tab[j+16];

delay(200);

}

};break;

default:

break;

}

}

}

求一个51单片机的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了

LED BIT P1.0

KEY BIT P1.1

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

    CLR 00H

MAIN1:

    JB KEY,LOOP

    JNB KEY,$

    CPL 00H

LOOP:

    JNB 00H,LOOP1

    CPL LED

    LCALL DELAY

    SJMP MAIN1

LOOP1:

    SETB LED

    SJMP MAIN1

DELAY:

    MOV R2,#200

DLY:

    MOV R3,#250

    DJNZ R3,$

    DJNZ R2,DLY

    RET

    END

求一段51单片机用按键控制LED的程序。

while(1) { if(num>=20) //num==20最好改成 >=20 防止由于按銉延时而错过num==20的机会而使程序出现长时的混乱 { num=0; led1=~led1; led2=~led2; } if (key==0)//按键是否按下 { 延时10-20ms; while(key==0);//按键是否抬起 if (tr0==1)tr0=0: else tr0=1: } } 也可以用开关中断来实现 如果按键不听使唤,在if (key==0)后大括号里的延时语句后再加一次if (key==0)判断

单片机通过按钮控制一个LED小灯的亮灭,请问这个程序怎么写

led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led

的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后

就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); //

等待按键放开led1=~led1;}