bzdwqdbzd 2024-01-29 22:10 采纳率: 0%
浏览 7

关于#51单片机#的问题:想独立控制同时不同小灯应该怎么实现(语言-c语言)

对于51单片机,想独立控制同时不同小灯应该怎么实现?

if(Key_Down == 4)//判定按键时间的大小。
    {
      S4_ms_Tick = ms_Tick ;//计时
      L_S_C = 1;//令该模块控制控制
    }
     if( L_S_C == 1) 
     {
        if(Key_up == 4)//上升沿为4时候
           {
             if((ms_Tick - S4_ms_Tick) < 1000)//小于一秒
                {
                 state_flag = 1;//屏幕显示的数字
                 L_S_C = 0;
                 }
            else
            {
               state_flag = 0;
               L_S_C = 0;
            }
    
        
           }
       }
        
    if(Key_Down == 5)//当按下5的时候,改变变量。
    {
        index =~0;//控制小灯的变量
    }
    

void    Led_Proc(void)
{
    if(Led_Slow_Down) return;
    Led_Slow_Down = 1;
    
    
    /***用户自定义代码区↓***/        
     if(state_flag == 0)
    {
        ucLed &= (~0X03);    
        ucLed |= 0X01;
    }
    else
    {        
         ucLed &= (~0X03);    
        ucLed |= 0X02;    
    }
    
    
    if(index == 1)//单独点亮第三个灯。
    {
         ucLed |= 0X04;
        
    }
    else
    {
        ucLed &= (~0X04);
    }
    
    /***用户自定义代码区↑***/            

}

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-29 22:12
    关注

    引自免费微信小程序:皆我百晓生

    要实现对51单片机上的不同小灯进行独立控制,你可以按照以下步骤进行操作:

    1. 在主程序中添加相关代码以检测按键事件和控制相应的小灯。

      • 首先,在按下某个按键时,需要记录当前时间,可以使用ms_Tick来获取当前时间。
      • 利用条件语句判断按键是否为所需按键,例如判断Key_Down是否为4来检测按下的按键。
      • 在按键条件满足时,将ms_Tick的值存储到一个变量中(例如S4_ms_Tick),表示按键按下的时间。
      • 同时将一个标志位(例如L_S_C)设置为1,表示该模块正在进行独立控制。
      • 在后续的条件语句中,根据标志位判断是否进行独立控制操作,例如判断L_S_C是否为1。
      • 在进行独立控制操作时,可以再次判断按键的状态,例如判断Key_up是否为4来检测按键抬起的事件。
      • 在按键抬起事件满足时,通过计算ms_Tick和之前记录的时间变量之间的差值,判断按键按下的持续时间是否小于一秒。
      • 根据判断结果设置一个状态变量(例如state_flag),表示要显示的数字,如0或1。
      • 最后将标志位(L_S_C)和状态变量(state_flag)重置为0,表示独立控制操作结束。
    2. 在LED处理函数(Led_Proc)中根据不同的状态变量和小灯控制变量来设置LED状态。

      • 在用户自定义代码区中,根据state_flag的值设置ucLed变量控制灯的显示。
        • 例如,当state_flag为0时,设置ucLed的低两位为01;
        • state_flag为1时,设置ucLed的低两位为10;
      • 在根据index的值进行控制小灯的独立显示。
        • 例如,当index为1时,设置ucLed的第3位为1;
        • 否则,将ucLed的第3位设为0。

    以上就是解决你关于51单片机的独立控制不同小灯的问题的方法提示。请按照上述步骤进行配置,并根据你的具体需求进行相应的调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月29日

悬赏问题

  • ¥15 codeblock遇到问题了,求帮助😭
  • ¥15 Qt6.8.0加载网页MSVC2022
  • ¥15 360浏览器m2的这个值
  • ¥15 国内有哪些厂商做automlops的?
  • ¥15 skynet pb mysql
  • ¥15 笔记本外接显示器分辨率太低各种方法都用过了调不高
  • ¥15 Redstone R0697-F00 D2020 交换机 OS
  • ¥50 H5+js 动态数字画廊怎么做?
  • ¥20 外向内全景图像拼接相关项目和论文咨询
  • ¥20 请写个前端案例学习使用