花样流水灯设计

2019-07-16 17:52发布

花样流水灯设计要  求:①编写一单片机程序实现8盏LED花样流水灯效果;②按下按键1实现LED1--->LED8依次点亮效果; ③按下按键2实现LED8--->LED1依次点亮效果;④按下按键3实现奇数的灯与偶数的灯交替闪烁的效果,并通过数码管显示闪烁的次数。⑤其他功能及创新。尽可能
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
51mcuxuexi
2019-07-17 07:34
#include<reg52.h>
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit 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<<i);                          //左移
                                        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();
        }         
}

一周热门 更多>