微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么用51单片机实现用一个键盘控制3个LED灯

怎么用51单片机实现用一个键盘控制3个LED灯

时间:10-02 整理:3721RD 点击:
按第一次,第一个亮,第二次第二个亮,第三次第三个亮,第四次又第一个亮。用c语言实现p1.0接键盘,1,2,3接三个led灯,共阳接法。

用一个全局变量控制第几次按下键盘,从而控制是第几个灯亮。

单片机学的太烂了,能有完整的程序就好了

自己好好想想 肯定能想到的

用循环语句,在用位移函数

sbit KEY=P1^0;
sbit LED0= P1^1;
sbit LED1= P1^2;
sbit LED2= P1^3;
uchar led_flag=0;
P1=0xff;
while(1)
{
    if(KEY==0)
    {
        delay_ms(50);
        if(KEY==0)
        {
            led_flag++;
            if(led_flag==3)
                led_flag=1;
        }
        while(!KEY);
    }
    if(led_flag==1)
       { LED0=0;LED2=1;}
    else if(led_flag==2)
        {LED1=0;LED0=1;}
    else if(led_flag==3)
        {LED2=0;LED1=1;}
}

大概这样就能实现吧

了然,我试试,不过程序最后变成控制两个灯了

你是相当得水啊

额,,,,,,,,,,,,

if(led_flag==3)
                led_flag=1;
        }
这段程序中,将ed_flag==3改成flag==4。

hao   taihaole         

#include<reg52.h>     
#define uchar unsigned char
sbit key1=P3^4;
uchar num;
void delay(uchar a)
{
        uchar i,j;
    for(i=a;i>0;i++)
       for(j=110;j>0;j++);
}
void led_display()
{
        if(key1==0)
      {  
         delay(5);
         if(key1==0)
                   {
                                 while(!key1);
             delay(5);
             while(!key1);
                  num++;
                              if(num==4)
                  num=1;  
          }         
          switch(num)
                         {
                                 case 1:P1=0xfe;break;
                                 case 2:P1=0xfd;break;
                                 case 3:P1=0xfb;break;
             default:break;
                         }
      }       
}
void main()
{
    num=0;
    while(1)
     {
       led_display();
     }
}

谢了谢了谢了谢了谢了谢了

还行吧,继续努力还行吧,继续努力

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top