|
心形灯,四五种效果仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
#include <REG52.H> //包含51头文件
#include <intrins.h> //使用左移右移头文件
#define uint unsigned int
#define uchar unsigned char //宏定义
void delay_ms(uint x) //毫秒级延时函数
{
uint y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uchar i,aa;
uint k;
while(1)
{
//-------------顺时针流动2次------------//
for(k=0;k<2;k++)
{
aa=0xFE;
for(i=0;i<8;i++)
{
P0=aa;
aa=_crol_(aa,1); //crol是左移
delay_ms(100);
}
P0=0xFF;
aa=0xFE;
for(i=0;i<8;i++)
{
P2=aa;
aa=_crol_(aa,1);
delay_ms(100);
}
P2=0xFF;
aa=0xFE;
for(i=0;i<8;i++)
{
P3=aa;
aa=_crol_(aa,1);
delay_ms(100);
}
P3=0xFF;
aa=0xFE;
for(i=0;i<8;i++)
{
P1=aa;
aa=_crol_(aa,1);
delay_ms(100);
}
aa=P1=0xFF;
}
P0=~0x00;
P1=~0x00;
P2=~0x00;
P3=~0x00; //与P3=0xFF;相同
delay_ms(500);
//----------------逆时针流动2次--------------//
for(k=0;k<2;k++)
{
for(i=0;i<8;i++)
{
P1=~(0x80>>i);
delay_ms(100);
}
P1=0xFF;
for(i=0;i<8;i++)
{
P3=~(0x80>>i);
delay_ms(100);
}
P3=0xFF;
for(i=0;i<8;i++)
{
P2=~(0x80>>i);
delay_ms(100);
}
P2=0xFF;
for(i=0;i<8;i++)
{
P0=~(0x80>>i);
delay_ms(100);
}
P0=0xFF;
}
P0=~0x00;
P1=~0x00;
P2=~0x00;
P3=~0x00;
delay_ms(500);
//---------------------上到下画爱心--------------//
for(k=0;k<2;k++)
{
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
P1=~(0x80>>i);
delay_ms(100);
}
P1=0xFF;
P0=0xFF;
for(i=0;i<8;i++)
{
P2=~(0x01<<i);
P3=~(0x80>>i);
delay_ms(100);
}
P3=0xFF;
P2=0xFF;
}
P0=~0x00;
P1=~0x00;
P2=~0x00;
P3=~0x00;
delay_ms(500);
//----------------下到上画爱心---------------//
for(k=0;k<2;k++)
{
for(i=0;i<8;i++)
{
P3=~(0x01<<i);
P2=~(0x80>>i);
delay_ms(100);
}
P2=0xFF;
P3=0xFF;
for(i=0;i<8;i++)
{
P1=~(0x01<<i);
P0=~(0x80>>i);
delay_ms(100);
}
P1=0xFF;
P0=0xFF;
}
P0=~0x00;
P1=~0x00;
P2=~0x00;
P3=~0x00;
delay_ms(500);
//-----------------循环5次闪烁---------------//
for(k=0;k<5;k++)
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
delay_ms(500);
P0=~0x00;
P1=~0x00;
P2=~0x00;
P3=~0x00; //与P3=0xFF一样
delay_ms(500);
}
}
}
|
-
-
心形灯.zip
77.89 KB, 下载次数: 45, 下载积分: 黑币 -5
|