标题:
基于51单片机的八位花样流水灯程序及原理图
[打印本页]
作者:
清雨1996
时间:
2019-10-18 16:08
标题:
基于51单片机的八位花样流水灯程序及原理图
通过外中断,两个按键可实现流水灯加速减速控制,从左到右,从右到左,从中间到两端,从两端到中间等。大家可以参考下
仿真图.png
(185.79 KB, 下载次数: 55)
下载附件
2019-10-18 16:07 上传
单片机源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar j,k;
void delay(int ms)
{ uchar i;
while(ms--)
for(i=0;i<123;i++);
}
uchar codetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
0xff,0xe7,0xc3,0x81,0x00,0x7e,0x3c,0x18,
0x00,};
void EXINTinit()
{
EA=1;EX0=1;EX1=1;IT0=1;IT1=1;
}
void main()
{
EXINTinit(); P0=0xfe;
while(1)
{
switch(k)
{
case 0:
{
for(j=0;j<16;j++)
{
if(k!=0) break;
P0=tab[j];
delay(300);
}
for(j=0;j<16;j++)
{
if(k!=0)
break;
P0=tab[j+16];
delay(300);
}
for(j=0;j<9;j++)
{
if(k!=0)
break;
P0=tab[j+32];
delay(300);
}
for(j=0;j<16;j++)
{
if(k!=0)
break;
P0=0x00;
delay(300);
}
for(j=8;j>0;j--)
{
if(k!=0)
break;
P0=0x55;
delay(300);
P0=0xaa;
delay(300);
}
}break;
case 1:
{
for(j=0;j<16;j++)
{
if(k!=1)
break;
P0=tab[j];
delay(100);
}
for(j=0;j<16;j++)
{
if(k!=1)
break;
P0=tab[j+16];
delay(100);
}
for(j=0;j<9;j++)
{
if(k!=1)
break;
P0=tab[j+32];
delay(100);
}
for(j=0;j<16;j++)
{
if(k!=1)
break;
P0=0x00;
delay(100);
}
for(j=8;j>0;j--)
{
if(k!=1)
break;
P0=0x55;
delay(300);
P0=0xaa;
delay(100);
}
};break;
case 2:
{
for(j=0;j<16;j++)
{
if(k!=2)
break;
P0=tab[j];
delay(600);
}
for(j=0;j<16;j++)
{
if(k!=2)
break;
P0=tab[j+16];
delay(600);
}
for(j=0;j<9;j++)
{
if(k!=2)
break;
P0=tab[j+32];
delay(600);
}
for(j=0;j<16;j++)
{
if(k!=2)
break;
P0=0x00;
delay(600);
}
for(j=8;j>0;j--)
{
if(k!=2)
break;
P0=0x55;
delay(600);
P0=0xaa;
delay(600);
}
};break;
default: break;
}
}
}
voidEX0INT() interrupt 0
{
k=1;
}
voidEX1INT() interrupt 2
{ k=2;
}
复制代码
作者:
fhivdunduj
时间:
2019-12-28 01:13
应该是52单片机吧?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1