单片机控制LED流水灯从中间向两边修订稿

  • 格式:docx
  • 大小:57.46 KB
  • 文档页数:4
#include< >
#include< >
#define uint unsigned int
#define uchar unsigned char
void delay();
void main()
{ uchar temp,temp1,temp2,a,b;
P3=0xff;
while(1)
{ for(b=3;b>0;b--)
for(b=600;b>0;b--);
}
程序实现的第2种方法:下面是单片机12群里的朋友木信大侠提出的,实现单片机led流水灯从中间向两边,从两边向中间的效果,下面的程序就是实现思路,这个是直接调用,应该明白吧,数组那其实也可以改一下,如采用一维数组,在多次调用;也可以采用二维数组。主要看个人喜好.
uchar code tablew[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};如果要显示,也会因为++而在第二轮中显示出*tabled[numd];//附段显P0值对应段显值对码表
duan=0; //锁存
wei=1; //开启位显端
-----------------------------------------------------
#include< >
unsigned char code TABLE[]={
0xFF,0xE7,0xC3,0x81,0x00,果要显示1~8数值,最好多加前后两位数0跟9,
因为后面++移位时就能按我们常规顺序亮下去,至于如何显示对应数值请先看数码显示电路图*/
duan=0; //锁存,保持上一步段显状态,硬件说明请查阅74HC573功能
wei=1; //开启位显端口
P0=0xfe; //附值位显位置,01111111,左边第一位,为0的显示
wei=0; //锁存,保持上一步位显状态,硬件说明请查阅74HC573功能
}
*/
}
}
}
void timer0() interrupt 1 /*第四步骤,中断时间函数这个相当于移位数显的速度,速度够快,人眼就会有余辉效应,
}
}
temp1=0xfe;
temp2=0x7f;
for(a=8;a>0;a--)
{
temp=temp1&temp2;
P1=temp;
delay();
temp1=_crol_(temp1,1);
temp2=_cror_(temp2,1);
}
}
}
void delay()
{ uint a,b;
for(a=100;a>0;a--)
#include""
#include""
sbit duan=P2^6; //段显端口
sbit wei=P2^7; //位显端口
void main()
{
//P0=0xff;数码管不显示任何信号,默认情况下通电本身就不显示,可以不写
duan=1; //开启段显端口
P0=0x06; //附值段显数值为1,可以查阅数码管电路图相对应显示的对码表
P0=tablew[numw];//附位显P0值对应位显值对码表
wei=0; //锁存
numw++; //相当于位显移位
if(numw==8) //如果位显值到对应位显对码表第八位则转下执行
numw=0; //重新附值位显值对应对码表第0位起
/*
下面是简单的单个数码管显示例证第一骤,修改后在第三步骤内
单片机控制LED流水灯从中间向两边
单片机控制LED流水灯从中间向两边,从两边向中间
这个就是把先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;不过这个程序实现的应该是这样的先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动;再从中间往两边流动;
{ temp=0xaa;
P1=temp;
delay();
temp=0x55;
P1=temp;
delay();
}
for(a=3;a>0;a--)
{ temp=0xfe;
for(b=7;b>0;b--)
{ P1=temp;
temp=_crol_(temp,1);
delay();
P1=temp;
delay();
感觉8位数显一直在亮着,相当于正在播放的电影胶卷*/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}