您的位置:首页 > 其它

单片机控制流水灯 数码管显示时间 蜂鸣器报警

2011-10-10 17:30 549 查看
#include<AT89x52.h>

unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xb0};

sbit L1=P2^7;

sbit clk=P2^0;

sbit AB=P2^1;

sbit SA=P2^2;//数码管一的com端

sbit SB=P2^3;//数码管二的com端

sbit SC=P2^4;

sbit SD=P2^5;

void delay2(void)

{

unsigned char i,j,k;

for(i=10;i>0;i--)

for(j=10;j>0;j--)

for(k=20;k>0;k--);

}

void delay(void)

{

unsigned char i,j,k;

for(i=21;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

void setTable(char num)

{

unsigned char c;

for(c=0;c<8;c++)

{

clk=0;

AB=num&0x01;

num=num>>1;

clk=1;

}

}

void Light(void)

{

unsigned char a,b,c,j,x,y,z,aa;

for(c=0;c<10;c++)

{

for(b=0;b<10;b++)

{

for(z=0;z<10;z++)

{

for(j=0;j<10;j++)

{

for(a=0;a<90;a++)

{ //千位上的数码管显示数字

setTable(table[c]);

SA=0;

SB=1;

SC=1;

SD=1;

delay2();

//百位上的数码管显示数字

setTable(table[b]);

SB=0;

SC=1;

SD=1;

SA=1;

delay2();

//十位上的数码管显示数字

setTable(table[z]);

SC=0;

SD=1;

SB=1;

SA=1;

delay2();

//个位上的数码管显示数字

setTable(table[j]);

SD=0;

SC=1;

SB=1;

SA=1;

delay2();

}

}

}

}

}

}

void main(void)

{

while(1)

{

Light();

/* x=0xfe;

L1=0;//报警器开始响

delay();

L1=1;

delay();

for(y=0;y<4;y++)//实现一行流水灯逐个闪亮

{

P1=x;

delay();

x=x*4;//左移两位

x=x|0x03;

}

delay();

L1=1;

delay();

for(y=0;y<4;y++)//实现后三排两两依次变量

{

P1=x;

delay();

x=x/4;//右移两位

x=x|0x03;

}

L1=0;

delay();

L1=1;

delay();

for(y=0;y<4;y++)//实现后三排两两依次熄灭

{

P1=x;

delay();

x=x*4;//右移两位

x=x|0x03;

}

L1=0;

delay();

L1=1;

delay();

for(y=0;y<4;y++)//实现前三排两两依次变亮

{

P1=x;

delay();

x=x*4;

x=x|0xc0;

}

L1=0;

delay();

L1=1;

delay();

for(y=0;y<4;y++)//实现前三排两两依次熄灭

{

P1=x;

delay();

x=x/4;

x=x|0xc0;

}

L1=0;

delay();

L1=1;

delay();

x=0x7f;

for(y=0;y<4;y++)

{

P1=x;

delay();

x=x/4;

x=x|0xc0;

}*/

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: