打印

请大家帮下忙,程序不会写

[复制链接]
577|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
编写一个程序实现如下功能: (流水灯+按键)。
KEY1按键按下时:灯从D1~D8方向循环显示跑马灯。。KEY2按键按下时:灯从D8~D1方向循环显示跑马灯。。KEY3按键按下时:灯从两边向中间方向循环显示跑马灯。。KEY4按键按下时:灯从中间向两边方向循环显示跑马灯

使用特权

评论回复

相关帖子

沙发
yueguang3048| | 2019-11-8 15:33 | 只看该作者
给你个框子,剩下的自己再改改。

void delay()
{
    for(int i=0;i<100;i++)
        for(int j=0;j<200;j++);
}
void delay10()
{
    for(int i=0;i<10;i++)
        for(int j=0;j<10;j++);
}

void main(void)
{
    unsigned char i,j,k,l;
    unsigned char  LED1[5]={0x81,0x42,0x24,0x18,0};
    unsigned char  LED2[5]={0x18,0x24,0x42,0x81,0};
    unsigned char  LED3[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0};
    unsigned char  LED4[9]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0};
    // Write your code here
    P1=0;
   while (1)
   {       
      if(P3_0==0)
      {       
        delay10();
         if(P3_0==0)
         {  
            for(i=0;i<9;i++)
            {
                  P1=LED3;
                  delay();
             }
            while(P3_0==0);                     
         }
         
      }

      if(P3_1==0)
      {       
        delay10();
         if(P3_1==0)
         {  
            for(j=0;j<9;j++)
            {
                  P1=LED4[j];
                  delay();
             }
            while(P3_1==0);                     
         }             
      }

        if(P3_2==0)
      {       
        delay10();
         if(P3_2==0)
         {  
            for(k=0;k<5;k++)
            {
                  P1=LED1[k];
                  delay();
             }
            while(P3_2==0);                     
         }
      }

        if(P3_3==0)
      {       
        delay10();
         if(P3_3==0)
         {  
            for(l=0;l<5;l++)
            {
                  P1=LED2[l];
                  delay();
             }
            while(P3_3==0);                     
         }
      }     
   }
}

使用特权

评论回复
板凳
tianxj01| | 2019-11-8 17:03 | 只看该作者
程序道理完全不明白的,不帮你,也帮不了你。
程序道理有点头绪的,那么请看下面:
由于你有4种组态,分别是逆序、顺序 中心开花、收缩类型。所以采用归一的编程,查表也许比走程序运算更清晰。
建立2个表格  一个是0000001;00000010.。。。。。10000000。这是第一个,里面就8个数据。
另一个表格:00011000;00100100;01000010;10000001 里面就4个数据,这里表示的都是2进制,自己去换算成16进。
按键1、2则根据定时延时(这个决定流水速度)查表,1是正着查(数组指针+),2就反着查。
同样道理,3、4按键则查表二,同样是正着查或者反着查。
结果直接输出驱动P口。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝