尹其畅流水灯的操作.docx
- 文档编号:3715774
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:20
- 大小:62.89KB
尹其畅流水灯的操作.docx
《尹其畅流水灯的操作.docx》由会员分享,可在线阅读,更多相关《尹其畅流水灯的操作.docx(20页珍藏版)》请在冰点文库上搜索。
尹其畅流水灯的操作
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voidmoshi1();
voidmoshi2();
voidmoshi3();
voidmoshi4();
voidkeyscan();
ucharaa,bb,cc,dd;
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
//延时函数开始
voiddelay(uchari)
{
ucharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
//延时函数结束
voidmain()
{
while
(1)
keyscan();
}
voidkeyscan()
{
//关闭所有的流水灯
P0=0x00;
P2=0x00;
P3=0x00;
//关闭所有的流水灯
//选择流水灯工作模式
if(key1==0)//判断是不是按下了开关1,也就是是不是模式1,从左到右的流水灯
{
delay(100);
if(key1==0)
{
while(!
key1);
delay(100);
moshi1();
}
}
if(key2==0)//判断是不是按下了开关1,也就是是不是模式1,从左到右的流水灯
{
delay(100);
if(key2==0)
{
while(!
key2);
delay(100);
moshi2();
}
}
if(key3==0)//判断是不是按下了开关1,也就是是不是模式1,从左到右的流水灯
{
delay(100);
if(key3==0)
{
while(!
key3);
delay(100);
moshi3();
}
}
}
//开关1控制流水灯向右移动开始
voidmoshi1()
{
ucharf,i;
aa=0x06;
P0=0x00;
for(i=0;i<9;i++)
{
f=0x01;
aa=aa+f;
P0=aa;
delay(4000);
P0=0x00;
}
aa=0x70;
P0=0x00;
for(i=0;i<8;i++)
{
f=0x10;
aa=aa+f;
P0=aa;
delay(4000);
P0=0x00;
}
P0=0x00;
aa=0x07;
P2=0x00;
for(i=0;i<8;i++)
{
f=0x01;
aa=aa+f;
P2=aa;
delay(4000);
P2=0x00;
}
aa=0x70;
P2=0x00;
for(i=0;i<8;i++)
{
f=0x10;
aa=aa+f;
P2=aa;
delay(4000);
P2=0x00;
}
P2=0x00;
aa=0x07;
P3=0x00;;
for(i=0;i<8;i++)
{
f=0x01;
aa=aa+f;
P3=aa;
delay(4000);
P3=0x00;
}
aa=0x70;
P3=0x00;
for(i=0;i<8;i++)
{
f=0x10;
aa=aa+f;
P3=aa;
delay(4000);
P3=0x00;
}
P3=0x00;
}
//开关1控制流水灯向右移动结束
voidmoshi2()
{
ucharf,i,aa;
aa=0xf0;
P3=aa;
delay(4000);
P3=0x00;
for(i=0;i<7;i++)
{
f=0x10;
aa=aa-f;
P3=aa;
delay(4000);
P3=0x00;
}
aa=0x0f;
P3=aa;
delay(4000);
P3=0x00;
for(i=0;i<7;i++)
{
f=0x01;
aa=aa-f;
P3=aa;
delay(4000);
P3=0x00;
}
P3=0x00;
aa=0xf0;
P2=aa;
delay(4000);
P2=0x00;
for(i=0;i<7;i++)
{
f=0x10;
aa=aa-f;
P2=aa;
delay(4000);
P2=0x00;
}
aa=0x0f;
P2=aa;
delay(4000);
P2=0x00;
for(i=0;i<7;i++)
{
f=0x01;
aa=aa-f;
P2=aa;
delay(4000);
P2=0x00;
}
P2=0x00;
aa=0xf0;
P0=aa;
delay(4000);
P0=0x00;
for(i=0;i<7;i++)
{
f=0x10;
aa=aa-f;
P0=aa;
delay(4000);
P0=0x00;
}
aa=0x0f;
P0=aa;
delay(4000);
P0=0x00;
for(i=0;i<7;i++)
{
f=0x01;
aa=aa-f;
P0=aa;
delay(4000);
P0=0x00;
}
P0=0x00;
}
voidmoshi3()
{uchari,f,aa;
aa=0x08;
P0=aa;
delay(4000);
P0=0x00;
for(i=0;i<3;i++)
{
f=0x02;
aa=aa+f;
P0=aa;
delay(4000);
P0=0x00;
}
aa=0x80;
P0=aa;
delay(4000);
P0=0x00;
for(i=0;i<3;i++)
{
f=0x20;
aa=aa+f;
P0=aa;
delay(4000);
P0=0x00;
}
P0=0x00;
aa=0x08;
P2=aa;
delay(4000);
P2=0x00;
for(i=0;i<3;i++)
{
f=0x02;
aa=aa+f;
P2=aa;
delay(4000);
P2=0x00;
}
aa=0x80;
P2=aa;
delay(4000);
P2=0x00;
for(i=0;i<3;i++)
{
f=0x20;
aa=aa+f;
P2=aa;
delay(4000);
P2=0x00;
}
P2=0x00;
aa=0x08;
P3=aa;
delay(4000);
P3=0x00;
for(i=0;i<3;i++)
{
f=0x02;
aa=aa+f;
P3=aa;
delay(4000);
P3=0x00;
}
aa=0x80;
P3=aa;
delay(4000);
P3=0x00;
for(i=0;i<3;i++)
{
f=0x20;
aa=aa+f;
P3=aa;
delay(4000);
P3=0x00;
}
P3=0x00;
}
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
voiddelayms(uint);
voidkeyscan();
voidmoshi1();
voidmoshi2();
voidmoshi3();
ucharaa,bb,cc,dd,oo;
voidmain()
{
while
(1)
{
keyscan();
}
}
voidkeyscan()//判断按下的开关
{
if(key1==0)//判断是不是按下了开关1,也就是是不是模式1,从左到右的流水灯
{
delayms(100);
if(key1==0)
{
while(!
key1);
delayms(100);
oo=0xff;
P1=oo;
moshi1();
}
}
if(key2==0)//判断是不是按下了开关2,也就是是不是模式2,从右到左的流水灯
{
delayms(100);
if(key2==0)
{
while(!
key2);
delayms(100);
oo=0xff;
P1=oo;
moshi2();
}
}
if(key3==0)//判断是不是按下了开关3,也就是是不是模式3,流水灯全亮
{
delayms(100);
if(key3==0)
{
while(!
key3);
delayms(100);
oo=0xff;
P1=oo;
moshi3();
}
}
}
voidmoshi1()//模式一流水从左往右流动
{
uinti;
aa=0xfe;//P0开始工作
P0=aa;
delayms(300);
for(i=0;i<7;i++)//控制PO口的八个流水灯工作
{
aa=_crol_(aa,1);
P0=aa;
delayms(300);
}
aa=0xff;//关闭PO口的八个流水灯
P0=aa;
bb=0xf7;//P1开始工作
P1=bb;
delayms(300);
for(i=7;i<11;i++)//控制P1口的五个流水灯工作
{
bb=_crol_(bb,1);
P1=bb;
delayms(300);
}
bb=0xff;//关闭P1口的八个流水灯
P1=bb;
cc=0xfe;//P2开始工作
P2=cc;
delayms(300);
for(i=11;i<18;i++)//控制P2口的八个流水灯工作
{
cc=_crol_(cc,1);
P2=cc;
delayms(300);
}
cc=0xff;//关闭P2口的八个流水灯
P2=cc;
dd=0xfe;//P3开始工作
P3=dd;
delayms(300);
for(i=18;i<25;i++)//控制P3口的八个流水灯工作
{
dd=_crol_(dd,1);
P3=dd;
delayms(300);
}
dd=0xff;//关闭P3口的八个流水灯
P3=dd;
}
voidmoshi2()//模式二流水从右往左走动
{
uinti;
aa=0x7f;//P3开始工作
P3=aa;
delayms(300);
for(i=0;i<7;i++)//控制P3口的八个流水灯工作
{
aa=_cror_(aa,1);
P3=aa;
delayms(300);
}
aa=0xff;//关闭P3口的八个流水灯
P3=aa;
bb=0x7f;//P2开始工作
P2=bb;
delayms(300);
for(i=7;i<14;i++)//控制P2口的八个流水灯工作
{
bb=_cror_(bb,1);
P2=bb;
delayms(300);
}
bb=0xff;//关闭P2口的八个流水灯
P2=bb;
cc=0x7f;//P1开始工作
P1=cc;
delayms(300);
for(i=14;i<18;i++)//控制P1口的五个流水灯工作
{
cc=_cror_(cc,1);
P1=cc;
delayms(300);
}
cc=0xff;//关闭P1口的五个流水灯
P1=cc;
dd=0x7f;//P0开始工作
P0=dd;
delayms(300);
for(i=18;i<25;i++)//控制P0口的八个流水灯工作
{
dd=_cror_(dd,1);
P0=dd;
delayms(300);
}
dd=0xff;//关闭PO口的八个流水灯
P0=dd;
}
voidmoshi3()//模式三所有的灯都亮
{
P0=0x00;
P1=0x07;
P2=0x00;
P3=0x00;
}
voiddelayms(uintxms)//延迟函数,大约是xms毫秒
{uinti;
uintj;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 尹其畅 流水灯的操作 流水 操作
![提示](https://static.bingdoc.com/images/bang_tan.gif)