找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1367|回复: 2
打印 上一主题 下一主题
收起左侧

单片机按键控制LED灯怎么编写的功能都实现不了?哪里有问题?

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次(中奖概率 10%)
跳转到指定楼层
楼主


#include<reg52.h>   //单片机头文件

#define uchar unsigned char    //宏定义
#define uint unsigned int
        
sbit LED1=P2^0;    //LED灯
sbit LED2=P2^1;

sbit Key1=P0^0;                //开
sbit Key2=P0^1;                //关
sbit Key3=P0^2;                //功能1
sbit Key4=P0^3;                //功能2
sbit Key5=P0^4;                //功能3


void delay1ms(uint Y)     //延时函数
{
        int i;
        while(Y--)for(i=0;i<120;i++);
}


void main()
{
        while(1)
  {
                        if(Key1==0)    //开始
                        {
                                delay1ms(5);
                                if(Key1==0)
                                {
                                                LED1=1;LED2=0;
                                                if(Key3==0)   //功能1
                                                {
                                                delay1ms(5);
                                                        if(Key3==0)
                                                        {

                                                                        LED1=0;
                                                                        delay1ms(200);
                                                                        LED1=1;
                                                                        delay1ms(200);
                                                                        while(Key3==0);
                                                        }
                                                }
                                                if(Key4==0)  //功能2
                                                {
                                                        delay1ms(5);
                                                        if(Key4==0)
                                                        {
                                                                LED1=0;LED2=1;
                                                                while(Key4==0);
                                                        }
                                                }
                                                if(Key5==0)   //功能3
                                                {
                                                        delay1ms(5);
                                                        if(Key5==0)
                                                        {
                                                                LED1=1;LED2=0;
                                                        }
                                                }
                                                while(Key1==0);
                                                        }
                        }
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:336670 发表于 2019-5-17 17:37 | 只看该作者
#include<reg52.h>
sbit led1=P0^0;
sbit led2=P0^1;

sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
void delay()
{
        unsigned int a=30000;
        while(a--);       
}
void main()
{
        while(1)
        {
        if(key1==0)
                {
                        if(key2!=0)
                        {
                                if(key3==0)
                                {
                                        led1=~led1;
                                        delay();
                                }
                                else if(key4==0)
                                {
                                        led1=1;
                                        led2=0;
                                }
                                else if(key5==0)
                                {
                                        led1=0;
                                        led2=1;
                                }
                        }
                }
        }
}
你把引脚改了试试这个呢

kz.png (24.68 KB, 下载次数: 44)

kz.png
回复

使用道具 举报

板凳
ID:213173 发表于 2019-5-18 08:05 | 只看该作者
如果P0口接按键需要接10K上拉电阻,LED要串接1K限流电阻。程序改这样就可以满足楼主全部要求。
  1. #include<reg52.h>   //单片机头文件

  2. #define uchar unsigned char    //宏定义
  3. #define uint unsigned int
  4.         
  5. sbit LED1=P2^0;    //LED灯
  6. sbit LED2=P2^1;

  7. sbit Key1=P0^0;                //开
  8. sbit Key2=P0^1;                //关
  9. sbit Key3=P0^2;                //功能1
  10. sbit Key4=P0^3;                //功能2
  11. sbit Key5=P0^4;                //功能3


  12. void delay1ms(uint Y)     //延时函数
  13. {
  14.         int i;
  15.         while(Y--)
  16.                 for(i=0;i<120;i++);
  17. }

  18. void main()
  19. {
  20.         bit i=0;
  21.         while(1)
  22.         {
  23.                 if(Key1==0)    //开始
  24.                 {
  25.                         delay1ms(5);
  26.                         if(Key1==0)
  27.                         {
  28.                                 i=1;
  29.                                 LED1=0;LED2=0;
  30.                                 while(Key1==0);
  31.                         }
  32.                 }
  33.                 if(Key2==0)    //停止
  34.                 {
  35.                         delay1ms(5);
  36.                         if(Key2==0)
  37.                         {
  38.                                 i=0;
  39.                                 LED1=1;LED2=1;
  40.                                 while(Key2==0);
  41.                         }
  42.                 }
  43.                 if(i==1)
  44.                 {
  45.                         if(Key3==0)   //功能1
  46.                         {
  47.                                 delay1ms(5);
  48.                                 if(Key3==0)
  49.                                 {
  50.                                         LED1=1;LED2=1;
  51.                                         while(Key3==0);
  52.                                         while(Key1&Key2&Key4&Key5)
  53.                                         {
  54.                                                 LED1=~LED1;
  55.                                                 delay1ms(250);
  56.                                         }
  57.                                         LED1=1;
  58.                                 }
  59.                         }
  60.                         if(Key4==0)  //功能2
  61.                         {
  62.                                 delay1ms(5);
  63.                                 if(Key4==0)
  64.                                 {
  65.                                         LED1=0;LED2=1;
  66.                                         while(Key4==0);
  67.                                 }
  68.                         }
  69.                         if(Key5==0)   //功能3
  70.                         {
  71.                                 delay1ms(5);
  72.                                 if(Key5==0)
  73.                                 {
  74.                                         LED1=1;LED2=0;
  75.                                         while(Key5==0);
  76.                                 }
  77.                         }               
  78.                 }
  79.         }
  80. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表