2301_78825416 2024-04-21 16:50 采纳率: 90.9%
浏览 3
已结题

51单片机,灯亮,如何用自己的话描述(语言-c++)

img

求解答
如何描述这段用51单片机写出来灯亮与闪烁,P2=(~LED[n]&0x7f)可以理解取反,&如何理解

  • 写回答

4条回答 默认 最新

  • 关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    题意理解:根据给出的代码实现51单片机控制LED灯的亮和闪烁,效果类似于小时候玩的游戏贪吃蛇。

    解决方案:

    1. 定义变量和数组:在代码开头定义了两个变量n和i,分别用于控制LED灯亮的情况。同时,定义了一个LED数组,数组中存储的是控制LED灯亮的每个状态。

    2. 对LED灯进行控制:对于LED灯的控制,使用P2来控制。同时,在循环中对P2设置值进行特定的位运算来控制LED的状态。

    3. 利用延迟函数进行控制:在代码中定义了一个延迟函数delay,用来控制灯亮的时间。通过调整delay函数中的参数i,控制灯亮的时间长度。

    4. 实现灯亮和闪烁效果:实现灯亮可以直接将LED数组中的每个值分别赋值给P2,控制灯的亮暗。实现灯的闪烁可以通过在循环中使用位移操作改变LED[n]的值,从而控制灯的闪烁。

    修改后正确代码:

    #include<regx51.h> 
    
    void delay(unsigned int i) {
       while(i--);
    }
    
    void main () {
       unsigned char n,i;
       unsigned char LED[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
    
       while(1) {
          for(n=0;n<7;n++) {
             P2=(~LED[n])&0x7f;
             for(i=0;i<9;i++) {
                delay(30000):
                P2=(~(LED[n]<<i))&0x7f;
             }
          }
       }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月7日
  • 已采纳回答 5月7日
  • 修改了问题 4月21日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 关于stm32hal库驱动ft6336触摸屏遇到的问题
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22