单片机流水灯所有程序Word文档下载推荐.docx
《单片机流水灯所有程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机流水灯所有程序Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
![单片机流水灯所有程序Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-12/19/c9d4c5fb-4630-4e1c-a349-8679c13c7cc7/c9d4c5fb-4630-4e1c-a349-8679c13c7cc71.gif)
voidT0_time()interrupt1
TH1=(65536-45872)/256;
//装初值50ms
TL1=(65536-45872)%6;
num;
//num每加一次判断是否到了20次
辻(num二二20)//20*50ms=1000ms=ls,间隔Is
num=0;
//然后把num清0重新再计20次
ledl「ledl;
〃让发光管状态取反
用定时器使1灯间隔Is闪烁
nclude〈:
reg32・h>
#defineunitunsignedint
unitnum;
#defineuchaunsignedchar
#defineuniunsignedint
unia;
(00000001)
//?
?
uchartable[]={0xfe,Oxfc,0xf8,OxfO,OxeO,OxcO,0x80,0x00};
uchatablel[]={0x80,OxcO,OxeO,OxfO,0xf8,Oxfc,Oxfe,Oxff);
voiddelayms(unit);
while
(1)
for(num^O;
num<
8;
num)//?
Pl=table[numZ;
delayms(500);
for(a=8;
a>
0;
a―)//改成for(a=0;
a)
Pl=tablel[a]:
voiddelayms(unitxms)
uniti,j;
for(i=xms;
i>
i--)
for(j=110;
j>
j—);
没有实现理想的流水灯,问题已解决,见下面程序
uchartable[]={Oxff,Oxfe,Oxfc,0xf8,OxfO,OxeO,OxcO,0x80,0x00};
voiddelayms(unit):
while⑴
for(num=0;
num<
9;
num)
Pl=table[numJ;
for(nunF9;
num>
num--)
Pl二table[num];
delayms(500);
i--)for(j=110;
用数组实现流水灯循环,依次点亮,然后依次熄灭
//char是字符数组
//改
uchartable[]={0xfe,Oxfd,Oxfb,0xf7,Oxef,Oxdf,Oxbf,0x7f};
变数组
voiddelayms(unit);
for(num=0;
num)//for循环
Pl=table[numL;
加for语句
j~);
用数组实现流水灯
〃延迟0.5s,下一灯亮
//
nclude〈intrins・h>
#defineunitunsignedintuniti,j;
#defineucharunsignedcharuchara;
voiddelayms(unit):
a=0xfe;
11111110,第一个灯亮
Pl=a;
a=_crol_(a,1);
7654321灯
〃包含_crol_函数所在的头文件
//赋给a初值Oxfe,即
〃循环左移指令或a=a«
l;
8
〃自定义毫秒X
〃延迟Xms
用循环左移指令实现流水灯
#defineunitunsignedintuniti,j;
void
delayls
sbit
ledl
Pl
led2
1
led3
2
led4
3
ledo
4
led6
5
led7
6
led8
7
main
ledl二0;
delayls();
ledl=l;
led2二0;
delayls();
led2=l;
led3=0;
//头文件
//宏定义
//定义i;
j
〃连接1灯的是锁存器的P10端口
//循环永不停止
//I灯亮1S
〃1灯灭,二灯亮
led3=l;
led4=0;
delayls();
led4=l;
led5=0;
delayls();
led5=l;
led6=0;
led6=l;
led7=0;
led7=l;
led8=0;
led8=l;
ledl=O;
}voiddelayls()
uniti,j;
for(i=500;
i>
i--)for(j=110;
}流水灯
nclude〈reg32・h>
voiddelayls();
sbitled=Pl;
led5
{ledl=0;
#include〈:
main()
while
(1)
//I灯亮IS
led2=0;
led3=l;
led4=l;
ledo=0;
ledo=l;
led6=l;
led7=l;
led8=l;
Pl二0;
Pl二Oxff;
voiddelayls()
for(i=500;
}依次亮,全亮,全灭,循环
sb辻LED4二P「3;
sbitLED5=Pr4;
sbitdula=P2^1;
LED4=0;
LED4=1;
LED5=0;
}4闪5亮
sbitLED2二P「l;
sbitdula二P2"
6;
{dula=l;
LED2二0;
dula=0;
}二灯亮
sbitLED4二P「3;
{while
(1)
{LED4二0;
for(i=1000;
i—)for(j=U0;
LED4=l;
LED5=0;
i—)for(j=110;
dula=l;
4闪5亮
#include〈reg32・h>
voiddelays(unit);
voidmain()
ledl二1;
〃使用局部变量可节约单片机内存
i—)
sbitled二P「0;
unsignedinta;
voidmain()//主函数
a=51000;
led二0;
while(a--);
led二1;
用while函数实现延迟,延迟0.5s
#defineunitunsignedintsbitledl二P「0;
voidmain()
{ledl=0;
for(i=1000;
ledl=l;
一灯亮,延迟Is,灭。
循环