技术文档

单片机里程表 「硬件小百科」单片机定时器与计数器

小编 2025-09-08 技术文档 23 0

「硬件小百科」单片机定时器与计数器

计数概念的引入

从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。

计数器的容量

从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。

定时

8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?

一个闹钟,我将它定时在1个小时后闹响,换言之,也能说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。

<单片机定时器记数器结构>

结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机供给一个非常稳定的计数源。那么供给组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶体震荡器经过12分频后获得的一个脉冲源。晶体震荡器的频率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个12M的晶体震荡器,它供给给计数器的脉冲时间间隔是多少呢?当然这很不难,就是12M/12等于1M,也就是1个微秒。结论:计数脉冲的间隔与晶体震荡器有关,12M的晶体震荡器,计数脉冲的间隔是1微秒。

溢出

让我们再来看水滴的例程,当水持续落下,盆中的水持续变满,最终有一滴水使得盆中的水满了。这个时候如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。

水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。

任意定时及计数的办法

刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?

提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛?对了,我们采用预置数的办法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就能了,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就能了。

以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!

关于云创硬见

云创硬见是国内最具特色的电子工程师社区,融合了行业资讯、社群互动、培训学习、活动交流、设计与制造分包等服务,以开放式硬件创新技术交流和培训服务为核心,连接了超过30万工程师和产业链上下游企业,聚焦电子行业的科技创新,聚合最值得关注的产业链资源, 致力于为百万工程师和创新创业型企业打造一站式公共设计与制造服务平台。

科普二手车是如何调里程表的

生活中的每个行业里往往都有一些所谓的潜规则,二手车行业当然不例外,对于想买二手车的人呢,最怕就是两点,一个是事故泡水车,一个就是怕被调过里程表,这两点往往也是车行老板最喜欢用的增收手段,两辆相同年份的二手车,在外观差别不大的情况下,里程数的差别就是价钱的差别,越是好车,差价越大,调表可谓是成本低,见效快。某人说过:只要有10%的利润,他们就会蠢蠢欲动;有50%的利润,他们就敢铤而走险;有100%的利润,它们就敢于践踏人间一切法律;有300%的利润,他们敢于冒绞刑的危险,一辆调表后的豪车,有时候可以轻松获取大于300%的利润,所以,对于打算买二手车的朋友,你可要多一个心眼了。下面演示一下如何给一台宝马X7的全液晶仪表进行里程修改。

科普一下调表的简单知识,一般汽车行驶过程中转速传感器会将车轮转了多少圈通知给行车电脑和仪表板,行车电脑和仪表板通过车轮半径算出车速和行驶里程,行驶里程会存在行车电脑和仪表板内的存储芯片内,存储芯片有多种。

有些用24Cxx系列EEPROM,有些用95XXX系列EEPROM,有些直接存在仪表自身MCU自带的EEPROM中,有些就存在一些定制的专用EEROM内,不管存在哪里,调表最终就是要找到这个里程在EEPROM内的存储位置,然后将该位置的数据写入根据仪表的特定算法生成的新里程数据即可。

有些车很好调,只需要使用一些特殊设备,接入汽车OBD接口,一番简单操作即可,几乎0成本,有些车就麻烦点,需要拆车把仪表取下,然后将EEPROM焊下来,放到专用的编程器里面调整好再焊回车上。对于宝马这个品牌的汽车来说,不敢说全部,大部分车型的仪表盘都是使用ST公司的一个特殊芯片进行里程存储的,这个芯片就是ST的35XXX系列,常见的有35080,35160,35128等等。

为什么说这个EEPROM特殊呢,因为这个EEPROM的前32字节地址的数据是只能增大,不能减小的,也就是说这个区域的数据不能擦除,每次写入数据必须比原有的数据要大才能写入,原厂想要通过这种手段来禁止非法修改里程数据。

有些聪明的朋友就想到了,换一片新的芯片不就行了吗?确实,对于早期的某些BMW车型来说,换芯片确实能完美解决问题,不过对于比较新的车型呢,就没那么完美了,原因是新车型使用了一个防换芯片的措施,仪表出厂的时候读取35xx芯片的芯片唯一ID编码,并保存在仪表MCU内部,每次启动都会检查仪表外部35xx芯片的ID码,如果发现ID改变了就知道你换了芯片的,此时就会在仪表面板显示一个故障提示,行内称为小红点;虽说能调,但是有故障提示就等于告诉别人自己对仪表动了手脚。

正所谓哪里有需求,哪里就有市场,虽说调表不是什么光彩行为,但是调表因为利润大,所以还是有很多人有需求的,因此国内不少汽车防盗编程破解行业相关的公司也推出了不少解决方案,对于宝马调表来说,目前有硬破解方案,硬破解就是用专用设备对35xx芯片进行攻击。

在不损坏芯片的前提下利用芯片自身漏洞缺陷来清零芯片的前32字节里程数据,成功清零后就可以重新改写为任意里程,不过这种攻击只能用于早期的35080,35160等芯片,对于一些的35160,和35128等是无效的(ST修复了芯片漏洞),对于不能攻击破解的芯片。

现在有了芯片模拟器,就是完全模拟一片35xxx芯片,将原车35xxx的数据和ID编号用编程器读出,然后将数据和ID写入模拟芯片内并修改里程为任意想要的数值,最后将模拟芯片焊接回仪表内,由于是完全模拟,仪表读取到的数据和ID号都是和原车芯片一致,所以愚蠢的仪表就被轻易的欺骗了。下面就是所谓的模拟芯片,如下图,一个小玩意,左边是常规芯片,右边是模拟芯片,大小差不多,但是模拟芯片长度大一些,不过多出来的长度是没用的,只是为了方便手拿而已,在模拟芯片焊到车上之前要用钳沿着CUT箭头指示的位置剪断多余的部分,剪完后大小就跟常规SOP-8芯片差不多了,可以直接焊接到原车芯片位置。

其实就是一个单片机(本身写有程序) 模拟IIC通讯

模拟芯片的读写需要用一个专用配套的编程器,如下图,usb直插直用,免驱动,插入电脑后会显示一个U盘盘符,内部自带编程软件和说明书,配套一个8脚夹子,可以直接夹住模拟芯片进行读写,这个很重要,毕竟模拟芯片是半孔工艺制作的焊盘,如果要先焊接模拟芯片到编程器,写好数据,然后拆卸模拟芯片,最后焊接到仪表的话,会发现,半孔工艺焊上容易,但是要拆下的话操作会很困难,并且也容易造成焊盘脱落导致芯片报废,所以先用夹子进行数据写入,最后直接焊上车上,这样就不用先焊到编程器再拆下了,方便不少。

BMW X7 全液晶仪表

背面,没啥特别的,就一个CAN通讯接口,包含了电源输入,CAN通讯输入等信号线

看一下标签,只知道是BOSCH给BMW生产的,其它不懂啥意思

这个表直接接电源是不会亮的,必须要配合车身控制器一起使用才能点亮,车身控制器(Body Domain Controller)俗称BDC,也就是车身电脑板,负责控制车身各个系统车门车锁,车窗,仪表盘等等许多功能,下图看一下BDC长啥样,一大块长方形板子,上面一堆插头,也说不清干啥用,反正有配套好的线束,插上就是了

看下标签,一堆信息,看不懂

再看看线束,包含两个大接头,已经插上了,还有一个钥匙线圈,用于感应车钥匙,BDC要检测到钥匙和自身是配套的才能启动,还有一个小按钮,用来模拟车上的电门开关,也就是一键启动按钮,最后有一个电源输入接口,需要外接12V直流电。

看一下钥匙是怎么放

将蓝色的接头接到仪表盘背后的接口上,最后看看一整套装好是这样子的

最后接上12V电源,启动一下,看看效果很酷,由于这个图是后排的,已经调过了,所以当前显示46KM,说一下,BMW的里程是有一个算法的,写入的值最终显示到仪表是有一点点误差的,比如这个46KM实际调表调的是50KM,不过差个几公里无所谓!

为了演示调表过程,把仪表又给拆了一遍,拧掉后背9颗螺丝,没有难度,外壳有一圈特殊扣子,直接钳子

大大的散热片,还有一个精致的小风扇,一颗ATMEL的芯片,还有些电源芯片MOS电容等等,这些看看就好,分析某个芯片是干啥的,那就长篇大论了

拆掉固定主板的几颗螺丝,取下排线,把主板翻个面,看看背面

一个大芯片SPANSION S6J334EJEE,不懂啥芯片,懂了也没用,车芯片反正是用不起

左上角有一片应该是EMMC吧

右边还有几颗小的看看就好

眼尖一些的人应该看到有异常的位置了,就在红箭头位置,这个位置原本就是35128芯片的位置,由于已经被调过了,所以现在看到的是焊上了模拟芯片了,手工烂焊得太丑,如果细心点的话可以以假乱真,小白都很难看出仪表被动过手脚。

演示一下如何调表,首先把原车芯片35128从仪表上拆卸下来,焊接到一块编程器转接板上,如下图

然后把编程器插入电脑,等待几秒钟,电脑里面会出现 35XX编程器 的盘符

打开盘符,看到里面有几个文件,有专业版的软件,也有标准版的软件,两个软件的功能是一样的,就是界面操作不太一样,具体就不做分析了。

打开软件之后等待几秒钟,等到软件底部显示编程器已连接的字样就可以操作了,第一步选择芯片,选35128第二步点读取数据,等待读取完成第三步,点保存数据到文件,这个时候就把原车芯片的数据保存下来了第四步,点读取ID,等待读取完成第五步,点击保存ID文件,这个时候就把原车芯片的ID序列号保存下来了

然后,模拟芯片上场,夹子夹好模拟芯片,如图,区分引脚序号反了可能会烧坏

然后继续在软件上操作第一步,点打开数据文件,打开刚才读取的数据,此时软件底部会显示当前数据对应的公里数第二步,点调整里程,在对话框内输入要调整的公里数,可以选择公里还是英里,对应国内车型和国外车型单位第三步,点击写入数据,等待写入完成,大概半分钟第四步,点击打开ID文件,打开刚才备份好的原车ID文件第五步,点击写入ID,将ID写入模拟芯片内,完成后,模拟芯片就可以以假乱真了

最后把模拟芯片多余部分剪掉,焊接到仪表板上即可

调整为10KM,实际显示6KM

调整为16KM,实际显示12KM,实际显示比调整数值少4KM

结语

BMW在BDC上还保存了一份里程数据,正常情况下BDC和仪表盘显示的公里数是一致的,要是发现不一致的话值小的一方就会被值大的一方改写进行同步,也就是说改完了之后直接接上BDC正常来说应该是会被BDC重新改写为原来的值,然而,目前还没有办法或者还不知道有什么办法可以修改BDC内保存的里程数。

这是科普帖并不是教改表,改表是需要一定技术含量,并不是看看文章就会了的,买二手车时要知道真实里程到4S査保养记录一下就查出来了,或查变速箱里程,但问题二手车商让不让查还是个问题。

相关问答

汽车 里程表 怎么调回真实公里数_车坛

简略介绍几种分辩调表车的办法:1、汽车里程表有两种,一种是机械式的,公里数调校方法:拆下仪表,拔动机械齿轮就可以改变公里数了;2、另一种是液晶屏...

汽车的 里程表 可以调吗?

[最佳回答]1机械式的公里数调机械式的公里数调校方法:拆下仪表,拔动机械齿轮即可改变公里数;采用液晶屏显示公里数的仪表,里面有存储公里数据的单片机,只要修...

cm300 里程表 怎样调整?

里程表的调校方法:1、机械式里程表,需要拆下仪表,拔动机械齿轮就可以调公里数;2、液晶屏显示里程表,只要修改单片机里面的对应里程数据就可以调校仪表了,...

suv如何调公里数?

现在的表一般情况下会有两种,一种是机械式的,这种里程表调校方法是:拆下仪表,拔动机械齿轮就可以调公里数了。另一种是液晶屏显示的,调校方法是:只要修改...

汽车 里程表 怎么调回真实公里数?

[最佳回答]简略介绍几种分辩调表车的办法:1、汽车里程(查成交价|参配|优惠政策)表有两种,一种是机械式的,公里数调校方法:拆下仪表,拔动机械齿轮就可以改变公...

林肯公里数可以调吗?

您好,很高兴为您解答林肯公里数怎么调小的方法是一种是机械式的,公里数调校方法:拆下仪表,拔动机械齿轮就可以改变公里数了。另一种是液晶屏显示的,公里数调...

斯堪尼亚能调公里数吗?

斯堪尼亚车辆是可以调整公里数的,但这是不合法的行为。调整公里数会欺骗买家,让他们误以为车辆使用时间更短,对车辆的实际价值造成了不良影响。此外,调整公里...

电动车 里程表 如何安装?

把块磁铁绑在车条上,前叉上绑个干簧管,使磁铁能经过干簧管,其引线接在一个旧计算器等号键的两极上,开机输入1或轮子的周长,按加号,之后转动车轮就开始计算...

怎样使广州本田雅阁汽车 里程表 不走?

一、必须先在车的引擎盖下找到传动轴的里程表传感器插头,然后拔掉。二、将走表器输出插片插入刚刚拔掉的的传感器插销中的信号插孔去。三、然后把走表器准确...

车上 里程表 可以调么_车坛

汽车公里数表可以调,汽车里程表有两种:1、机械式的公里数调校方法:拆下仪表,拔动机械齿轮即可改变公里数。2、液晶屏显示的公里数调校方法:采用液晶...

猜你喜欢