标题:
求解单片机自行车里程的速度计算
[打印本页]
作者:
sqw
时间:
2017-5-14 18:46
标题:
求解单片机自行车里程的速度计算
void menu_dis() //计算速度函数
{
static uchar value;
if(menu_1 == 0)
{
if(flag_1s == 1)
{
flag_1s = 0;
if(flag_en == 0)
{
value ++;
if(value >= 3) //2秒
{
speed_km = 0; //速度为0
shudu = (uint)speed_km;
value = 0;
}
}
if((flag_en == 1))
{
value = 0;
flag_en = 0;
//1s = 1 / 1000000us; // 1m/s=3.6km/h
f_hz = (t2_num * 65536.0 + TH11 * 256 + TL11) / 1000000 ; //算出来就是秒
t2_num = 0; //把变量清零
TH11 = 0;
TL11 = 0;
speed_m = f_hz * zhijing * 3.14 ; //算出来的是m/s
juli_z = (juli_z + (uint)speed_m) ; //总路程m
speed_km = speed_m * 3.6 ; //(带个小数点) km/h
shudu = (uint)speed_km;
zong_lc += speed_m;
}
write_sfm2(1,3,shudu);
write_sfm4(2,3,juli_z);
}
}
}
f_hz = (t2_num * 65536.0 + TH11 * 256 + TL11) / 1000000 ; //算出来就是秒
speed_m = f_hz * zhijing * 3.14 ; //算出来的是m/s
这两句不理解
作者:
ahshmj
时间:
2017-5-14 20:38
只看着一点程序是看不明白的。但是感觉这两句是有点不对。
作者:
xingye
时间:
2017-5-14 23:16
定时器计数满0xFFFF(65536)溢出一次,t2_num 是定时器溢出计数值,那么溢出时间 = t2_num * 65536 ;TH11(高8位) 和 TL11(低8位) 是定时器正在计数的值,因为TH11 是高8位,所以算计数值时需要 * 256,定时器正在计数值 = TH11 * 256 + TL11 。那么总计数值 = 溢出次数 * 65536 + TH11 * 256 + TL11 。 希望能帮到你。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1