找回密码
 立即注册

QQ登录

只需一步,快速开始

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

按键指示灯闪烁,提示按下按键,单片机代码怎么写?求指导

[复制链接]
跳转到指定楼层
楼主
谢谢大家,非常感激大家在百忙之中抽时间回答我的问题.

程序要求是:按键灯先闪烁提示按下此键。按下后关闭闪烁
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:554500 发表于 2022-4-26 21:28 | 只看该作者


sbit LED=P1^0;
sbit KEY=P1^1;

char st=0; //1-按键按下,0-按键释放

void LED_TASK()
{
  if(st)
  {
     LED=!LED; //灯闪烁
     delay(); //延时函数
   }
   else
  {
      LED=1;  //灯灭
   }
}

void KEY_SCAN()
{
     static char i=0,c=0;

    if(KEY==0)
   {
       if(i==0)
      {
            if(KEY==0&&c++>50)  //
           {
                i=1;
               st=1;   //按键按下
           }
     }
   }
   else  //按键释放,相应变量清零
  {
     i=0;
    c=0;
    st=0;
  }
}
回复

使用道具 举报

板凳
ID:709761 发表于 2022-4-27 09:55 | 只看该作者
按键灯闪烁提示按下此键,按下以后关闭闪烁
回复

使用道具 举报

地板
ID:554500 发表于 2022-4-27 23:26 | 只看该作者



#include <reg52.h>

sbit LED=P1^0;
sbit KEY=P1^1;

char st=0; //1-按键按下,0-按键释放

void delay(unsigned int x)
{
        while(x--);
}

void LED_TASK()
{
        static unsigned char i=0;
       
        if(i++<50)
                return;
        i=0;
       
  if(st)
  {
     LED=!LED; //灯闪烁

   }
   else
  {
      LED=1;  //灯灭
   }
}

void KEY_SCAN()
{
    static char i=0,c=0;

    if(KEY==0)
   {
       if(i==0)
      {
            if(KEY==0&&c++>50)  //
           {
                i=1;
               st=1;   //按键按下
           }
     }
   }
   else  //按键释放,相应变量清零
  {
    i=0;
    c=0;
    st=0;
  }
}

void main()
{
        while(1)
        {
                KEY_SCAN();
                LED_TASK();
                delay(10); //延时函数
        }
}

参考protus仿真.zip

4.63 MB, 下载次数: 2

回复

使用道具 举报

5#
ID:149451 发表于 2022-4-28 05:02 | 只看该作者

我理解LZ的意思是没按下是LED闪烁,按一次其熄灭(相当于上电在某按键案件下LED闪烁,按下该键,LED熄灭)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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