X57187422 发表于 2012-5-22 07:11:00

用C语言怎么写里程表的程序啊

知道方波频率,知道车轮周长,知道车速,怎么写里程表的程序啊。求各位大侠指点。sum=sum+ADC3*www*11/6250; 这个为什么不对啊,变化速度特别快。ADC3是方波的频率。            11/6250是单位换算后得到的。

chenxujiaoyang 发表于 2012-5-22 08:47:26

先看一下你的数据类型

ground 发表于 2012-5-22 09:44:44

你大概描述一下硬件原理,另外,里程与频率没有关系吧,无非你收到一个方波脉冲,然后加一次周长呗.

terencechang 发表于 2012-5-22 09:47:16

楼主同行?做汽车仪表?

terencechang 发表于 2012-5-22 09:50:58

不知道,你说的里程表是什么意思?是累计里程计算?

知道车速 ,车速乘以汽车运行时间不就是累计里程吗?

知道转速传感器脉冲频率可以根据汽车轮胎直径 传动比等参数,计算出车速。
感觉楼主对这些关系都一头雾水 呵呵,你这样整除车表来估计够玄乎。呵呵

LM1876 发表于 2012-5-22 09:57:43

哪用乘来乘去的,收一个脉冲就加一次不就得累计里程。你看一下你那一个脉冲是走几远。然后就累加不是更方便?

X57187422 发表于 2012-5-22 18:53:56

terencechang 发表于 2012-5-22 09:47 static/image/common/back.gif
楼主同行?做汽车仪表?

是啊,可是编程出了问题 修改不明白了

X57187422 发表于 2012-5-22 18:55:38

LM1876 发表于 2012-5-22 09:57 static/image/common/back.gif
哪用乘来乘去的,收一个脉冲就加一次不就得累计里程。你看一下你那一个脉冲是走几远。然后就累加不是更方便 ...

你的意思我明白,可是这程序怎么用C语言写 我不是很明白 能举个例子么

LM1876 发表于 2012-5-22 21:39:40

if(Pulse_Pin==1) { b_PulseStatus = 1;}

if(Pulse_Pin==0 && b_PulseStatus==1)
           {
          b_PulseStatus = 0;//状态转变
         m_TotalFlux++;//收到脉冲
         }

      if (m_TotalFlux>100)   //假设一个脉冲1米,计量为0.1公里,那么每100米时里程+1.
      {
      m_TotalFlux=0;//计数复位
       总里程++;   //显示时要记得这个是0.1kM单位的
       保存();//保存1次,不过这样写的次数太多,一般最好是用电压检测掉电前保存
         }

LM1876 发表于 2012-5-22 21:46:38

下面这个是STC的低电压保存,         

if (PCON & 0x20)   //低电压判断
                      {
                          PCON &= 0xDF ;   //标志位复位
                          if(old_Mileage != m_Mileage)//如果里程有改动
                             {
                                           old_Mileage = m_Mileage;    //旧里程=最新里程,下次如果里程没有改动时就没必要进入保存
                                                     FlashRom_Save();    //保存
                                          }
                        }

BXAK 发表于 2012-5-22 23:32:45

仅供参考:发个刚做的自行车测速、里程计
页: [1]
查看完整版本: 用C语言怎么写里程表的程序啊