各种流水灯程序.docx
- 文档编号:5176348
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:15.16KB
各种流水灯程序.docx
《各种流水灯程序.docx》由会员分享,可在线阅读,更多相关《各种流水灯程序.docx(10页珍藏版)》请在冰豆网上搜索。
各种流水灯程序
各种流水灯程序
Lesso2.1:
第一个发光管以间隔200ms闪烁(这是最原始的程序没有用延迟子函数)。
#include<reg52.h>
sbitD1=P1^0;
inta;
voidmain()
{
while
(1)
{
D1=0;
a=25000;
while(--a);
D1=1;
a=25000;
while(--a);
}
}
Lesson2.2:
8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
#include<reg52.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uint);
uchartemp;
sbitbeep=P2^3;
voidmain()
{
temp=0xfe;
while
(1)
{
P1=temp;
beep=0;
delay(500);
P1=0xff;
beep=1;
delay(500);
temp=_crol_(temp,1);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Lesson2.3:
8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。
#include<reg52.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uint);
uchartemp;
inti,j;
sbitbeep=P2^3;
voidmain()
{
temp=0xfe;
while
(1)
{
for(i=7;i>0;i--)
{beep=0;
delay(100);
beep=1;
delay(100);
beep=0;
delay(100);
beep=1;
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
for(i=7;i>0;i--)
{
beep=0;
delay(100);
beep=1;
delay(100);
beep=0;
delay(100);
beep=1;
P1=temp;
delay(500);
temp=_cror_(temp,1);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Lesson2.4:
用8个发光管演示出8位二进制数累加过程。
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uint);
voidmain()
{
P1=0xfe;
while
(1)
{
delay(500);
P1--;
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Lesson2.5:
8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
#include<reg52.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uint);
uchartemp;
inti,j;
sbitbeep=P2^3;
voidmain()
{
while
(1)
{
temp=0xfe;
for(i=7;i>0;i--)
{
P1=temp;
delay(200);
temp=_crol_(temp,1);
}
for(i=8;i>0;i--)
{
P1=temp;
delay(200);
temp=_cror_(temp,1);
}
for(i=0;i<5;i++)
{
P1=0xff;
delay(300);
P1=0x00;
delay(300);
}
P1=0xff;
delay(300);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
Lesson2.6:
间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
(注意此程序中移位的使用,体会按位左右移与循环左右移的区别!
)
#include<reg52.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uinti,j;
uchartemp;
voidmain()
{
while
(1)
{
temp=0xfe;
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
temp=_crol_(temp,j);
P1=0xff;
delay(150);
temp=temp<<1;
}
}
}
Lesson2.7:
间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
#include<reg52.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitbeep=P2^3;
uchartemp;
inti,j=3;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidmain()
{
beep=0;
delay(300);
beep=1;
for(i=0;i<3;i++)//奇偶闪烁三遍。
{
P1=0xaa;
delay(300);
P1=~P1;
delay(300);
}
beep=0;
delay(300);
beep=1;
temp=0xfe;//单个循环三遍,带有蜂鸣器提示。
while(j--)
{
for(i=0;i<8;i++)
{
P1=temp;
temp=_crol_(temp,1);
delay(300);
}
beep=0;
delay(300);
beep=1;
for(i=0;i<8;i++)
{
temp=_cror_(temp,1);
P1=temp;
delay(300);
}
}
beep=0;
delay(300);
beep=1;
for(j=0;j<3;j++)//两边向中间后中间向两边整体三遍。
{
P1=0x7e;
delay(300);//感觉这个代码有些繁琐,有好建议改进的
P1=0xbd;//网友还请慷慨回帖,咱们一起研究进步。
delay(300);
P1=0xdb;
delay(300);
P1=0xe7;
delay(300);
P1=0xdb;
delay(300);
P1=0xbd;
delay(300);
}
P1=0x7e;
delay(300);
P1=0xff;
delay(300);
beep=0;
delay(300);
beep=1;
for(i=0;i<3;i++)//8个灯全部闪烁三次。
{
P1=0x00;
delay(300);
P1=0xff;
delay(300);
}
P1=0xff;
while
(1);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 各种 流水 程序