优雅的刺猬 发表于 2018-5-19 14:13 时间time能得到了,计数count也有了,可是显示不出来啊 ![]() 我用的是四位共阳数码管,buf[]数组的0~3分别是四个位。显示其他数据的时候例如:buf[1] = 1;display();这样就能正常显示,但是速度count/time没法显示出来,不知道是不是数据类型的问题? ![]() while(!s5) { //TODO 显示rs?? rs = count/time; buf[3] = rs/1000 ; buf[2] = rs%1000/100; buf[1] = rs%100/10 ; buf[0] = rs%10; display(); } |
优雅的刺猬 发表于 2018-5-22 23:43 按回复结合另一个分享的帖子弄好了 ![]() |
你可以设置一个中断,非常好用 |
弄一个标志位,开始的时候标志位等于0,然后再进入main函数初始化的时候标志位置1,然后到定时器判断标志位为1了就开始计时,就好了 |
设置开始到结束两个标志位 然后计算时间 不过我个人感觉不用算从开始的时间 没有什么必要 希望对你有帮助 |
用DS1302;也只能这样了……你想,单片机里面就定时器而已 |
需要计时的话,直接对单片机内部脉冲计数不就好了么,用一个整数的晶振,然后输出转换成时间不就是单片机开始到结束的时间了么 |
电机开始 设置一个标志位 定时器定时 关闭标志位 。之后计算 |
在10ms的中断服务程序中,增加一个计数器,就可以得到时间。那么电机打开的时候,记下这个起始的时间,用当前时间减去起始时间就可以得到运行时间 |
不用从运行开始算时间,你可以计算比如一秒时间内的圈数,开启计数器,同时开启计圈传感器,1秒后定时器溢出,引发中断,再关闭定时器,关闭计圈传感器。不就解决了。 |
为什么要从开始算哪? |
用一个定时器,50毫秒跳一次,二十次加一,主函数初始化完就开中断,就能计时了。随便设个整数变量。 |