计时器分秒计时,时分秒

<h1 id="answer-times"></h1>
var time = 0;
setInterval(function () {
    var minute = ~~(time / 60), second = time % 60;
    var getlabel = function (i) { return i < 10 ? '0' + i : i; }
    $('#answer-times').html(getlabel(minute) + ':' + getlabel(second));
    time += 1;
}, 1000);

计时器。秒钟走到60.分钟加1.这里使用了一个全局变量time来做秒钟累加的时间,

分钟是秒钟累加除以60的商。比如120秒就是120/60=2  125秒是125/60=2.

秒钟是累加的时间除以10的余数。比如67秒显示的应该是67%60=7  85是85%60=25

getlabel函数是一个位数如果是个位数(小于10)的要在前面补0.

 

注意setInterva里面不能使用this了。你可以把this转为that再用

如果是时分秒的计时,只需要加上一个小时的变量就可以了,小时是分钟除以60.

   var time =0;
        setInterval(function () {
            var minute = ~~(time / 60), second = time % 60;
            var hour= ~~(minute/60);
            var getlabel = function (i) { return i < 10 ? '0' + i : i; }
            $('#answer-times').html(getlabel(hour)+':'+getlabel(minute) + ':' + getlabel(second));
//            console.log(this.time2)
            time += 1;
          }, 1000);

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现51单片机计时器,数码管显示时分秒,可以采用定时器中断的方式。具体实现步骤如下: 1. 配置定时器,使其以一定的频率产生中断,例如1秒钟产生一次中断。 2. 在中断函数中,将计数器值加1,并将计数器值转换为时分秒格式。 3. 将时分秒值通过数码管显示出来。 以下是一个简单的代码示例: ```c #include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = { // 数码管显示表 0x3f, // 0 0x06, // 1 0x5b, // 2 0x4f, // 3 0x66, // 4 0x6d, // 5 0x7d, // 6 0x07, // 7 0x7f, // 8 0x6f // 9 }; uchar cnt = 0; // 计数器 uchar sec = 0; // 秒 uchar min = 0; // 分 uchar hour = 0; // 时 void display() { // 数码管显示函数 uchar i; uchar display_buf[4]; // 数码管显示缓存 display_buf[0] = table[hour / 10]; display_buf[1] = table[hour % 10]; display_buf[2] = table[min / 10]; display_buf[3] = table[min % 10]; for(i = 0; i < 4; i++) { P0 = display_buf[i]; P2 = 0x01 << i; delay(1); P2 = 0x00; } } void timer0() interrupt 1 { // 定时器0中断函数 cnt++; if(cnt >= 20) { // 1秒钟产生20个中断 cnt = 0; sec++; if(sec >= 60) { sec = 0; min++; if(min >= 60) { min = 0; hour++; if(hour >= 24) { hour = 0; } } } display(); // 显示时分秒 } } void main() { TMOD = 0x01; // 定时器0工作在模式1 TH0 = 0x3c; // 定时器0初值,1ms中断一次 TL0 = 0xb0; ET0 = 1; // 打开定时器0中断 TR0 = 1; // 启动定时器0 while(1); } void delay(uint t) { // 延时函数 uint i, j; for(i = 0; i < t; i++) { for(j = 0; j < 125; j++); } } ``` 在上述代码中,我们使用定时器0产生1ms的中断,然后在中断函数中计算时分秒,并通过数码管显示出来。注意,这里的计时器是通过软件实现的,所以精度不高,但足以满足一般需求。如果需要更高的精度,可以使用硬件计时器或者使用更高频率的定时器中断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值