2019年5月26日 星期日

107年 8051


#include <at89x52.h>
char seg7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XFF};
char seg_data[]={0xa4,0xc0,0xf9,0x80};
char seg_data1[]={0xc0,0x82,0xc0,0x90};
char seg_data2[]={0x82,0xf8,0x80,0x90};
char left_move[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char increase[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char increase2[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
char scanline=0x80;
sbit sw1=P3^2;//left
sbit sw2=P3^3;//right

int k=0,x=0;

void delay_1ms(int x)
{
int i,j;
for(i=0;i<x;i++)
  for(j=0;j<114;j++)
       ;
}
void debouncer()
{
int i,j;
for(i=0;i<20;i++)
  for(j=0;j<114;j++)
       ;
}
void init()
{
int i;
for(i=0;i<2;i++)
{
P2=0x00;P1=0X00;P3=0x0F;P0=0X00;delay_1ms(200);
P2=0xff;P1=0XFF;P3=0xFF;P0=0XFF;delay_1ms(200);
}
P2=seg7[k];
}
main()
{
init();
   while(1)
{
if (sw1==0)
   {
debouncer();
while(sw1==0);
debouncer();
k=k+1;
if (k>9) k=0;
}
if (sw2==0)
{
debouncer();
while(sw2==0);
debouncer();
k=k-1;
if (k<0) k=9;
}
   if (k==1)
{
//P2=0x00;
P3=P3|0XF0;
P2=seg7[k];
       P1=0x00;delay_1ms(200);
P1=0xff;delay_1ms(200);
   // LED  循環不斷閃爍
  }
if (k==2)
{
     int i;
P3=P3|0XF0;
P2=seg7[k];
for(i=0;i<=7;i++)
{
P1=~left_move[i];delay_1ms(200);
}
}
//LED  單顆左移,
if (k==3)
{
      int i;
P3=P3|0XF0;
P2=seg7[k];
{
   for(i=7;i>=0;i--)
   {
   P1=~left_move[i];delay_1ms(200);
   }
}
}
//LED  單顆右移
if(k==4)
{
       int i;
P3=P3|0XF0;
P2=seg7[k];
for(i=0;i<=7;i++)
  {
  P1=~increase[i];delay_1ms(200);
  }
   //  LED  左移漸亮(逐一多顆亮)
  }
if (k==5)
{
   //LED 右移漸亮(逐一多顆亮)
       int i;
P3=P3|0XF0;
P2=seg7[k];
for(i=0;i<=7;i++)
{
P1=~increase2[i];delay_1ms(200);
}
}
if (k==6)
{
int i,j;
P2=seg7[k];
// for(j=0;j<=100;j++)
// {
//   scanline=0x80;
//   for(i=0;i<=3;i++)
//   {
// P0=0x00;//要先關掉四位數七段顯示器,否則無法正常顯示
// P3=scanline;
// P0=~seg_data[i];delay_1ms(4);
// scanline=scanline>>=1 ;
//    }
//   }
// for(j=0;j<=100;j++)
// {
//   scanline=0x80;
//   for(i=0;i<=3;i++)
//   {
// P0=0x00;//要先關掉四位數七段顯示器,否則無法正常顯示
// P3=scanline;
// P0=~seg_data1[i];delay_1ms(4);
// scanline=scanline>>=1 ;
//    }
//   }
// 四位七段出現 2018  及 0609 交替顯示。
}
if (k==0)
{
P2=seg7[k];
      P0=0xFF;P1=0xFF;
//LED、 四位、七段均需熄滅

}
if (k==7)
{
P2=seg7[10];
      P0=0xFF;P1=0xFF;
//LED、 四位、七段均需熄滅

}
if (k==8)
{
P2=seg7[10];
      P0=0xFF;P1=0xFF;
//LED、 四位、七段均需熄滅

}
if (k==9)
{
P2=seg7[10];
      P0=0xFF;P1=0xFF;
//LED、 四位、七段均需熄滅

}

 }
}




































































沒有留言:

張貼留言

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...