基于单片机控制的电动自行车里程表的毕业设计(含原理图+pcb图+中英文翻译+程序)_第1页
基于单片机控制的电动自行车里程表的毕业设计(含原理图+pcb图+中英文翻译+程序)_第2页
基于单片机控制的电动自行车里程表的毕业设计(含原理图+pcb图+中英文翻译+程序)_第3页
基于单片机控制的电动自行车里程表的毕业设计(含原理图+pcb图+中英文翻译+程序)_第4页
基于单片机控制的电动自行车里程表的毕业设计(含原理图+pcb图+中英文翻译+程序)_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电动自行车里程表的设计序言本文介绍里程表设计以单片机和霍尔传感器为核心。霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的里程数据能直观的显示给使用者。自行车里程表是用于远距离连续测量自行车行驶距离的仪表。它分为电源、霍尔传感器和显示器3部分。目前,里程表普遍使用在汽车和摩扦车上,是一种机械测量装置,测试精度相对低,自行车上使用里程表的还很少见。针对这种情况,研制新型的数字化里程表用于自行车上是非常必要的。本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。传统的机械式里程表虽然稳定可靠,但功能单一,随着电子技术的迅猛发展,电子式里程表得以广泛应用。一种以单片机为核心的里程表,它不仅可以显示车辆行驶的总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力。这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。第1章绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。电动自行车里程表是电动自行车的重要配件,在电动自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。11课题背景里程表的原理很简单,因为汽车车轮的直径已知,车轮的圆周长便是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。这样简单的原理古人就已经发现,并且开始使用了。“记里鼓车”就是这样的装置,它是利用上述原理,再加上巧妙的机构使得车轮每转一定圈数就自动敲一下鼓,此时只要有专人把它记下了,就可以得到所走里程。此装置十分巧妙无论白天、黑夜均可使用,而且盲人也可使用,体现出了我国古代劳动人民的聪明才智。不过,如果车上没有人默记鼓声数目的话,单靠记里鼓车本身还不能累计一共走了多少里。而且车停下来之后谁也不知道这车曾经走过多少里路,这是美中不足之处。从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LED直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。12里程表的发展现在汽车上的里程表可就不一样了,它克服了“记里鼓车”的不足之处,既能告诉你这次走了多少公里,也能记忆自从出厂以来一共走了多少公里,于是,车辆是否需要大修,发动机比例关系是否应该报废,全都有记录可依。汽车发动机的轴把动力传给变速箱,从变速箱的输出轴到车轮的传动比是不变的。在变速箱的输出轴上装有一根“软轴”,一直通到驾驶员面前的里程表里去。所谓“软轴”就是像自行车线闸用的拉线那样有钢丝芯的螺旋管,管壁和内芯之间有润滑油,外管固定而内芯可以转动,这个内芯的转速与车轮的转速有着恒定的比例关系。软轴通到车速表,使得指针能把车的行驶速度指示出来。同时,软轴旋转还经过蜗轮蜗杆传到车速表中间的滚轮计数器上,把车轮的转数所代表的里程数累计了下来,因为车速和里程都是靠同一根软轴传来的旋转动作驱动的,所以这两个表在一起,前者用指针指示,后者由滚轮计数器累计。新型小汽车的里程表里包括由同一软轴带动的两个滚轮计数器,分别累计本次里程和总里程。本次里程通常有四位数,供短期计数,这是可以清零的;总里程则有六位数,不能清零。本次里程的单独指示和清零对于出租车的计费十分不方便。最近电子式车速里程表逐步推广,它不用软轴,而是在变速箱输出轴上安装脉冲发生器,用导线把电脉冲传到仪表里,用脉冲频率指示速度,用脉冲计数器累计里程。看起来电子式车速里程表比先前的机械电磁式的更合理,因为它不用软轴传动。但是因为机械电磁式的价格比较便宜,在目前汽车里用得仍然比较多。汽车里程表主要分为机械式和电子式两种,目前市场上的大部分新车型都采用电子式里程表,而配备机械式里程表的大都属于较老车型,在二手车市场上比较多见,像老款的捷达、普桑和富康,这些热销车型都是机械式里程表。回调里程表其实很简单,尤其是机械式里程表,几分钟就可以了。而调整电子式里程表的成本较高,需要专门的设备。现在市面上就有一种专门针对电子式里程表的调表仪器。早期的机械软轴的里程表几乎已经消失了,取而代之的是电子式的里程表和液晶显示屏,过去可以通过拨数码齿轮的方式调整里程表,现在这些方法都行不通,不过调表的需求并不随调整难度的增加而减少,如卖车和新车的都需要减小里程数掩盖车子真实行驶里程。公家车的司机又需要增加里程数。如果减小液晶表的公里数只能通过编程器调整存储片数据来实现,这需要专门的设备和知识,普通人要调整的确不易。但如果要增加公里数实现起来就要容易很多了,我们只要给车速传感器提供一个符合要求的信号就可以了。13设计的主要内容及技术指标单片机软件设计程序主要包括里程设计模块;存储历史里程数据设计模块;里程的显示设计模块;里程公里数的累计设计模块;里程公里数的清0设计模块。里程计数时有一盏指示灯闪烁;用AT24C01进行对历史里程数据存储;用共阴7段动态显示的数码管进行显示公里数;用个开关实现对里程公里数的清0功能;用霍尔传感器实现对里程车轮圈数的累计功能。主要技术指标一完成里程的显示功能二能存贮历史里程数据三能够清除历史数据四有一盏指示灯第2章硬件的设计21单片机简介单片机是单片微型计算机SINGLCCHIPMICROCOMPUTER的简称。单片机是将中央处理器CPU,程序存贮器ROM或EPROM,随机存贮器RAM,定时器/计数器,并行及串行I/O口等电路集成在一块芯片上做成的计算机。单片机的典型结构如图2111所示。单片机与一般的非单片型微型机相比,具有以下特点8具有较强的通用性又有相当的专用性,尤其适合于各种控制系统。片内带有定时器/计数器。片内设有多个I/O接口,便于系统扩展及信息交换。使用汇编语言,指令系统的指令字节数较少,程序执行速度快,节省存贮器。时钟CPU定时计数器RAMROM并行口串行口单片机的典型结构(图211)多品种,多系列。22AT89系列单片机简介AT89系列单片机是以8051为内核,结合自己的技术优势构成的,所以它和8051是兼容的系列。因此,AT89系列对于以8051为基础的应用系统而言,是十分容易进行取代和构成的。而且对于熟悉8051的用户来说,选用AT89系列单片机进行系统设计也是轻而易举的。AT89系列单片机具有下列很明显的优点31和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产品的明显特色之一。23AT89C52系列单片机的介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的只读程序存储器PEROM和256BYTES的随机存取数据存储器RAM,器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容,片内置通用8位中央处理器CPU和FLASH存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。13主要性能参数1与MCS51产品指令和引脚完全兼容218K字节可重擦写FLASH闪速存储器31000次擦写周期4全静态操作0HZ24MHZ5三级加密程序存储器62568字节内部RAM732个可编程I/O口线83个16位定时/计数器98个中断源10可编程串行UART通道11低功耗空闲和掉电模式功能特性概述AT89C52提供以下标准功能8K字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚如图331所示。振荡器反相放大器如图332所示。图331XTAL1振荡器反相放大器的及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。图332中断AT89C52共有6个中断向量两个外中断(INT0和INT1),3个定时器中断(定时器0,1,2)和串行口中断。所有这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。AT89C52编程方法1在地址线上加上要编程单元的地址信号。2在数据线上加上要写入的数据字节。3激活相应的控制信号。4在高电压编程方式时,将/VPP端加上12V编程电压。EA5每对FLASH存储阵列写入一个字节或每写入一个程序加密位,加入一个ALE/编程脉冲。每个字节写入周期是自身定时的,通常约为15MS。重PROG复15步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。AT89C52的极限参数工作温度55TO125储藏温度65TO150XTAL1NC外部振荡信号输入XTAL2GND任一引脚对地电压10VTO70V最高工作电压66V直流输出电流150MA24里程表各部分电路介绍本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,LED显示模块及74LS07驱动器构成。241霍尔传感器电路霍尔传感器电路图如下图3411所示。图3411242里程指示电路霍尔传感器发出一个低电平脉冲,里程显示时四个数码管点亮后开始计数,表明电动自行车正在行驶中,一盏指示灯一直闪烁着。电路如图3421所示。图3421243里程数据存储电路里程数据的存储电路是本次设计的关键电路,单片机首先向AT24C01发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向AT24C01的内部地址传送数据。当显示里程时,单片机首先向AT24C01发送读信号,然后确认后,单片机从AT24C01内部的地址向单片机的读出单元字节读出数据,供显示所用。因此,最终可保证掉电时数据不丢失。IC总线的的介绍2IC总线是双线串行总线。IC总线采用二线传输,即SDA串行数据线和SCL串2行时钟线。总线和器件之间的数据传送均由SDA数据线完成。一个IC总线系统里的2所有外围器件均采用器件地址和引脚地址的编址方式。系统中主CPU对任何节点的寻址没有采用传统的片选线方式,而是采用纯软件的寻址方式。为了能使总线上的所有节点器件输出实现“线”与逻辑功能,IC器件输出端必须是漏极或集电极开路结构,即SDA2和SCL接口线上必须加上拉电阻。7里程数据存储电路,如图3431图3431244时钟电路图3441在图3441的电路中,电容器C1和C2对振荡频率有微调作用,通常的范围3010PF;石英晶体选择6MHZ或12MHZ都可以。其结果只是机器周期时间不同,影响计数器的计数初值。12245LED显示模块电路及74LS07驱动器LED显示器采用动态显示,用74LS07驱动共阴极LED数码管。LED显示模块电路图,如图3451所示。LED数码管结构图,如图3452A,B为共阴极型,C为共阳极型。图3451图3452OC门驱动器用7407,7407即TTL集电极开路六正相高压驱动器当7407输出低电平时,没有电流流过LED,当7407输出为开路状态时,电流经100限流电阻流入LED显示器,每个七段LED的公共端都接一个7407驱动器。7407模型如图3453图34537407引脚如图3454图3454第3章软件的设计31系统的总体设计一个完整的单片机系统,包括软硬件两个方面。硬件是系统可靠运行的“载体”,是基础,而软件则是使“载体”产生动力的发电机,二者相辅相成,缺一不可。从设计者的角度出发,一个硬件电路的设计过程往往就是设计者的经验不断积累的过程。总体设计流程在设计硬件电路时一般的流程是1器件选择(包括单片机和外围芯片的选择)2电路图绘制3PCB制板4硬件检查和排错5硬件电路调试完毕只有在硬件平台建立之后才能更好进入软件系统的调试。在进行软件系统的设计时,设计者首先要建立完整,总体的概念,一个完整的软件系统是由各个功能模块组成的。程序设计者要时刻牢记如何将那些独立,分散的子程序模块通过主程序连接起来,并最终实现系统的目标功能。32单片机应用软件设计应用软件应在硬件电路的支持下能可靠地实现应用系统的各种功能。它应具有下列特点21结构清晰,简捷,流程合理。2各功能程序模块化,子程序化,既便于调试,链接,也便于移植,修改。3程序存储区,数据存储区规划合理,既节约内存容量,又便于操作。4各功能程序的运行状态,运行结果以及运行要求尽量设置状态标志,以便查询,控制与程序判转。5调试修改后,还应规范化,以利于交流,借鉴,为模块化,标准化打下基础。6做好抗干扰设计,这是计算机应用系统提高可靠性的有力措施。7设置自诊断程序,系统工作前先运行自诊断程序,检查系统各特征状态参数是否正常,以提高运行的可靠性。开发步骤1确定任务A确定系统的功能,指标,成本B完成期限2总体设计A调研B机型选择C软硬件任务划分I硬件开发一绘出线路图二选购元器件三组装四调试硬件II软件开发一建立数学模型,确定算法,安排数据结构二设计,编制各子程序模块三各子程序进行调试四各子程序连接起来调试3样机联调A软,硬件结合起来调试B找出错误,修改软,硬件C实时仿真,直至满足设计要求4产品定型A形成工艺B编写技术文件33中断控制和的中断请求信号由外部产生并输入,称外部中断,其余的中断请求0INT1信号均由主机内部产生,故称为内部中断。本次里程表的设计只用到外部中断外部中断0请求中断输入端口P32引0INT脚,低电平或负跳变(从高到低)有效。中断屏蔽AT89C52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求开放(允许)或屏蔽(禁止)的控制。中断响应的过程AT89C52的指令系统中设有两条返回指令RET和RETI。调用子程序中应选用RET返回指令,中断服务程序中应选用RETI返回指令,如采用的是RET返回指令,虽然也能使中断服务程序返回原断点处继续往下执行原程序,但它不会告知中断控制系统,现行中断服务程序已执行完毕,致使中断控制系统误认为仍在执行中断服务程序而屏蔽新的中断请求。因此,中断服务程序的返回必须用RETI指令,而不能用RET返回指令代替。10中断响应时间从中断源发生中断请求到主机响应中断,转去执行中断服务程序需要38个机器周期。外部中断0矢量地址0003H。34I/O口的控制方式在单片机中,为了实现数据的输入输出传送,通常使用三种控制方式。即无条件传送方式,查询方式和中断方式。9无条件传送方式适用于以下器件或设备的输入输出例如,机械或电子开关,指示灯,发光二极管,数码管等。它们随时处于“准备好”状态方便数据的传输。查询方式为了实现查询方式的数据输入输出传送,需要由接口电路提供部,器件或设备的状态,并以软件方法进行状态测试。因此,这是一种软,硬件方法结合的数据传送方式。程序查询流程如图441所示。读入状态信息准备好了吗数据传送N图441中断方式中断方式与查询方式的主要区别在于如何知道,器件或外设是否为数据传输作好了准备。查询方式是主机主动查询。而中断方式则为部,器件或外设主动请求。采用中断方式进行数据传输时,当部,器件或外设为数据传输已作好准备之后,就向主机发出中断请求(相当于通知主机),主机在接收到中断请求之后,在允许中断的情况下,响应中断请求,暂停正在执行的原程序,转而去为部,器件或外设的数据提供传输服务。待服务完成之后,程序返回,主机再从断点处继续执行原程序。35里程表的软件设计351总体设计思路将各英寸的电动自行车轮胎车轴内置一个小车轮,设小车轮周长约为150毫米(直径为477毫米),以10毫米为单位分15等份,即15个脉冲,小车轮的转动,方便大车轮的周长计算,更便于行驶公里数的计算,就不需要将圈数转换成公里数,避开了除法算法,降低了软件程序的复杂度。假设小车轮周长约为150毫米(直径为477毫米),不是毫无根据的。由22英寸到28英寸电动自行车的规格见下表4511所示。大车轮与小车轮的模拟图如图4512所示。表4511规格(英寸)直径(毫米)周长(毫米)Y2255881752246096191226660420722877122233小车轮图4512最小的电动自行车尺寸的车轮周长为1752毫米,小车轮的周长要略小于大车轮的周长,假设为1500毫米,在将其值缩小10倍,因此得到小车轮的周长值。主程序流程图如图4513所示。大车轮初始化读AT24C01判内部数据处理图4513判内部数据处理AT24C01出厂时原有数据BM单元是否为0FFH,等于0FFH时,BM单元清0,写到AT24C01中,不等于时再次判断AT24C01出厂时原有数据KM单元是否为0FFH,等于0FFH时,KM单元清0,写到AT24C01中,以此类推,判断到BKM单元为止。当AT24C01出厂时原有数据BKM单元不为0FFH,调用显示处理子程序。按下P36接的开关调用计数处理子程序,计数时P10口接的指示灯会闪烁点亮。BMM,M,SM,BM,KM,SKM,BKM单元加处理时,判断是否到10进1,BMM,M,SM单元每加一次都不需要存人AT24C01和显示,BM加处理后储存AT24C01,并显示。按下P11接的开关调用清除数据子程序。352里程的设计里程数据存放单元见如下表4521所示。表4521P1和P3规定作为电平拉高输入口开总中断和外部中断,设堆栈指针SP开P0和P2口按下P36接的开关按下P11接的开关ENDBKMSKMKMBMSMMBMMSMMMM50H55H54H53H52H51H56H因为电动自行车里程表的硬件设计里程的显示部分是采用四个共阴极的数码管,所以只能显示BM(01公里),KM(公里),SKM(十公里),BKM(百公里)。但设计时从BMM(分米)开始置存放单元并显示,每按一下P36开关,存放单元数据进行累加一,而BMM(分米),M(米),SM(十米)置存储单元,虽然没显示但骑电动自行车时BMM(分米),M(米),SM(十米)累加的。因此BMM(分米),M(米),SM(十米)加处理后不存储AT24C01,而BM(01公里),KM(公里),SKM(十公里),BKM(百公里)加处理后存储AT24C01后再在数码管上显示。353存贮历史里程数据的设计存贮历史里程数据要用到IC总线,ICINTERINTEGRATEDCIRCUIT总线是22一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IC总2线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。IC总线协议定义如下2只有在总线非忙时才被允许进行数据传送。在数据传送时,当时钟线为高电平时,数据线必须为固定状态,不允许有跳变;当时钟线为高电平时,数据线的任何电平变化将被当作总线的启动或停止条件。IC总线的数据传输和器件寻址21总线数据传送的起始和停止标志IC总线每一次数据传送,都由主器件发送起始信号开始,发送停止信号2结束,当SCL时钟线为高电平,SDA数据线出现高电平向低电平的下降沿信号时即为总线的起始信号;相反,当SDA数据线出现由低电平向高电平的上升沿信号时即为总线的停止信号。2IC总线上的数据传输格式2主CPU发生起始信号表明一次数据传送的开始,其后为寻址字节,寻址字节由高7位地址和1位方向位组成,方向位表明CPU与从器件之间的数据传送方向,当该位为“0”时表明CPU对从器件进行写操作,为“1”时是读操作。寻址字节后是按指定地址读,写操作的数据字节与应答位。主CPU发出寻址信号后,地址与自己相符的从器件便会产生一个应答信号。数据字节的后面也跟随一个应答信号,应答信号在第9个时钟位上出现。153本设计常用IC总线芯片的器件和引脚地址。见表4531所示。2表4531AT24C01是美国ATMEL公司生产的串行EEPROM芯片,容量分别为1288位,主要特性如下具有页写功能,AT24C01为4B;可擦写次数100000次;数据保存周期为100年;8引脚DIP或SOIC封装。AT24C01的引脚排列,接口电路图如如图2321所示,说明如下A0,A1,A2为器件地址选择线;SDA为串行数据线;SCL为串行时钟线;WPEN为写保护端(当该端口为高电平时,不可对存储器写操作);VCC为正电压1855V;VSS为地。IC总线基本操作2IC规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件(本文为AT24C01)都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器CPU)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的型号种类器件地址引脚地址AT24C01EEPROM1010A2A1A0期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。AT24C系列串行PROM具有IC总线接口功能,功耗小,宽电源电压根据不同型2E2号25V60V,工作电流约为3MA,静态电流随电源电压不同为30A110A。AT24C系列PROM接口及地址选择25由于IC总线可挂接多个串行接口器件,在IC总线中每个器件应有唯一的器件2地址,按IC总线规则,器件地址为7位数据即一个IC总线系统中理论上可挂接2128个不同地址的器件,它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位读/写。器件寻址字节中的最高4位D7D4为器件型号地址,不同的IC总线接2口器件的型号地址是厂家给定的,如AT24C系列PROM的型号地址皆为1010,器件地2E址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。AT24C系列PROM读写操作软件实现方法2E对AT24C系列PROM的读写操作完全遵守I2C总线的主收从发和主发从收的规则。AT24C01的写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序连续写操作是对E2PROM连续装载N个字节数据的写入操作,N随型号不同而不同,一次可装载字节数也不同。AT24C01/028字节/每页。AT24C01的读操作读操作有三种基本操作当前地址读、随机读和顺序读。应当注意的是最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址读,就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答保持SDA高电平随后发停止信号。IC总线共有9个归一化子程序组成,分别是21启动信号子程序2终止信号子程序3发送应答位(A)子程序4发送应答非位()子程序A5检查应答位子程序6发送单字节子程序7接收单字节子程序8发送N字节子程序9接收N字节子程序标记符号的定义1VSDAIC总线数据线;22VSCLIC总线时钟线;3SLA发送/接收寻址字节内RAM存储单元;4NUMB发送/接收数据字节数N内RAM存储单元;5MTD发送数据内RAM存储区首地址;6MRD接收数据内RAM存储区首地址;由于EPROM的半导体工艺特性,对EPROM的写入时间需要510MS,但AT24C0122串行EPROM芯片内部设置了一个具有SRAM性质的输入缓冲器,称为页写缓冲器。CPU对该芯片写操作时,AT24C01芯片先将CPU输入的数据暂存页写缓冲器内,然后慢慢写入EPROM中。因此,CPU对AT24C01的EPROM一次写入的数据,受到该芯片页写缓22冲器容量的限制。页写缓冲器的容量AT24C01为8B若CPU需写入超过芯片页写缓冲器容量或超过页写缓冲器页内最大地址的数据,应在一页写完后,隔510MS重新启动一次写操作。保存数据子程序WTDAMOVA,01HMOVR0,BMLCALLWT24ACALLDELMOVA,02HMOVR0,KMLCALLWT24ACALLDELMOVA,03HMOVR0,SKMLCALLWT24ACALLDELMOVA,04HMOVR0,BKMLCALLWT24RET存贮历史里程数据的流程图如图4532所示将AT24C01分别读入到BM,KM,SKM,BKM单元中启动信号STAR发送寻址字节应答发送数据图4532位的传输SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。WRBYT;写单字节MOVR1,08HWLPRLCAJCWR1AJMPWR0;跳入写0WLP1DJNZR1,WLPRETWR1;写1SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDAAJMPWLP1WR0;写0终止应答否YNCLRSDASETBSCLNOPNOPNOPNOPCLRSCLAJMPWLP1RDBYT;读单字节MOVR1,08HRLPSETBSDASETBSCLMOVA,P1JNBACC7,RD0;转读0AJMPRD1;转读1RLP1DJNZR1,RLP;8位全接收完毕,转退出RETRD0CLRCMOVA,R2RLCAMOVR2,ACLRSCLAJMPRLP1RD1SETBCMOVA,R2RLCAMOVR2,ACLRSCLAJMPRLP1END开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。开始信号程序STARCLRSDALCALLDELSETBSDALCALLDELSETBSCLCLRSDALCALLDELCLRSCLRET结束信号SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。结束信号程序STOPCLRSDALCALLDELSETBSCLLCALLDELSETBSDARET应答信号接收数据的IC在接收到8BIT数据后,向发送数据的IC发出特定的低电平脉冲,表22示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。应答信号程序MACK;发应答位CLRSDASETBSCLNOPNOPNOPNOPCLRSCLETBSDARETMNACK;发非应答位SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDARET354里程的显示设计用两片74LS07分别驱动LED数码管(共阴型动态显示)和数码管的小数点。用一个开关,用于开电动自行车时里程的计数,并点亮一个指示灯。这个开关在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。本设计采用软件用延时消抖动。编制按键程序一个完善的按键控制程序应具备以下功能1检测有无按键按下,并采取硬件或软件措施,消除按键机械触点抖动的影响。2有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。3准确输出按键值(或键号),以满足跳转指令要求。按键触点的抖动如图4541所示图4541具体工作如下当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。显示处理子程序XSCLMOVA,BMMOVDPTR,TABMOVCA,ADPTRMOVBMD,AMOVA,KMMOVDPTR,TABMOVCA,ADPTRMOVKMD,AMOVA,SKM闭合稳定键按下前沿抖动后沿抖动MOVDPTR,TABMOVCA,ADPTRMOVSKMD,AMOVA,BKMMOVDPTR,TABMOVCA,ADPTRMOVBKMD,ARET本设计采用共阴极LED显示器,LED显示器采用发光二极管显示字段。单片机系统中经常采用的是7段显示器,即LED显示器中有8个发光二极管,代表“ABCDEFG”7个字段和一个全小数点“DP”。共阴极LED显示器的发光二极管负极接地,当发光二极管的正极为高电平时,发光二极管被点亮。使用LED显示器时,工作电流一般为510MA/段,当LED处于全亮状态时,工作电流约为4080MA左右,通常将控制LED显示字符的8位数据称之为段选码。如表4542为共阴和共阳LED数码管几种八段编码表。表4542共阴和共阳LED数码管几种八段编码表共阴顺序小数点暗共阴逆序小数点暗显示数字DPGFEDCBA16进制ABCDEFGDP16进制共阳顺序小数点亮共阳逆序小数点亮0001111113FH11111100FCH40HC0H10000011006H0110000060H79HF9H2010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H501101106DH1011011B6H12H92H106011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H动态显示相关概念所谓动态显示,实质上就是各个不同的LED显示器按照一定的顺序轮流显示。它利用了人眼的“视觉暂留现象”,只要多个LED显示器的选通扫描速率足够快,人眼就观察不到数码管的闪烁现象。动态扫描方式的所有LED段选线并联在一起,只由一个位的I/O口控制,而各个LED的位选线则由另一组I/O口控制。动态LED显示方式的优点是功耗较低,占用CPU的I/O口线少,外围接口简单,但程序编制较之静态显示方式则略显复杂。14在单片机与LED显示器的接口电路中,要使LED数码管正常发光,显示器驱动芯片也很关键。本次设计采用7407来驱动LED显示器。LED显示需注意的几个问题(1)采用动态显示方式编写软件时,应选择合适的延时周期。如时间选择不合适,LED将会不停闪烁,这时可适当调整延时常数即可解决问题。(2)采用动态扫描方式的LED显示电路占用较少的硬件资源,但有时却过多地占用了CPU的资源,如应用系统不允许,可在设计电路中采用静态显示方式,以减少软件的编写难度。显示程序流程图如图4543所示图4543355里程公里数的累计功能设计小车轮周长设定为150毫米,分15等份,即15个脉冲,每个脉冲10毫米为单位,按键闭合否延时消抖动BMD单元内容放入P0开P23延时关P23KMD单元内容放入P0开P22SKMD单元内容放入P0开P21延时关P21BKMD单元内容放入P0开P20延时关P20点亮指示灯显示YN对电动自行车的周长进行测量,到100毫米(到10个脉冲),则BMM单元加1,当100个脉冲到来时,M单元加1,以此类推,即可点亮数码管(BM,KM,SKM,BKM单元的内容)。加一数据处理子程序JCLCLRP10MOVA,BMMINCACJNEA,0AH,BMMJAJMPMJ1BMMJMOVBMM,AAJMPGOONMJ1MOVBMM,00HMOVA,MINCACJNEA,0AH,MJAJMPSMJMJMOVM,AAJMPGOONSMJMOVM,00HMOVA,SMINCACJNEA,0AH,SMJ1AJMPBMJSMJ1MOVSM,AAJMPGOONBMJMOVSM,00HMOVA,BMINCACJNEA,0AH,BMJ1AJMPKMJBMJ1MOVBM,A中断0的流程图如图4551所示图4551图4552里程累计功能各分支流程图流程图4553;流程图4554;流程图4555;中断加一数据处理子程序脉冲是否到来调用显示处理子程序写AT24C01NY现行程序中断示意图如图4552所示中断断点中断服务程序继续执行流程图4556所示。图4553将BMM单元内容放入AABMM加1BMM单元内容是否到10A单元内容放入BMM单元显示数据灭指示灯NYBMM单元内容清0M单元内容放入AAM加1判M单元内容M单元内容是否到10图4554M单元清0SM单元内容放入AASM加1YA单元放入M显示数据NSM单元内容是否到10SM单元清0BM单元内容放入AABM加1判BM单元内容BM单元内容是否到10A单元放入SM显示数据NYBM单元清0KM单元放入AAKM加1YA单元放入BM显示数据KM单元内容是否到10NKM单元清0SKM单元内容放入AA(SKM)加1判SKM单元内容YA单元放入KM显示数据N图4555图4556SKM单元内容是否到10SKM单元清0BKM单元放入AA(BKM)加1BKM单元内容是否到10BMM,M,SM,BM,KM,SKM,BKM,BMD,KMD,SKMD,BKMD清0A单元放入SKMYN显示数据YA单元放入BKM储存24C01显示数据N第4章软件调试41程序的检测与调试1程序的查错手段单片机的应用系统均需借助对应的开发系统(或装置)进行在线仿真,对应用系统的软,硬件进行全面地检测与调试。各种开发系统或装置均提供以下查错手段。(1)单步执行采用单步执行操作可对应用程序每步执行一条指令,可逐条检查这一段程序的执行过程是否符合原设计要求。可直接查出错误所在。宏单步可执行一段程序,如一步就可执行完整个循环程序段。(2)断点设置全速运行可在程序有疑虑的地方设置断点,从设置的起始地址开始,以全速或非全速方式向设定的断点处运行。如果这段程序无语法或逻辑上的错误,则连续运行到设置的断点处停止运行,返回监控状态。如果有错误,则在错误处停止运行,如果进入死循环或者程序跑飞,就会永不停止运行。全速断点运行为检查实时性及中断响应处理等提供了方便。(3)显示器窗口检查(4)实时跟踪记录除上述之外,还有以下功能符号化调试。在原程序中一般均以符号地址,标号等出现,通过汇编自动进行变换和调整,偏移量等均可自动换算和填入。程序的运行。自动生成目标代码和固化。42源程序的检测在源程序进行调试之前,硬件系统必须基本正确,重点对源程序进行检测。(1)对照程序流程图,先对相对独立的功能模块,子程序,中断服务程序等进行仔细地检查,然后对整个主程序按其功能划分成若干程序段进行分段检查,逐步扩大到整个程序系统。检查时重点检查程序的逻辑功能,结构和算法,有关参量和初始值是否完善,正确,关键性指令的选择是否合理,特别是借助开发系统也较难调试正确的隐患,只有通过细心的检查加以排除。(2)硬件系统检查。硬件系统必须排除电源短路和碰线故障,然后空板(没有插上芯片等器件)进行上电检查各电源点是否正确,有关逻辑电平及信号是否正确。确认无误之后逐次插上芯片等器件,借助开发系统可检查出是否有硬件故障。一旦有故障时,开发系统的监控程序将出现不能正常工作的现象。故可采用此法排除硬件系统的一般性故障。有些故障只有通过软件调试才能排除,有时还需通过软件调试修改硬件设计。3源程序的调试源程序的调试一般可分为分调,联调和考机3步进行。6(1)分调首先将基本独立的子程序调试正确,符合原设计要求,用模拟的方法将中断服务程序初调,然后将主程序按相对独立的功能程序段,遵照应用系统运行的逻辑顺序逐段进行调试。A设置并输入一组符合要求的参量,启动程序段运行,观察运行情况或故障的影响及现象。B对出现的问题进行仔细地分析,合理推测,借助开发系统的调试手段,逐步缩小疑点范围,直至找出问题所在进行修改。C分析故障原因。(2)联调在分调基本完成的基础上进行联调,它将与整个系统的硬件,软件,环境密切相关,必须联合在线调试。调试的重点在于主程序与各功能模块程序段之间的连接处,按照整个软件系统的执行顺序,逐个相连进行调试。(3)考机42单片机开发工具开发工具应具以下主要作用(1)系统硬件电路的诊断;(2)程序的输入与修改;(3)除连续运行程序外,具单步运行,设断点运行和状态查询等功能;(4)能将程序固化到EPROM芯片上去。开发工具应具备(1)交叉汇编功能。(2)EPROM编程器。(3)仿真功能。ACPU仿真。BEPROM仿真。通用机开发系统如图521所示图521仿真系统硬件A仿真系统硬件是一种大规模在线可编程芯片,将整个单片机仿真控制电路集成在芯片中;仿真CPU则外置在仿真头上,通过更换不同的仿真头,可对各种单片机进行仿真。B8位/16位兼容,可仿真8位及16位单片机。仿真头用户系统开发模板EPROM写入插座通用计算机系统C采用硬件断点技术,不占用单片机任何资源。D采用串行口与计算机通信,波特率自动设置,最高可达38400。E可配接逻辑分析仪,能实现复杂的组合断点和观察逻辑波形及分析时序关系。仿真系统硬件安装示意图522所示图52243LCA51仿真过程1打开LCA51界面,在文件中新建,输入程序后保存。2打开编译对话框,如图531所示;编译当前文件,加载对话框如图532。仿真系统单5V电源红正黑负串行口及电源电缆34芯仿真电缆仿真头用户板9芯串行口电缆接至计算机串行口图531图532若要把编写的程序烧到AT89C52芯片中,过程如下打开设置选择仿真机,打开仿真机的对话框后,打开通讯口对话框,设置如下。设置对话框如图533,图534所示。图533图534在工具栏中选择芯片固化,如图535所示。图535之后进行一系列的操作。44硬件、软件仿真调试本系统的软件系统全部采用C51来编写,由于一般的仿真器对C51的支持有一定的缺陷,软件调试比较复杂。除了语法差错外,当确认程序没问题时,通过直接把程序烧到单片机来调试。即单独调试好每一个模块,然后再连接成一个完整的系统调试。硬件连线的步骤1连好电脑主机的9针串口联机线,连好电脑主机的USB线短线和仿真器的USB线长线。2仿真器工作时需要的电源电流不大于150MA时,均不需外接电源,直接由电脑的USB接口供电将金属跳冒跳在USB端,能满足仿真要求。在特殊情况下需要的电源电流大于150MA,或你不想用USB接口供电,可自己购买一个5V的直流稳压电源千万注意直流稳压电源插座是内正外负用直流稳压电源供电,拔掉连在电脑主机的USB线短线,将金属跳冒跳在OUT端。仿真器的本质仿真器就是通过仿真头用软件来代替了在目标板上的51芯片,关键是不用反复的烧写,不满意随时可以改,可以单步运行,指定端点停止等等,调试方面极为方便。仿真器的原理仿真器内部的P口等硬件资源和51系列单片机基本是完全兼容的。仿真主控程序被存储在仿真器芯片特殊的指定空间内,有一段特殊的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作系统一样控制仿真器的正确运转。1硬件、软件仿真调试经过硬件、软件单独调试后,即可进入硬件、软件联合仿真调试阶段,找出硬件、软件之间不相匹配的地方,反复修改和调试。45编制单片机应用程序的步骤和难点如何编写单片机应用程序,这是一个实践性很强的题目,也是一项艰苦而细致的工作。如果按照一定的步骤并且找出难点,事先对这些难点加以处理,能够收到事半功倍的效果。下面是开发中必经的几个步骤和可能遇到的难点的处理。编制步骤1搞清功能和编写方案接到一个单片机项目设计之后,并不是马上动手编写程序,而是仔细研究技术要求或者技术说明,根据这些技术要求和技术说明,把程序应该具备的主要功能写清楚,写仔细,这是最关键的工作,否则在设计完成以后会发现有些功能由于事先没有考虑清楚再重新设计将会很麻烦,可能有些需要重新增加的功能很容易补充,而有些可能由于没有事先考虑周全而无法实现。2编写总流程图和各功能模块流程图根据要完成的程序功能写出总流程图,根据总流程图把整个程序划分成几个主要的功能模块,每个功能模块都要写出基本流程图,这主要是为以后的程序编写起到一个指导作用。当然,在实际的程序编写过程中肯定会有一些改动,一个基本的流程会指导写程序的过程中不会出现太大的偏差。3准备编程所需的资料这些资料主要是编程语言方面的书籍、杂志等。因为程序语言的有些资料不可能记得太清楚,如每条指令的含义,具体操作每条指令所牵涉的硬件电路等。如果资料准备得比较充分,可以放在案边,若有需要,顺手查阅。4人机界面的编程用单片机实现的项目人机界面相对简单。若为LED显示,应根据LED的位数选取简单、明了、用户一看便知的提示符;显示的数据位数应充分考虑技术的要求。5分析编程的难点和技术解决方案为了能比较顺利地完成程序设计,应根据程序所完成的功能和程序流程对整个程序的框架分析一下,并根据自己掌握的技能定位整个程序的难点,然后找到最佳的算法。6写程序在上面的准备工作完成后,就可以着手编写程序。因为有了明确的程序流程,有了充足的资料,可能遇到的难点基本上找到了解决方法。这样,事先准备得比较充分,即使在以后的程序编写过程中遇到困难,也较易解决。这样就可以节省很多时间,以便静下心来认真按照方案和流程编写程序。另外,一般写完一个功能程序就进行调试,通过后再编写另外一个功能代码,这样可以防止全部代码编写完毕后再调试可能带来的相互影响,从而可以搞清楚到底是哪部分程序有问题。7程序调试程序的调试过程是一个比较复杂的过程,有些需要高度的技巧和一定的方法。一般的编程软件都提供单步、单步越过、断点、运行到光标处等基本方法,一般掌握这几种基本方法就可以解决绝大部分问题。经过长时间的调试实践之后自然就可以掌握一定的调试技巧,即熟能生巧。46故障分析1编好的C51程序用仿真器运行一切正常,但写入片子

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论