永发信息网

多按键花样流水灯

答案:3  悬赏:30  手机版
解决时间 2021-03-17 15:34
设计要求
1)选择一个I/O口控制八只流水灯。
2)设置四个按键K1—K4,按下K1跑马灯,K2流水灯,K3鸳鸯戏水,K4则循环三种控制方式。
3)跑马灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后关闭。
4)流水灯:共8个LED逐次点亮,每隔100ms点亮一个LED,点亮100ms后下一个LED点亮,当所有LED灯全部点亮后,延时100ms,然后全灭;然后继续上次操作。
5)鸳鸯溪水灯:共8个LED,第一次1、3、5、7号灯点亮,延时100ms,关闭,延时100ms,2、4、6、8号灯点亮,延时100ms,关闭,延时100ms。然后继续上次操作。
最佳答案
#include
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
unsigned char code pao[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
unsigned char code liu[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};
unsigned char code yua[]={0x55,0xaa};
void delay(unsigned int x)//延时Xms
{unsigned i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}

main()
{
unsigned int i,j;
while(1)
{
if(key1==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key1==0) //再次确认按键是否按下,没有按下则退出
{
while(key1==0)
{

}
j = 1;
}
}
if(key2==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key2==0) //再次确认按键是否按下,没有按下则退出
{
while(key2==0)
{

}
j = 2;
}
}
if(key3==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key3==0) //再次确认按键是否按下,没有按下则退出
{
while(key3==0)
{

}
j = 3;
}
}
if(key4==0)//如果检测到低电平,说明按键按下
{
delay(10);//延时去抖,一般10-20ms
if(key4==0) //再次确认按键是否按下,没有按下则退出
{
while(key4==0)
{

}
j = 4;
}
}
if(j==1)//如果检测到低电平,说明按键按下
{
for(i=0;i<9;i++)
{
P1=pao[i];
delay(100);
}

}

if(j==2)
{

for(i=0;i<9;i++)
{
P1=liu[i];
delay(100);
}

}
if(j==3)
{

for(i=0;i<2;i++)
{
P1=yua[i];
delay(100);
}

}
if(j==4)
{

for(i=0;i<9;i++)
{
P1=pao[i];
delay(100);
}
for(i=0;i<9;i++)
{
P1=liu[i];
delay(100);
}
for(i=0;i<2;i++)
{
P1=yua[i];
delay(100);
}
}
}
}
全部回答
#include"reg52.h" #define unchar unsigned char #define TH_H (256-10) #define TH_L (256-10) sbit output0 = P1^0; sbit output1 = P1^1; sbit output2 = P1^2; sbit output3 = P1^3; sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2; sbit s4=P2^3; unchar count_H[4],count_L[4]; unchar count1[4],count2[4]; unchar i; unchar P2_H[]={0xef,0xdf,0xbf,0x7f}; void t0(void) interrupt 1 { count_H[i]++; count_L[i]++; TH0=TH_H; TL0=TH_L; } void main(void) { unchar Fre_ct[4]={100,50,10,5};// unchar pwm[4]={50,60,80,100};//设不同的初值频率与占空比 TMOD=0x02; IE=0x82; TH0=TH_H; TL0=TH_L; TR0=1; P1=0x0f; while(1) { for(i=0;i++;i<4) { P2=P2_H[i]; if(s1==0) { while(s1==0); Fre_ct[i]+=5; } if(s2==0) { while(s2==0); Fre_ct[i]-=5; } if(s3==0) { while(s3==0); pwm[i]++; } if(s4==0) { while(s4==0) ; pwm[i]--; } count1[i]=Fre_ct[i]*pwm[i]/100; count2[i]=Fre_ct[i]*(100-pwm[i])/100; } if(count_H[0]==count1[0]) { output0=0; count_L[0]=0; } if(count_L[0]==count2[0]) { output0=1; count_H[0]=0; } if(count_H[1]==count1[1]) { output1=0; count_L[1]=0; } if(count_L[1]==count2[0]) { output1=1; count_H[1]=0; } if(count_H[2]==count1[2]) { output2=0; count_L[2]=0; } if(count_L[2]==count2[2]) { output2=1; count_H[2]=0; } if(count_H[3]==count1[3]) { output3=0; count_L[3]=0; } if(count_L[3]==count2[3]) { output3=1; count_H[3]=0; } } } 夜郎莱特很不错哦,如果感觉可以请采纳为最佳答案,谢谢 ittyyvkoqu11334510182012-3-10 15:09:20
....看你这个标题挺虎人的~~~ 是winfrom?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
za化妆品用完以后为什么脸干干的
网上定的酒店没住会自己退吗?
优的右边半个字怎么读
狗狗能吃韭菜吗
广州市番禺区国税局第六分局在什么地方啊,我
生意好似春前草,财源犹如雨后泉。下联怎摸对
办理信用卡的时候总是查询进度会影响到综合评
在微信里截图位置,能被对方发现吗
三原农机公司在哪里啊,我有事要去这个地方
pvc贴面板的纸是什么纸?? 谢谢
孩子爸爸进监狱去了,孩子现在要上学了,可是
三国志11,我原本玩了一个势力刘备,放了好久
家庭地位是什么意思
MacBookAir笔记本电脑屏幕乎暗乎亮是怎么回事
柳树村这个地址在什么地方,我要处理点事
推荐资讯
井源居东门(人行门)在哪里啊,我有事要去这个
万家华联生活超市地址有知道的么?有点事想过
公安县狮子口镇金星村民委员会地址有知道的么
无论何时何地,哥哥一放歌妹妹就忍不住尬起舞
小乔铭文怎么出最好
怎么发动机放出来的机油开始出来的全是水
马蓉现在后悔了吗
steam联同游戏一起上传云盘后,之后下载能直接
网王同人,男主越前龙马,女主要非常漂亮网球
2003年11月11日出生的天蝎座的幸运数字是几
填空题以2、3两数为根的一元二次方程可以是__
本人是九江的 想在江西省内找个学茶艺的学校
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?