- //d代码1 只亮了一半不知道为什么
- #include "reg52.h"
- sbit le1=P3^7;
- sbit le2=P3^6;int i;
- code char a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- code char b[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
- void delay()
- {
- int c,d;
- for(c=0;c<60;c++)
- for(d=0;d<70;d++);
- }
- int main(void)
- {
- while(1)
- {
- P0=0xff;
- P2=0xff;
- for(i=0;i<8;i++)
- {
- P1=0X00;
- le2=1;le2=0;
- P1=a[i];
- le1=1;
- le1=0;
- delay();
- if(i==7)
- {
- P1=0x00;
- le1=1;le1=0;
- }
- }
- for(i=0;i<8;i++)
- {
- le1=0;
- P1=a[i];
- le2=1;
- le2=0;
- delay();
- if(i==7)
- {
- P1=0x00;
- le2=1;le2=0;
- }
- }
- for(i=0;i<8;i++)
- {
- le1=0;
- P1=b[i];
- le2=1;
- le2=0;
- delay();
- if(i==7)
- {
- P1=0x00;
- le2=1;le2=0;
- }
- }
- for(i=0;i<8;i++)
- {
- P1=0X00;
- le2=1;le2=0;
- P1=b[i];
- le1=1;
- le1=0;
- delay();
- if(i==7)
- {
- P1=0x00;
- le1=1;le1=0;
- }
- }
- }
- }
复制代码
这是代码2可以实现正常螺旋环绕效果(由此我判断的硬件没有问题)
#include "reg52.h"
sbit le1=P3^6;
sbit le2=P3^7;
#define uint unsigned int
void delay(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<t;j++);
}
char code a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void main()
{
uint c;
while(1)
{
le1=1;
P1=0xff;
le1=0; //层全高电平,然后只需要控制列的低电平,就可以有旋转效果 层连接在P1 列连着P0 P2
for(c=0;c<8;c++)
{
P0=a[c];
P2=a[c];
delay(75);
}
for(c=0;c<8;c++)
{
P0=a[c];
P2=a[c];
delay(75);
}
}
}
|