马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 划句顾 于 2022-4-11 16:23 编辑
本次的实验,我没有考虑很多问题,我唯一的目的就只是把它搞出来,然后明天实验课可以早一点出来哈哈哈哈哈。
【写了两天了,就这个运行出来了,它的几个兄弟姐妹都流产了,泪目了 】
8号做了流水灯2.0,有兴趣可以看一下流水灯2.0
test_5.rar
(62.35 KB, 下载次数: 1)
/*
*Time:2022/4/06
*Author:LaoGu
*Purpose:参考教材的第1和2项目,实现一种自定义的智能流水灯控制系统设计,
利用按键在线修改流水灯的花样。请提前做好实验准备。
提示:如利用4个按键操作,其中有两个按键用于实现花样模式的切换,
另外两个按键用于调节花样变化的速度。
*/
#include "reg51.h"
//设置按键
sbit K0=P1^0; //改变流水方向
sbit K1=P1^1; //增加时间
sbit K2=P1^2; //减少时间
sbit K3=P1^3; //改变流水灯花样
//设置花样数组
char hy1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char hy2[]={0x3f,0xcf,0xf3,0xfc,0x60,0x30,0x0c,0x06};
char hy3[]={0x0f,0xf0,0xcc,0x33,0xAA,0x55,0x99,0x66};
char hy4[]={0xe0,0x70,0x38,0x1c,0x0e,0x07,0xa8,0x54};
//延迟函数【时间可以自定义】
void Delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<1000;j++);
}
//消除按键抖动函数
void Delay10ms()
{
int i,j;
for(i=0;i<100;i++)
for(j=0;j<10;j++);
}
//主函数
void main()
{
char i=0;
bit dir=0,key_mark=0;
int n=5,j=1;
while(1)
{
if((!K0 || !K1 || !K2 || !K3) && !key_mark)
{
Delay10ms();
if(!K0 || !K1 || !K2||!K3)
{
if(!K0)
dir=!dir;
else if(!K1)
n+=10;
else if(!K2)
n-=10;
else
{
j+=1;
if(j>4) //之前我写的是j>=5 这个条件是错的,我老师说它的条件不可能大于等于5
j=1;
}
key_mark=1;
}
}
else if(K0)
key_mark=0;
switch(j)
{
case 1:P3=hy1[i];break;
case 2:P3=hy2[i];break;
case 3:P3=hy3[i];break;
case 4:P3=hy4[i];break;
}
Delay(n);
if(dir==0)
{
if(++i>7)
i=0;
}
else
{
if(--i<0)
i=7;
}
}
}
电路图:
|