用定时器做的流水灯
时间:10-02
整理:3721RD
点击:
在51单片机开发板上,用定时器做了一个流水灯程序,调整非常灵活,很实用拿出来和朋友们一起分享#include<reg52.h>
unsigned char sz[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xbf,0xdf,0xef,0xf7,
0xfb,0xfd,
};
void main()
{
unsigned char cnt = 0; //声明定时器并赋值
unsigned char sec = 0; //声明计数器并赋值
TMOD = 0x01; //设置定时器模式为1
TH0 = 0xb8; //高位定时器并赋初值
TL0 = 0x00; //低位定时器并赋初值
TR0 = 1; //打开定时器
while (1)
{
if (TF0 == 1)
{
TF0 = 0; //定时器溢出后清零并赋初值
TH0 = 0xb8;
TL0 = 0x00;
cnt++;
if (cnt>=5) //改变数值可改变流水灯流动速度
{
cnt = 0;
P1 = sz[sec];
sec++;
if (sec>=14) //数组里有多少个元素就写多少数
{
sec = 0;
}
}
}
}
}
这是一个左右循环的程序,如果想要其他花样只需改变数组里元素排列顺序即可,很好玩的,也很简单。
unsigned char sz[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f,
0xbf,0xdf,0xef,0xf7,
0xfb,0xfd,
};
void main()
{
unsigned char cnt = 0; //声明定时器并赋值
unsigned char sec = 0; //声明计数器并赋值
TMOD = 0x01; //设置定时器模式为1
TH0 = 0xb8; //高位定时器并赋初值
TL0 = 0x00; //低位定时器并赋初值
TR0 = 1; //打开定时器
while (1)
{
if (TF0 == 1)
{
TF0 = 0; //定时器溢出后清零并赋初值
TH0 = 0xb8;
TL0 = 0x00;
cnt++;
if (cnt>=5) //改变数值可改变流水灯流动速度
{
cnt = 0;
P1 = sz[sec];
sec++;
if (sec>=14) //数组里有多少个元素就写多少数
{
sec = 0;
}
}
}
}
}
这是一个左右循环的程序,如果想要其他花样只需改变数组里元素排列顺序即可,很好玩的,也很简单。
谢谢分享
学单片机时 点完二极管就做流水灯了