#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、 四位、七段均需熄滅
}
}
}
沒有留言:
張貼留言