您的当前位置:首页正文

基于-51单片机的定时炸弹程序

2024-09-07 来源:年旅网


#include

#define uchar unsigned char

#define uint unsigned int

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit P27=P2^7;

sbit P26=P2^6;

sbit fmq=P3^6;

uchar weishu=99;

sbit K5=P1^4;

sbit K6=P1^5;

sbit jdq=P3^7;

void ZT(uchar s);

uchar m;

1 / 21

/******************************************

延时子程序

*****************************************/

void delay1ms(uint i)

{

while(i--)

{uchar j;

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

{

;

}

}

}

2 / 21

void delay500us()

{

uchar j;

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

{

;

}

}

/************************************

蜂鸣器子程序

************************************/

void beep()

{

3 / 21

fmq=0;

delay500us();

fmq=1;

delay500us();

}

/***********************************

数码管显示子程序

***********************************/

void Disp_lib(uchar x,y)

{

while(x--)

{

P27=0;

4 / 21

P0=tab[y%10];

delay1ms(5);

P27=1;

P0=0xff;

P26=0;

P0=tab[y/10];

delay1ms(5);

P26=1;

P0=0xff;

}

}

/**************************************

倒计时加速

5 / 21

**************************************/

void JIASU(uchar x, y)

{

while(x--)

{

P27=0;

P0=tab[y%10];

delay1ms(5);

P27=1;

P0=0xff;

P26=0;

P0=tab[y/10];

delay1ms(5);

6 / 21

P26=1;

P0=0xff;

}

}

/**************************************

外终端初始化

*************************************/

void ZD_Init()

{

EA=1;

EX0=1;

EX1=1;

IT0=1;

7 / 21

IT1=1;

}

/**************************************

功能函数 :主函数

**************************************/

main()

{

uchar t;

uchar k;

P27=0;

P26=0;

P0=tab[9];

ZD_Init();

8 / 21

while(1) {

if(K5==0){

delay1ms(15);

if(K5==0){

for(t=0;t<100;t++)

{

beep();

}

for(t=0;t<100;t++)

{

Disp_lib(100,weishu);

weishu--;

m=weishu;

9 / 21

for(k=0;k<100;k++)

{

beep();

}

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

P26=0;

P0=tab[0/10];

/ 21

10 delay1ms(5);

P26=1;}

for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

P26=0;

11 / 21

P0=tab[0/10];

delay1ms(5);

P26=1;}

for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

/ 21

12 P26=0;

P0=tab[0/10];

delay1ms(5);

P26=1;}

for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

jdq=0;

while(1)

{ P27=0;

P0=tab[0%10];

/ 21

13

delay1ms(5);

P27=1;

P26=0;

P0=tab[0/10];

delay1ms(5);

P26=1;}

while(!K5);

}

}

}

}

/*****************************************

中断0: 停止定时炸弹

14 / 21

****************************************/

int0() interrupt 0 using 1

{ uint t;

for(t=0;t<100;t++)

{

beep();

}

while(1){

Disp_lib(100,m);

}

}

/*****************************************

中断1:加速定时炸弹倒计时

15 / 21

*****************************************/

int1() interrupt 2

{

uchar t;

for(t=0;t<100;t++)

{

beep();

}

while(m--)

{

JIASU(3,m);

for(t=0;t<100;t++)

{

/ 21

16 beep();

}

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

P26=0;

P0=tab[0/10];

delay1ms(5);

P26=1;}

/ 21

17 for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

P26=0;

P0=tab[0/10];

delay1ms(5);

/ 21

18 P26=1;}

for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

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

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

P26=0;

P0=tab[0/10];

/ 21

19 delay1ms(5);

P26=1;}

for(t=0;t<255;t++)

{

beep();

}

delay1ms(50);

jdq=0;

while(1)

{ P27=0;

P0=tab[0%10];

delay1ms(5);

P27=1;

20 / 21

P26=0;

P0=tab[0/10];

delay1ms(5);

P26=1;}

}

21 / 21

因篇幅问题不能全部显示,请点此查看更多更全内容