单片机12分钟倒计时

发布时间:2013-04-16 10:35:28   来源:文档文库   
字号:

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

按键1用来还原比赛的时间。本设计设定的每节比赛的时间为12分钟。当按下1时,每节比赛剩余时间还原为1200,并显示在数码管上。时间还原后比赛就可以开始了,如果裁判吹响开始的哨声,则应立即按下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);

}

}

本文来源:https://www.2haoxitong.net/k/doc/c776246f9b6648d7c1c746b4.html

《单片机12分钟倒计时.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式