花样流水灯设计
花样流水灯设计
要 求:
①编写一单片机程序实现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.;