微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 电源设计讨论 > 花样流水灯设计

花样流水灯设计

时间:10-02 整理:3721RD 点击:

花样流水灯设计

要  求:

①编写一单片机程序实现8盏LED花样流水灯效果;

②按下按键1实现LED1--->LED8依次点亮效果;

③按下按键2实现LED8--->LED1依次点亮效果;

④按下按键3实现奇数的灯与偶数的灯交替闪烁的效果,并通过数码管显示闪烁的次数。

⑤其他功能及创新。尽可能

百度51单片机跑马灯程序,你就能解决了!

嗯嗯,但是没有用数码管显示led灯显示led灯闪烁的次数的啊?

盼经验丰富的工程师来献艺解答。

单片机初学者。

#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();
        }         
}

#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 RedP3,i;
        RedP3=P3&0x0f;
        switch(RedP3)
        {
          case 0x0e:                                          //key1
                             while(1)
                           {
                                     P1=~(0x01<<i);
                                  delay(value);
                                  if(i++>8)
                                          i=0;
                                  if(!key4)
                                          break;
                           }
                           break;
          case 0x0d:
                           while(1)
                           {
                                     P1=~(0x80<<i);
                                  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();
        }         
}

数码管显示呢?

就用程序中的Sum取值,求模。然后送往显示即可

给出程序可以吗?

没有硬件数码管,展示不能提供正确的程序,

xcfgvbhjnmk,lvbnjmk,l.;

dcfvgbhjnkmldfghjklfvgbhnjkl

cfvgbhnjmk,xcfvgbhjfghjkl;

xcfgvbhjnmk,lvbnjmk,l.;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top