2011.1.21(單片機數碼管學習自己寫的程序)

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

void delay(uint);
void ring_up();
void ring_down();
uchar light(uchar);
void stream(uchar);

void light_1();
void light_2();
void light_3();
void light_4();
void light_5();
void light_6();
void light_7();
void light_8();

sbit P1_1=P1^0;
sbit P1_2=P1^1;
sbit P1_3=P1^2;
sbit P1_4=P1^3;
sbit P1_5=P1^4;
sbit P1_6=P1^5;
sbit P1_7=P1^6;
sbit P1_8=P1^7;
sbit BEEP=P2^3;

uchar temp=0xfe;
uchar tp1=0xfe;
uchar tp2=0xfc;
uchar tp3=0xf8;
uchar tp4=0xf0;
uchar tp5=0xe0;
uchar tp6=0xc0;
uchar tp7=0x80;
uchar tp8=0x00;

void main()
{
//<1>第一個燈管以間隔200ms閃爍
/*
while(1)
{
   P1_1=0;
   delay(2);  //200ms;
   P1_1=1;
   delay(2);
}
*/
//<2>由上至下間隔1s流動,其中每個管亮500ms,滅500ms,亮時蜂鳴器發聲。
/*
while(1)
{
   P1=temp;
   delay(5);
   ring_up();
   temp=_crol_(temp,1);//犯了一個C語法錯誤,如果沒有temp=的話temp值是不會改變的,led1將一直亮
   ring_down();
}
*/
//<3>8個發光管來回流動,併發出滴滴聲.
/*
while(1)
{
   int n1,n2;
  
     for(n1=0;n1<7;n1++)
     { 
        P1=temp;
        delay(1);
        ring_up();
        temp=_crol_(temp,1);
        ring_down();
     }
     for(n2=0;n2<7;n2++)
     {
        P1=temp;
        delay(1);
        ring_up();
        temp=_cror_(temp,1);
        ring_down();
     }
}
*/
//<4>8個發光管演示8位二進制數累加過程

while(1)
{
P1=0xff;
P1_1=0;
delay(5);    //1
P1_1=1;
delay(5);

P1_1=0;
delay(5);    //1+1
P1_1=1;
delay(5);

P1_2=0;
delay(5);
P1_2=1;      //2
delay(5);

P1_2=0;
delay(5);
P1_2=1;       //2
delay(5);

P1_1=0;
delay(5);
P1_1=1;       //2+1
delay(5);

P1=0xfc;
delay(5);
P1=0xff;     //3
delay(5);

P1=0xfc;
delay(5);       //3
P1=0xff;
delay(5);

P1_1=0;
delay(5);       //3+1
P1_1=1;
delay(5);

P1=0xfb;
delay(5);
P1=0xff;         //4
delay(5);


P1=0xfb;
delay(5);         //4
P1=0xff;        
delay(5);

P1_1=0;
delay(5);       //4+1
P1_1=1;
delay(5);

P1=0xfa;
delay(5);
P1=0xff;           //5
delay(5);

P1=0xfa;
delay(5);
P1=0xff;           //5
delay(5);

P1_1=0;
delay(5);       //5+1
P1_1=1;
delay(5);

P1=0xf9;
delay(5);
P1=0xff;     //6
delay(5);   


P1=0xf9;
delay(5);
P1=0xff;     //6
delay(5);

P1_1=0;
delay(5);       //6+1
P1_1=1;
delay(5);

P1=0xf8;
delay(5);
P1=0xff;     //7
delay(5);

P1=0xf8;
delay(5);
P1=0xff;     //7
delay(5);

P1_1=0;
delay(5);       //7+1
P1_1=1;
delay(5);

P1=0xf7;
delay(5);
P1=0xff;    //8
delay(5);

P1=0xf7;
delay(5);
P1=0xff;    //8
delay(5);

P1_1=0;
delay(5);       //8+1
P1_1=1;
delay(5);

P1=0xf6;
delay(5);
P1=0xff;     //9
delay(5);

P1=0xf6;
delay(5);
P1=0xff;     //9
delay(5);

P1_1=0;
delay(5);       //9+1
P1_1=1;
delay(5);

P1=0xf5;
delay(5);
P1=0xff;     //10
delay(5);

P1=0xf5;
delay(5);
P1=0xff;     //10
delay(5);

P1_1=0;
delay(5);       //10+1
P1_1=1;
delay(5);

P1=0xf4;
delay(5);
P1=0xff;     //11
delay(5);

P1=0xf4;
delay(5);
P1=0xff;     //11
delay(5);

P1_1=0;
delay(5);       //11+1
P1_1=1;
delay(5);

P1=0xf3;
delay(5);
P1=0xff;     //12
delay(5);

P1=0xf3;
delay(5);
P1=0xff;     //12
delay(5);

P1_1=0;
delay(5);       //12+1
P1_1=1;
delay(5);

P1=0xf2;
delay(5);
P1=0xff;     //13
delay(5);

P1=0xf2;
delay(5);
P1=0xff;     //13
delay(5);

P1_1=0;
delay(5);       //13+1
P1_1=1;
delay(5);

P1=0xf1;
delay(5);
P1=0xff;     //14
delay(5);

P1=0xf1;
delay(5);
P1=0xff;     //14
delay(5);

P1_1=0;
delay(5);       //14+1
P1_1=1;
delay(5);

P1=0xf0;
delay(5);
P1=0xff;     //15
delay(5);

P1=0xf0;
delay(5);
P1=0xff;     //15
delay(5);

 


}

//<5>8個發光管間隔200ms由上至下,再由下至上,再重複一次,然後全部熄滅再以300ms間隔全部閃爍5次,重複次過程
/*
while(1)
{
  int n,i,j,k;
  
  for(n=0;n<2;n++)
  {
     for(i=0;i<7;i++)
     {
       P1=temp;
       delay(2);
       temp=_crol_(temp,1);
     }
   
     for(j=0;j<7;j++)
     {
       P1=temp;
       delay(2);
       temp=_cror_(temp,1);
     }

  }

  P1=0xff;
 
  for(k=0;k<5;k++)
  {
      P1=0x00;
      delay(3);
      P1=0xff;
      delay(3);
  } 
 



*/

//<6>間隔300ms第一次一個管流動一次,第二次兩個管流動,第三次...依次到8個管亮,然後重複
/*
while(1)
{
light_1();
light_2();
light_3();
light_4();
light_5();
light_6();
light_7();
light_8();

}
*/
//<7>間隔300ms先奇數亮再偶數亮,循環3次,一個燈上下循環3次,兩個分別從兩邊往中間
//流動3次,再從中間往兩邊流動3次,8個全部閃爍3次,關閉發光管,程序停止
/*
uchar n1=3,n2=3,n3=8,n4=3,n5=3,n6=3;
while(n1--)
{
P1=0x55;
delay(5);
P1=0xAA;
delay(5);
}


while(n2--)
{
temp=0xfe;
while(n3--)
{
P1=temp;
delay(5);
temp=_crol_(temp,1);
}
n3=8;
}


while(n4--)
{
P1=0x81;
delay(5);
P1=0x42;
delay(5);
P1=0x24;
delay(5);
P1=0x18;
delay(5);
P1=0x3c;
delay(5);
P1=0x7e;
delay(5);
P1=0xff;
delay(5);

}

while(n5--)
{
P1=0x18;
delay(5);
P1=0x24;
delay(5);
P1=0x42;
delay(5);
P1=0x81;
delay(5);
P1=0xc3;
delay(5);
P1=0xe7;
delay(5);
P1=0xff;
delay(5);

}

while(n6--)
{
P1=0x00;
delay(5);
P1=0xff;
delay(5);

}

P1=0xff;
delay(10000);

*/
}


void delay(uint N)    //  100ms*N
{
  unsigned int i;
  unsigned int j;
  for(i=N;i>0;i--)
    for(j=11512;j>0;j--);
}
/*
void ring_up()
{
BEEP=0;
}
void ring_down()
{
BEEP=1;
}
*/
/*
uchar light(uchar n)
{
 return _crol_(temp,n-1);

}

void stream(uchar n)
{
    int i;
    temp=light(n);
    for(i=0;i<7-n;n++)
    {
       P1=temp;
       delay(3);
       temp=_crol_(temp,1);
    }

}
*/

/*
void light_1()
{
 int n;
 tp1=0xfe;
 for(n=0;n<8;n++)
 {
  P1=tp1;
  delay(3);
  tp1=_crol_(tp1,1);
 }
}
void light_2()
{
 int n;
 tp2=0xfc;
 for(n=0;n<7;n++)
 {
  P1=tp2;
  delay(3);
  tp2=_crol_(tp2,1);
 }
}
void light_3()
{
 int n;
 tp3=0xf8;
 for(n=0;n<6;n++)
 {
  P1=tp3;
  delay(3);
  tp3=_crol_(tp3,1);
 }
}
void light_4()
{
 int n;
 tp4=0xf0;
for(n=0;n<5;n++)
 {
  P1=tp4;
  delay(3);
  tp4=_crol_(tp4,1);
 }
}
void light_5()
{
 int n;

 tp5=0xe0;;
 for(n=0;n<4;n++)
 {
  P1=tp5;
  delay(3);
  tp5=_crol_(tp5,1);
 }
}
void light_6()
{
 int n;
 tp6=0xc0;
for(n=0;n<3;n++)
 {
  P1=tp6;
  delay(3);
  tp6=_crol_(tp6,1);
 }
}
void light_7()
{
 int n;
 tp7=0x80;
 for(n=0;n<2;n++)
 {
  P1=tp7;
  delay(3);
  tp7=_crol_(tp7,1);
 }
}
void light_8()
{
 int n;
 tp8=0x00;
for(n=0;n<1;n++)
 {
  P1=tp8;
  delay(3);
  tp8=_crol_(tp8,1);
 }

}
*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章