电源技术william hill官网
直播中

爱的意义

10年用户 1276经验值
擅长:模拟技术 控制/MCU
私信 关注
[问答]

花样流水灯设计

花样流水灯设计
要  求:
①编写一单片机程序实现8盏LED花样流水灯效果;
②按下按键1实现LED1--->LED8依次点亮效果;
③按下按键2实现LED8--->LED1依次点亮效果;
④按下按键3实现奇数的灯与偶数的灯交替闪烁的效果,并通过数码管显示闪烁的次数。
⑤其他功能及创新。尽可能

回帖(14)

2330608526

2014-12-10 11:47:00
百度51单片机跑马灯程序,你就能解决了!
举报

爱的意义

2014-12-10 19:10:17
嗯嗯,但是没有用数码管显示led灯显示led灯闪烁的次数的啊?
举报

浪拓电子防雷

2014-12-11 14:44:29
盼经验丰富的工程师来献艺解答。
举报

51mcuxuexi

2014-12-12 14:14:50
单片机初学者。
举报

51mcuxuexi

2014-12-12 17:09:09
#include
***it key1=P3^0;
***it key2=P3^1;
***it key3=P3^2;
***it key4=P3^3;           //用于跳出循环语句

/******延时函数自定义*******/

const int value=1000;        //延时时间
int Sum=0;                                //奇偶闪烁计数
void LedShine(void)
{
        char i;
        if(!key1)
                {
                        while(1)
                        {
                                for(i=0;i<8;i++)
                                {
                                        P1=~(0x01<                                         delay(value);
                                        if(!key4)
                                        {
                                                break;
                                        }
                                }
                                if(!key4)
                                {
                                        break;
                                }
                        }               
                }
                else
                {
                        if(!key2)
                        {
                                while(1)
                                {
                                        for(i=0;i<8;i++)
                                        {
                                                P1=~(0x80>>i);                  //右移
                                                delay(value);
                                                if(!key4)
                                                {
                                                        break;
                                                }
                                        }
                                        if(!key4)
                                        {
                                                break;
                                        }
                                }
                        }
                        else
                        {
                                if(!key3)
                                {
                                        P1=0xaa;                        //赋初值
                                        while(1)
                                        {
                                                P1=~P1;                        //奇偶交替闪烁
                                                delay(value);
                                                if(!key4)
                                                {
                                                        break;
                                                }
                                                Sum++;                        //奇偶校验的闪烁次数 ,将这个数字经过处理后就送往数码管显示。
                                        }
                                }
                        }
                }       
}

void main(void)
{
        while(1)
        {
                LedShine();
        }         
}
举报

51mcuxuexi

2014-12-12 18:52:20
#include
***it key1=P3^0;
***it key2=P3^1;
***it key3=P3^2;
***it key4=P3^3;           //用于跳出循环语句

/******延时函数自定义*******/

const int value=1000;        //延时时间
int Sum=0;                                //奇偶闪烁计数
void LedShine(void)
{
        char RedP3,i;
        RedP3=P3&0x0f;
        switch(RedP3)
        {
          case 0x0e:                                          //key1
                             while(1)
                           {
                                     P1=~(0x01<                                   delay(value);
                                  if(i++>8)
                                          i=0;
                                  if(!key4)
                                          break;
                           }
                           break;
          case 0x0d:
                           while(1)
                           {
                                     P1=~(0x80<                                   delay(value);
                                  if(i++>8)
                                          i=0;
                                  if(!key4)
                                          break;
                           }
                           break;
         case 0x0b:
                           P1=0XAA;
                           while(1)
                          {
                                          P1=~P1;
                                        delay(value);
                                        Sum++;
                                        if(!key4)
                                           break;
                          }
                          break;
         
        }
}

void main(void)
{
        P3|=0x0f;                          //将P3低四位拉高
        while(1)
        {
                LedShine();
        }         
}
举报

爱的意义

2014-12-12 20:07:40
数码管显示呢?
举报

51mcuxuexi

2014-12-12 20:48:43
就用程序中的Sum取值,求模。然后送往显示即可
举报

爱的意义

2014-12-12 21:20:02
给出程序可以吗?
举报

51mcuxuexi

2014-12-13 09:27:52
没有硬件数码管,展示不能提供正确的程序,
举报

王晓丹

2015-5-18 11:23:14
xcfgvbhjnmk,lvbnjmk,l.;
举报

王晓丹

2015-5-18 11:26:06
dcfvgbhjnkmldfghjklfvgbhnjkl
举报

王晓丹

2015-5-18 11:26:53
cfvgbhnjmk,xcfvgbhjfghjkl;
举报

liuguangjun

2015-5-27 20:36:46

xcfgvbhjnmk,lvbnjmk,l.;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分