找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4296|回复: 2
收起左侧

求解单片机自行车里程的速度计算

[复制链接]
ID:169237 发表于 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
这两句不理解

回复

使用道具 举报

ID:7485 发表于 2017-5-14 20:38 | 显示全部楼层
只看着一点程序是看不明白的。但是感觉这两句是有点不对。
回复

使用道具 举报

ID:200784 发表于 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 。 希望能帮到你。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表