1. 首页 > 综合体育

奥运会倒计时 c 实现

objective-C 想做一个超简单的倒计时的定时器

奥运会倒计时 c 实现

用NSTimer

_i?=?100;

self.timer?=?[NSTimer?scheduledTimerWithTimeInterval:1?target:self?selector:@selector(handleTimer)?userInfo:nil?repeats:YES];

//?每隔1秒会触发这个方法

-?(void)handleTimer

{

if?(_i?<=?0)?{?//?当i<=0了,停止Timer

[self.timer?invalidate];

return;

}

_i--;

_timeLabel.text?=?[NSString?stringWithFormat:@"%d",?_i];?//?显示在Label上

}

基于51单片机的999倒计时C语言程序。

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

要求是能进行9999秒倒计时

用C语言实现

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

#include<at89X51.h>

#define uchar unsigned char

#define uint unsigned int

uchar num_qian,num_bai,num_shi,num_ge;//定义千位,百位,十位,个位。

uint time;//要显示的时间0~9999

uint tcnt;//计时单元

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

//以下是端口定义

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

sbit key_qian=P1^0;//按键"千加1"

sbit key_bai =P1^2;//按键"百加1"

sbit key_shi =P1^4;//按键"十加1"

sbit key_ge =P1^6;//按键"个加1"

sbit laba =P3^1;//喇叭

void delay(unsigned int z)//1毫秒延时子函数

{

unsigned int x,y;

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

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

}

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

//以下是七段数码管驱动程序

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

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

** 功能描述: 中断接受字符串驱动程序

**占用引脚 P30

**占用系统 串口中断;中断向量4

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

#define DUAN P0

#define WEI P2

unsigned char code dispcode[]=

{

0x3F,/*0*/

0x06,/*1*/

0x5B,/*2*/

0x4F,/*3*/

0x66,/*4*/

0x6D,/*5*/

0x7D,/*6*/

0x07,/*7*/

0x7F,/*8*/

0x6F,/*9*/

}; //共阴段码表

//0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,NULL,-

uchar code dispbitcode[]=

{0xef,0xdf,0xbf,0x7f}; //共阴位码表

uchar dispbuf[4],dispcount;//开辟四个显示缓冲区

void ledinit()/***初始化子函数,定时器0刷新显示内容***/

{

TMOD|=0x01; // 定时器0方式1

TH0=(65536-5000)/256; //定时器16位模式

TL0=(65536-5000)%256; //溢出时间:5ms

TR0=1; //开启定时器0

ET0=1; //使能定时器0

EA=1; //系统使能

}

void leddisp()//固定显示某些数字

{

dispbuf[0]=time/1000;

dispbuf[1]=time%1000/100;

dispbuf[2]=time%100/10;

dispbuf[3]=time%10;

}

void keytest()//按键检测程序

{

if(!key_qian)//如果千位按键

{

delay(5);//5毫秒延时去抖

if(!key_qian)//如果千位按键的确按下了

{

num_qian++;//千位数字加一

while(!key_qian);//等待按键松开

}

time+=num_qian*1000;//千位数字加1

}

if(!key_bai)//如果百位按键

{

delay(5);//5毫秒延时去抖

if(!key_bai)//如果百位按键的确按下了

{

num_bai++;//百位数字加一

while(!key_bai);//等待按键松开

}

time+=num_bai*100;//百位数字加1

}

if(!key_shi)//如果十位按键

{

delay(5);//5毫秒延时去抖

if(!key_shi)//如果十位按键的确按下了

{

num_shi++;//千位数字加一

while(!key_shi);//等待按键松开

}

time+=num_shi*10;//十位数字加1

}

if(!key_ge)//如果千位按键

{

delay(5);//5毫秒延时去抖

if(!key_ge)//如果个位按键的确按下了

{

num_qian++;//千位数字加一

while(!key_ge);//等待按键松开

}

time+=num_ge;//个位数字加1

}

}

void main()//主程序

{

ledinit();//数码管中断初始化,定时器0刷新显示内容

while(1)//大循环

{

if((!key_qian)||(!key_bai)||(!key_shi)||(!key_ge))//如果四个按键中的任何一个被按下

keytest();//执行按键检测程序

leddisp();//不断的刷新显示内容

}

}

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

//以下是定时器0刷新数码管显示内容驱动程序

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

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

** 功能描述: 七段数码管驱动程序

**占用引脚: 数码管段选,数码管位选

**占用系统T0

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

void t0(void) interrupt 1 //using 0

{

TH0=(65536-5000)/256; //5ms中断

TL0=(65536-5000)%256; //16位定时器模式

WEI=0xff;//关位选

DUAN=dispcode[dispbuf[dispcount]]; //段选

WEI=dispbitcode[dispcount]; //开位选

dispcount++;

if(dispcount==5)

dispcount=0;

tcnt++; //计数个数加一

if(tcnt==5*200)//满足1S了

{

tcnt=0;//计数个数归零

time--;//时间减一

if(time==0)//时间

while(1);

}

if(time<10)//时间小于10

laba=~laba;//声音报警

}

这是9999秒倒计时的

51单片机的程序(c语言版),用数码管进行倒计时。

你是不是用2了锁存器啊。

P2=led_table[ten];

led_ten=1;//打开锁存器

led_ten=0;//关闭锁存期

存储10位

P2=led_table[single];

led_single=1;//打开锁存器

led_single=0;//关闭锁存器

存储个位

另外led_ten,led_single 你要先定义一下吧

求C语言倒计时1小时自动退出的代码

#include<stdio.h>

#include<windows.h>

int main()

{

int i=0;

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

{

system("cls");

sleep(1000);

printf("%d:%d",i/60,i%60);

}

}

这样也可以哈。不客气?

我想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一个按键

你这数码管的1、2口就这么悬着或者接dp一起了真的没问题吗……

全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。

然后一个全局变量代表秒

编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第三种状态则没反应(或者要重置什么随你)

然后定时器,一直开着就好,比如定10ms,每10ms就给一个全局变量的值+1

这个变量到了100的时候就说明一秒过了,重设值,全局变量的秒减一。如果到0了,就恢复60,然后给分钟的个位减一。如果个位不够减,就把十位减一然后个位设9。如果十位和不够减,就是时间到了,flag设置为第三种状态

主函数在初始化各种状态之后不断循环给数码管显示数字,就ok了。

声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。