51单片机数码管0832烟雾报警器的编程程序

51单片机数码管0832烟雾报警器的编程程序
2025-04-09 09:16:38
推荐回答(1个)
回答1:

#include

#include

sbit ST=P3^2;
sbit OE=P3^0;
sbit EOC=P3^1;
unsigned char aa,bb,cc;
unsigned char ge,shi,dge,dshi;
unsigned adata[]={5,10,15,20,25,30,35,40,50,60,75,80,85,90,95,99,70};

void delay30ms()
{
unsigned char a,b;

for(a=10;a>0;a--)
for(b=50;b>0;b--);
}
delay1ms()
{
unsigned int a,b;
for(a=50;a>0;a--)
for(b=50;b>0;b--);
}
unsigned char code tab1[]=
{
0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};

void disly()
{

P2_2=0;
P2_3=1;

P2_4=1;
P2_5=1;

P0=tab1[ge];
delay1ms();

P2_2=1;
P2_3=0;

P2_4=1;
P2_5=1;
P0=tab1[shi];
delay1ms();

P2_2=1;
P2_3=1;

P2_4=0;
P2_5=1;

P0=tab1[dge];
delay1ms();

P2_2=1;
P2_3=1;

P2_4=1;
P2_5=0;
P0=tab1[dshi];
delay1ms();

}
void zhuan()
{
ge=aa%10;
shi=aa/10;
dge=bb%10;
dshi=bb/10;

}

void get1 ()
{

ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
cc=P1;
OE=0;

}

void main()
{
bb=50;

P0=0xff;

while(1)
{
get1() ;
aa=cc/2.56;
zhuan();
disly();

if(aa>=bb){ P2_0=~P2_0;
P2_1=1;}
else { P2_0=0;
P2_1=0;

}
if(P3_4==0) {delay1ms();
bb++;
}
if(P3_5==0) {delay1ms();
bb-- ;
}

}

}