单片机12分钟倒计时

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

比赛时间还原、暂停、倒计时设置

按键1用来还原比赛的时间。本设计设定的每节比赛的时间为12分钟。当按下1键时,每节比赛剩余时间还原为“12:00”,并显示在数码管上。时间还原后比赛就可以开始了,如果裁判吹响开始的哨声,则应立即按下2键使倒计时开始。如果出现死球情况,就要按下3键,使倒计时停止。暂停时间到时,再按下2键继续倒计时,直至结束。

key1 key2 key3

程序:

#include

#define uint unsigned int

void delay(uint);

unsigned char DUANZHI[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义0~9指针

unsigned char dpsbf[]={0,0,0,0};

unsigned char A[]={0xfe,0xfd,0xfb,0xf7};

sbit key1=P3^0;

sbit key2=P3^1;

sbit key3=P3^2;

unsigned char num,msecond=1,mminute=1; unsigned char i,key1_1=0,key2_1=0,key3_1=0; void display();

void Time0_Init() //中断初始化

{

TMOD=0X01;

IE=0X82;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

}

void main() //主函数

{

num=0;

Time0_Init();

for(;;)

{

if(key1==0)

{

msecond=1;

mminute=13;

key3_1=0;

}

if(key2==0)key3_1=1;

if(key3==0)key3_1=0;

display();

}

}

void delay(uint x) //延迟

{

uint i,j;

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

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

}

void T0_time()interrupt 1 // 中断

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

if(key3_1==1)

num++;

}

void display() //显示{

if(key3_1==1)

{

if(num>=20)

{

num=0;

msecond--;

if(msecond<=0)

{

msecond=60;mminute--;

if(mminute<=0)

{

msecond=1;

mminute=1;

key3_1=0;

}

}

}

}

dpsbf[3]=(msecond-1)%10;

dpsbf[2]=(msecond-1)/10;

dpsbf[1]=(mminute-1)%10;

dpsbf[0]=(mminute-1)/10;

for(i=0;i<=3;i++)

{

P1=A[i];

P0=DUANZHI[dpsbf[i]];

delay(3);

}

}

相关文档
最新文档