第1页共76页电动自行车里程表的设计序言本文介绍里程表设计以单片机和霍尔传感器为核心。霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的里程数据能直观的显示给使用者。自行车里程表是用于远距离连续测量自行车行驶距离的仪表。它分为电源、霍尔传感器和显示器3部分。目前,里程表普遍使用在汽车和摩扦车上,是一种机械测量装置,测试精度相对低,自行车上使用里程表的还很少见。针对这种情况,研制新型的数字化里程表用于自行车上是非常必要的。本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。传统的机械式里程表虽然稳定可靠,但功能单一,随着电子技术的迅猛发展,电子式里程表得以广泛应用。一种以单片机为核心的里程表,它不仅可以显示车辆行驶的总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力。这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。第2页共76页第1章绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。电动自行车里程表是电动自行车的重要配件,在电动自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。1.1课题背景里程表的原理很简单,因为汽车车轮的直径已知,车轮的圆周长便是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。这样简单的原理古人就已经发现,并且开始使用了。“记里鼓车”就是这样的装置,它是利用上述原理,再加上巧妙的机构使得车轮每转一定圈数就自动敲一下鼓,此时只要有专人把它记下了,就可以得到所走里程。此装置十分巧妙无论白天、黑夜均可使用,而且盲人也可使用,体现出了我国古代劳动人民的聪明才智。不过,如果车上没有人默记鼓声数目的话,单靠记里鼓车本身还不能累计一共走了多少里。而且车停下来之后谁也不知道这车曾经走过多少里路,这是美中不足之处。从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LED直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。1.2里程表的发展现在汽车上的里程表可就不一样了,它克服了“记里鼓车”的不足之处,既能告诉你这次走了多少公里,也能记忆自从出厂以来一共走了多少公里,于是,车辆是否需要第3页共76页大修,发动机比例关系是否应该报废,全都有记录可依。汽车发动机的轴把动力传给变速箱,从变速箱的输出轴到车轮的传动比是不变的。在变速箱的输出轴上装有一根“软轴”,一直通到驾驶员面前的里程表里去。所谓“软轴”就是像自行车线闸用的拉线那样有钢丝芯的螺旋管,管壁和内芯之间有润滑油,外管固定而内芯可以转动,这个内芯的转速与车轮的转速有着恒定的比例关系。软轴通到车速表,使得指针能把车的行驶速度指示出来。同时,软轴旋转还经过蜗轮蜗杆传到车速表中间的滚轮计数器上,把车轮的转数所代表的里程数累计了下来,因为车速和里程都是靠同一根软轴传来的旋转动作驱动的,所以这两个表在一起,前者用指针指示,后者由滚轮计数器累计。新型小汽车的里程表里包括由同一软轴带动的两个滚轮计数器,分别累计本次里程和总里程。本次里程通常有四位数,供短期计数,这是可以清零的;总里程则有六位数,不能清零。本次里程的单独指示和清零对于出租车的计费十分不方便。最近电子式车速里程表逐步推广,它不用软轴,而是在变速箱输出轴上安装脉冲发生器,用导线把电脉冲传到仪表里,用脉冲频率指示速度,用脉冲计数器累计里程。看起来电子式车速里程表比先前的机械电磁式的更合理,因为它不用软轴传动。但是因为机械电磁式的价格比较便宜,在目前汽车里用得仍然比较多。汽车里程表主要分为机械式和电子式两种,目前市场上的大部分新车型都采用电子式里程表,而配备机械式里程表的大都属于较老车型,在二手车市场上比较多见,像老款的捷达、普桑和富康,这些热销车型都是机械式里程表。回调里程表其实很简单,尤其是机械式里程表,几分钟就可以了。而调整电子式里程表的成本较高,需要专门的设备。现在市面上就有一种专门针对电子式里程表的调表仪器。早期的机械软轴的里程表几乎已经消失了,取而代之的是电子式的里程表和液晶显示屏,过去可以通过拨数码齿轮的方式调整里程表,现在这些方法都行不通,不过调表的需求并不随调整难度的增加而减少,如卖车和新车的都需要减小里程数掩盖车子真实行驶里程。公家车的司机又需要增加里程数。如果减小液晶表的公里数只能通过编程器调整存储片数据来实现,这需要专门的设备和知识,普通人要调整的确不易。但如果要增加公里数实现起来就要容易很多了,我们只要给车速传感器提供一个符合要求的信号就可以了。第4页共76页1.3设计的主要内容及技术指标单片机软件设计程序主要包括里程设计模块;存储历史里程数据设计模块;里程的显示设计模块;里程公里数的累计设计模块;里程公里数的清0设计模块。里程计数时有一盏指示灯闪烁;用AT24C01进行对历史里程数据存储;用共阴7段动态显示的数码管进行显示公里数;用个开关实现对里程公里数的清0功能;用霍尔传感器实现对里程车轮圈数的累计功能。主要技术指标:一.完成里程的显示功能二.能存贮历史里程数据三.能够清除历史数据四.有一盏指示灯第5页共76页第2章硬件的设计2.1单片机简介单片机是单片微型计算机(Singlc-ChipMicrocomputer)的简称。单片机是将中央处理器(CPU),程序存贮器(ROM或EPROM),随机存贮器(RAM),定时器/计数器,并行及串行I/O口等电路集成在一块芯片上做成的计算机]1[。单片机的典型结构如图2-1-1所示。单片机与一般的非单片型微型机相比,具有以下特点]8[:具有较强的通用性又有相当的专用性,尤其适合于各种控制系统。片内带有定时器/计数器。片内设有多个I/O接口,便于系统扩展及信息交换。使用汇编语言,指令系统的指令字节数较少,程序执行速度快,节省存贮器。多品种,多系列。时钟CPU定时计数器RAMROM并行口串行口单片机的典型结构(图2-1-1)第6页共76页2.2AT89系列单片机简介AT89系列单片机是以8051为内核,结合自己的技术优势构成的,所以它和8051是兼容的系列。因此,AT89系列对于以8051为基础的应用系统而言,是十分容易进行取代和构成的。而且对于熟悉8051的用户来说,选用AT89系列单片机进行系统设计也是轻而易举的。AT89系列单片机具有下列很明显的优点]3[:1.和AT8051接插相兼容AT89系列单片机的引脚和8051是一样的,因此,当选用AT89系列单片机取代8051时,可以直接替换。这时不管是采用40引脚还是44引脚产品,只要选用相同的AT89系列单片机取代8051单片机即可。2.以EEPROM电可檫除和Flash技术为主导的存储器ATMEL公司把EEPROM和Flash技术巧妙相结合形成特殊的集成电路,从而使应用领域扩大。由于AT89系列内部含有Flash存储器,因此在系列的开发过程中可以十分容易地进行程序的修改,从而大大缩短了系统的开发周期。同时,在系统的工作过程中,能有效地保存部分重要数据,不受外界因素而遭到破坏(如电源故障等),这给便携类产品的应用提供了极大方便。含有EEPROM和Flash存储器是AT产品的明显特色之一。3.静态时钟方式AT89系列单片机采用静态时钟方式,可以节省电能。这对于降低便携类产品的应用提供了极大方便。含有EEPROM和Flash存储器是AT产品的明显特色之一。2.3AT89C52系列单片机的介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合]13[。主要性能参数:第7页共76页1.与MCS-51产品指令和引脚完全兼容2.18K字节可重擦写Flash闪速存储器3.1000次擦写周期4.全静态操作:0Hz-24MHz5.三级加密程序存储器6.256*8字节内部RAM7.32个可编程I/O口线8.3个16位定时/计数器9.8个中断源10.可编程串行UART通道11.低功耗空闲和掉电模式功能特性概述:AT89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚如图3.3-1所示。振荡器反相放大器如图3.3-2所示。图3.3-1XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。第8页共76页图3.3-2中断:AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0,1,2)和串行口中断。所有这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。AT89C52编程方法:1.在地址线上加上要编程单元的地址信号。2.在数据线上加上要写入的数据字节。3.激活相应的控制信号。4.在高电压编程方式时,将EA/Vpp端加上+12V编程电压。5.每对Flash存储阵列写入一个字节或每写入一个程序加密位,加入一个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,通常约为1.5ms。重复1-5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。AT89C52的极限参数:工作温度:-55℃to+125℃储藏温度:-65℃to+150℃任一引脚对地电压:-1.0Vto+7.0V最高工作电压:6.6V直流输出电流:15.0mAXTAL1NC外部振荡信号输入XTAL2GND第9页共76页2.4里程表各部分电路介绍本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,LED显示模块及74LS07驱动器构成。2.4.1霍尔传感器电路霍尔传感器电路图如下图3.4.1-1所示。图3.4.1-12.4.2里程指示电路霍尔传感器发出一个低电平脉冲,里程显示时四个数码管点亮后开始计数,表明电动自行车正在行驶中,一盏指示灯一直闪烁着。电路如图3.4.2-1所示。图3.4.2-1第10页共76页2.4.3里程数据存储电路里程数据的存储电路是本次设计的关键电路,单片机首先向AT24C01发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向AT24C01的内部地址传送数据。当显示里程时,单片机首先向AT24C01发送读信号,然后确认后,单片机从AT24C01内部的地址向单片机的读出单元字节读出数据,供显示所用。因此,最终可保证掉电时数据不丢失。I2C总线的的介绍:I2C总线是双线串行总线。I2C总线采用二线传输,即SDA串行数据线和SCL串行时钟线。总线和器件之间的数据传送均由SD