基于单片机控制的电动自行车里程表的毕业设计(含原理图-PCB图-中英文翻译-程序).doc
电动自行车里程表的设计序 言本文介绍里程表设计以单片机和霍尔传感器为核心。霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的里程数据能直观的显示给使用者。自行车里程表是用于远距离连续测量自行车行驶距离的仪表。它分为电源、霍尔传感器和显示器3部分。目前,里程表普遍使用在汽车和摩扦车上,是一种机械测量装置,测试精度相对低,自行车上使用里程表的还很少见。针对这种情况,研制新型的数字化里程表用于自行车上是非常必要的。本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。传统的机械式里程表虽然稳定可靠,但功能单一,随着电子技术的迅猛发展,电子式里程表得以广泛应用。一种以单片机为核心的里程表,它不仅可以显示车辆行驶的总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力。这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。第 1 章 绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。电动自行车里程表是电动自行车的重要配件,在电动自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。1.1 课题背景里程表的原理很简单,因为汽车车轮的直径已知,车轮的圆周长便是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。这样简单的原理古人就已经发现,并且开始使用了。“记里鼓车”就是这样的装置,它是利用上述原理,再加上巧妙的机构使得车轮每转一定圈数就自动敲一下鼓,此时只要有专人把它记下了,就可以得到所走里程。此装置十分巧妙无论白天、黑夜均可使用,而且盲人也可使用,体现出了我国古代劳动人民的聪明才智。不过,如果车上没有人默记鼓声数目的话,单靠记里鼓车本身还不能累计一共走了多少里。而且车停下来之后谁也不知道这车曾经走过多少里路,这是美中不足之处。从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LED直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。1.2 里程表的发展现在汽车上的里程表可就不一样了,它克服了“记里鼓车”的不足之处,既能告诉你这次走了多少公里,也能记忆自从出厂以来一共走了多少公里,于是,车辆是否需要大修,发动机比例关系是否应该报废,全都有记录可依。汽车发动机的轴把动力传给变速箱,从变速箱的输出轴到车轮的传动比是不变的。在变速箱的输出轴上装有一根“软轴”,一直通到驾驶员面前的里程表里去。所谓“软轴”就是像自行车线闸用的拉线那样有钢丝芯的螺旋管,管壁和内芯之间有润滑油,外管固定而内芯可以转动,这个内芯的转速与车轮的转速有着恒定的比例关系。软轴通到车速表,使得指针能把车的行驶速度指示出来。同时,软轴旋转还经过蜗轮蜗杆传到车速表中间的滚轮计数器上,把车轮的转数所代表的里程数累计了下来,因为车速和里程都是靠同一根软轴传来的旋转动作驱动的,所以这两个表在一起,前者用指针指示,后者由滚轮计数器累计。新型小汽车的里程表里包括由同一软轴带动的两个滚轮计数器,分别累计本次里程和总里程。本次里程通常有四位数,供短期计数,这是可以清零的;总里程则有六位数,不能清零。本次里程的单独指示和清零对于出租车的计费十分不方便。最近电子式车速里程表逐步推广,它不用软轴,而是在变速箱输出轴上安装脉冲发生器,用导线把电脉冲传到仪表里,用脉冲频率指示速度,用脉冲计数器累计里程。看起来电子式车速里程表比先前的机械电磁式的更合理,因为它不用软轴传动。但是因为机械电磁式的价格比较便宜,在目前汽车里用得仍然比较多。 汽车里程表主要分为机械式和电子式两种,目前市场上的大部分新车型都采用电子式里程表,而配备机械式里程表的大都属于较老车型,在二手车市场上比较多见,像老款的捷达、普桑和富康,这些热销车型都是机械式里程表。回调里程表其实很简单,尤其是机械式里程表,几分钟就可以了。而调整电子式里程表的成本较高,需要专门的设备。现在市面上就有一种专门针对电子式里程表的调表仪器。早期的机械软轴的里程表几乎已经消失了,取而代之的是电子式的里程表和液晶显示屏,过去可以通过拨数码齿轮的方式调整里程表,现在这些方法都行不通,不过调表的需求并不随调整难度的增加而减少,如卖车和新车的都需要减小里程数掩盖车子真实行驶里程。公家车的司机又需要增加里程数。如果减小液晶表的公里数只能通过编程器调整存储片数据来实现,这需要专门的设备和知识,普通人要调整的确不易。但如果要增加公里数实现起来就要容易很多了,我们只要给车速传感器提供一个符合要求的信号就可以了。1.3 设计的主要内容及技术指标单片机软件设计程序主要包括里程设计模块;存储历史里程数据设计模块;里程的显示设计模块;里程公里数的累计设计模块;里程公里数的清0设计模块。里程计数时有一盏指示灯闪烁;用AT24C01进行对历史里程数据存储;用共阴7段动态显示的数码管进行显示公里数;用个开关实现对里程公里数的清0功能;用霍尔传感器实现对里程车轮圈数的累计功能。主要技术指标:一. 完成里程的显示功能二能存贮历史里程数据三能够清除历史数据四有一盏指示灯第 2 章 硬件的设计2.1 单片机简介单片机是单片微型计算机(Singlc-Chip Microcomputer)的简称。单片机是将中央处理器(CPU),程序存贮器(ROM或EPROM),随机存贮器(RAM),定时器/计数器,并行及串行I/O口等电路集成在一块芯片上做成的计算机。单片机的典型结构如图2-1-1所示。定时 计数器时钟CPU串行口并行口ROM RAM单片机的典型结构(图2-1-1)单片机与一般的非单片型微型机相比,具有以下特点:Ø 具有较强的通用性又有相当的专用性,尤其适合于各种控制系统。Ø 片内带有定时器/计数器。Ø 片内设有多个I/O接口,便于系统扩展及信息交换。Ø 使用汇编语言,指令系统的指令字节数较少,程序执行速度快,节省存贮器。Ø 多品种,多系列。2.2 AT89系列单片机简介AT89系列单片机是以8051为内核,结合自己的技术优势构成的,所以它和8051是兼容的系列。因此,AT89系列对于以8051为基础的应用系统而言,是十分容易进行取代和构成的。而且对于熟悉8051的用户来说,选用AT89系列单片机进行系统设计也是轻而易举的。AT89系列单片机具有下列很明显的优点: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.3 AT89C52系列单片机的介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes 的可反复擦写的只读程序存储器(PEROM)和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。主要性能参数: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-1 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 XTAL2NCXTAL1 外部振荡信号输入GND图3.3-2中断:AT89C52共有6个中断向量:两个外中断(INT0和INT1),3个定时器中断(定时器0,1,2)和串行口中断。所有这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA,它能控制所有中断的允许或禁止。AT89C52编程方法:1. 在地址线上加上要编程单元的地址信号。2. 在数据线上加上要写入的数据字节。3. 激活相应的控制信号。4. 在高电压编程方式时,将/Vpp端加上+12V编程电压。5. 每对Flash存储阵列写入一个字节或每写入一个程序加密位,加入一个 ALE/编程脉冲。每个字节写入周期是自身定时的,通常约为1.5ms。重复1-5步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。 AT89C52的极限参数:工作温度:-55 to +125 储藏温度:-65 to +150任一引脚对地电压:-1.0V to +7.0V最高工作电压:6.6V直流输出电流:15.0mA2.4 里程表各部分电路介绍本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,LED显示模块及74LS07驱动器构成。2.4.1 霍尔传感器电路霍尔传感器电路图如下图3.4.1-1所示。图3.4.1-12.4.2 里程指示电路霍尔传感器发出一个低电平脉冲,里程显示时四个数码管点亮后开始计数,表明电动自行车正在行驶中,一盏指示灯一直闪烁着。电路如图3.4.2-1所示。图3.4.2-12.4.3 里程数据存储电路里程数据的存储电路是本次设计的关键电路,单片机首先向AT24C01发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向AT24C01的内部地址传送数据。当显示里程时,单片机首先向AT24C01发送读信号,然后确认后,单片机从AT24C01内部的地址向单片机的读出单元字节读出数据,供显示所用。因此,最终可保证掉电时数据不丢失。IC总线的的介绍:IC总线是双线串行总线。IC总线采用二线传输,即SDA串行数据线和SCL串行时钟线。总线和器件之间的数据传送均由SDA数据线完成。一个IC总线系统里的所有外围器件均采用器件地址和引脚地址的编址方式。系统中主CPU对任何节点的寻址没有采用传统的片选线方式,而是采用纯软件的寻址方式。为了能使总线上的所有节点器件输出实现“线”与逻辑功能,IC器件输出端必须是漏极或集电极开路结构,即SDA和SCL接口线上必须加上拉电阻。里程数据存储电路,如图3.4.3-1: 图3.4.3-12.4.4 时钟电路 图3.4.4-1 在图3.4.4-1的电路中,电容器C1和C2对振荡频率有微调作用,通常的范围:30±10PF;石英晶体选择6MHZ或12MHZ都可以。其结果只是机器周期时间不同,影响计数器的计数初值。2.4.5 LED显示模块电路及74 LS07驱动器 LED显示器采用动态显示,用74LS07驱动共阴极LED数码管。LED显示模块电路图,如图3.4.5-1所示。LED数码管结构图,如图3.4.5-2(a),(b)为共阴极型,(c)为共阳极型。 图3.4.5-1图3.4.5-2OC门驱动器用7407,7407 即TTL 集电极开路六正相高压驱动器.当7407输出低电平时,没有电流流过LED,当7407输出为开路状态时,电流经100限流电阻流入LED显示器,每个七段LED的公共端都接一个7407驱动器。7407模型如图3.4.5-3: 图3.4.5-3 7407引脚如图3.4.5-4: 图3.4.5-4 第 3 章 软件的设计3.1 系统的总体设计一个完整的单片机系统,包括软硬件两个方面。硬件是系统可靠运行的“载体”,是基础,而软件则是使“载体”产生动力的发电机,二者相辅相成,缺一不可。从设计者的角度出发,一个硬件电路的设计过程往往就是设计者的经验不断积累的过程。总体设计流程:在设计硬件电路时:一般的流程是:(1) 器件选择(包括单片机和外围芯片的选择)(2) 电路图绘制(3) PCB制板(4) 硬件检查和排错(5) 硬件电路调试完毕只有在硬件平台建立之后才能更好进入软件系统的调试。在进行软件系统的设计时,设计者首先要建立完整,总体的概念,一个完整的软件系统是由各个功能模块组成的。程序设计者要时刻牢记如何将那些独立,分散的子程序模块通过主程序连接起来,并最终实现系统的目标功能。3.2 单片机应用软件设计应用软件应在硬件电路的支持下能可靠地实现应用系统的各种功能。它应具有下列特点:(1) 结构清晰,简捷,流程合理。(2) 各功能程序模块化,子程序化,既便于调试,链接,也便于移植,修改。(3) 程序存储区,数据存储区规划合理,既节约内存容量,又便于操作。(4) 各功能程序的运行状态,运行结果以及运行要求尽量设置状态标志,以便查询,控制与程序判转。(5) 调试修改后,还应规范化,以利于交流,借鉴,为模块化,标准化打下基础。(6) 做好抗干扰设计,这是计算机应用系统提高可靠性的有力措施。(7) 设置自诊断程序,系统工作前先运行自诊断程序,检查系统各特征状态参数是否正常,以提高运行的可靠性。开发步骤:(1) 确定任务:a) 确定系统的功能,指标,成本 b) 完成期限(2) 总体设计:a) 调研 b) 机型选择 c) 软硬件任务划分 I. 硬件开发 一绘出线路图 二选购元器件 三组装 四调试硬件 II. 软件开发一建立数学模型,确定算法,安排数据结构二设计,编制各子程序模块三各子程序进行调试四各子程序连接起来调试(3) 样机联调: a) 软,硬件结合起来调试 b) 找出错误,修改软,硬件 c) 实时仿真,直至满足设计要求(4) 产品定型: a) 形成工艺 b) 编写技术文件3.3 中断控制和的中断请求信号由外部产生并输入,称外部中断,其余的中断请求信号均由主机内部产生,故称为内部中断。本次里程表的设计只用到外部中断:外部中断0请求中断输入端口(P3.2引脚),低电平或负跳变(从高到低)有效。中断屏蔽: AT89C52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求开放(允许)或屏蔽(禁止)的控制。中断响应的过程:AT89C52的指令系统中设有两条返回指令:RET和RETI。调用子程序中应选用RET返回指令,中断服务程序中应选用RETI返回指令,如采用的是RET返回指令,虽然也能使中断服务程序返回原断点处继续往下执行原程序,但它不会告知中断控制系统,现行中断服务程序已执行完毕,致使中断控制系统误认为仍在执行中断服务程序而屏蔽新的中断请求。因此,中断服务程序的返回必须用RETI指令,而不能用RET返回指令代替。中断响应时间:从中断源发生中断请求到主机响应中断,转去执行中断服务程序需要3-8个机器周期。外部中断0矢量地址:0003H。3.4 I/O口的控制方式在单片机中,为了实现数据的输入输出传送,通常使用三种控制方式。即:无条件传送方式,查询方式和中断方式。无条件传送方式适用于以下器件或设备的输入输出:例如,机械或电子开关,指示灯,发光二极管,数码管等。它们随时处于“准备好”状态方便数据的传输。查询方式:为了实现查询方式的数据输入输出传送,需要由接口电路提供部,器件或设备的状态,并以软件方法进行状态测试。因此,这是一种软,硬件方法结合的数据传送方式。程序查询流程如图4.4-1所示。读入状态信息 N准备好了吗?数据传送 Y图4.4-1中断方式: 中断方式与查询方式的主要区别在于如何知道,器件或外设是否为数据传输作好了准备。查询方式是主机主动查询。而中断方式则为部,器件或外设主动请求。采用中断方式进行数据传输时,当部,器件或外设为数据传输已作好准备之后,就向主机发出中断请求(相当于通知主机),主机在接收到中断请求之后,在允许中断的情况下,响应中断请求,暂停正在执行的原程序,转而去为部,器件或外设的数据提供传输服务。待服务完成之后,程序返回,主机再从断点处继续执行原程序。3.5 里程表的软件设计3.5.1 总体设计思路将各英寸的电动自行车轮胎车轴内置一个小车轮,设小车轮周长约为150毫米(直径为47.7毫米),以10毫米为单位分15等份,即15个脉冲,小车轮的转动,方便大车轮的周长计算,更便于行驶公里数的计算,就不需要将圈数转换成公里数,避开了除法算法,降低了软件程序的复杂度。假设小车轮周长约为150毫米(直径为47.7毫米),不是毫无根据的。由22英寸到28英寸电动自行车的规格见下表4.5.1-1所示。大车轮与小车轮的模拟图如图4.5.1-2所示。 表4.5.1-1规格(英寸)直径(毫米)周长(毫米)22558.81752 24609.61912 26660.42072 28771.22233大车轮 小车轮l 图4.5.1-2最小的电动自行车尺寸的车轮周长为1752毫米,小车轮的周长要略小于大车轮的周长,假设为1500毫米,在将其值缩小10倍,因此得到小车轮的周长值。主程序流程图如图4.5.1-3所示。 初始化 读AT24C01判内部数据处理P1和P3规定作为电平拉高输入口开总中断和外部中断,设堆栈指针SP开P0和P2口按下P1.1接的开关按下P3.6接的开关END图4.5.1-3 判内部数据处理:AT24C01出厂时原有数据BM单元是否为0FFH,等于0FFH时,BM单元清0,写到AT24C01中,不等于时再次判断AT24C01出厂时原有数据KM单元是否为0FFH,等于0FFH时,KM单元清0, 写到AT24C01中,以此类推,判断到BKM单元为止。当AT24C01出厂时原有数据BKM单元不为0FFH,调用显示处理子程序。按下P3.6接的开关:调用计数处理子程序,计数时P1.0口接的指示灯会闪烁点亮。BMM, M,SM,BM,KM,SKM,BKM单元加处理时,判断是否到10进1,BMM,M,SM单元每加一次都不需要存人AT24C01和显示,BM加处理后储存AT24C01,并显示。按下P1.1接的开关:调用清除数据子程序。3.5.2 里程的设计里程数据存放单元见如下表4.5.2-1所示。 表4.5.2-1BKMSKMKMBMSMMBMMSMMMM50H55H54H53H52H51H56H因为电动自行车里程表的硬件设计里程的显示部分是采用四个共阴极的数码管,所以只能显示BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)。但设计时从BMM(分米)开始置存放单元并显示,每按一下P3.6开关,存放单元数据进行累加一,而BMM(分米),M(米),SM(十米)置存储单元,虽然没显示但骑电动自行车时BMM(分米),M(米),SM(十米)累加的。因此BMM(分米),M(米),SM(十米)加处理后不存储AT24C01,而BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)加处理后存储AT24C01后再在数码管上显示。3.5.3 存贮历史里程数据的设计存贮历史里程数据要用到IC总线,IC (InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。IC总线协议定义如下: 只有在总线非忙时才被允许进行数据传送。 在数据传送时,当时钟线为高电平时,数据线必须为固定状态,不允许有跳变;当时钟线为高电平时,数据线的任何电平变化将被当作总线的启动或停止条件。IC总线的数据传输和器件寻址:1总线数据传送的起始和停止标志 IC总线每一次数据传送,都由主器件发送起始信号开始,发送停止信号结束,当SCL时钟线为高电平,SDA数据线出现高电平向低电平的下降沿信号时即为总线的起始信号;相反,当SDA数据线出现由低电平向高电平的上升沿信号时即为总线的停止信号。2. IC总线上的数据传输格式主CPU发生起始信号表明一次数据传送的开始,其后为寻址字节,寻址字节由高7位地址和1位方向位组成,方向位表明CPU与从器件之间的数据传送方向,当该位为“0” 时表明CPU对从器件进行写操作,为“1”时是读操作。寻址字节后是按指定地址读,写操作的数据字节与应答位。主CPU发出寻址信号后,地址与自己相符的从器件便会产生一个应答信号。数据字节的后面也跟随一个应答信号,应答信号在第9个时钟位上出现。3本设计常用IC总线芯片的器件和引脚地址。见表4.5.3-1所示。 表4.5.3-1 型号 种类 器件地址 引脚地址AT24C01 EEPROM 1010 A2A1A0AT24C01是美国ATMEL公司生产的串行EEPROM芯片,容量分别为1288位,主要特性如下: 具有页写功能,AT24C01为4B; 可擦写次数100000次; 数据保存周期为100年; 8引脚DIP或SOIC封装。AT24C01的引脚排列,接口电路图如如图2.3.2-1所示,说明如下: A0,A1,A2为器件地址选择线; SDA为串行数据线; SCL为串行时钟线; WP(EN)为写保护端(当该端口为高电平时,不可对存储器写操作); Vcc为正电压1.8-5.5V; Vss为地。IC总线基本操作:IC规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件(本文为AT24C01)都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器CPU)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在 SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。AT24C系列串行PROM具有IC总线接口功能,功耗小,宽电源电压(根据不同型号2.5V6.0V),工作电流约为3mA,静态电流随电源电压不同为30A110A。AT24C系列PROM接口及地址选择:由于IC总线可挂接多个串行接口器件,在IC总线中每个器件应有唯一的器件地址,按IC总线规则,器件地址为7位数据(即一个IC总线系统中理 论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4位(D7D4) 为器件型号地址,不同的IC总线接口器件的型号地址是厂家给定的,如AT24C系列PROM的型号地址皆为1010,器件地址中的低3位为引脚地址 A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。AT24C系列PROM读写操作软件实现方法: 对AT24C系列PROM的读写操作完全遵守I2C总线的主收从发和主发从收的规则。AT24C01的写操作: 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序连续写操作是对E2PROM连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载字节数也不同。AT24C01/02 8字节/每页。AT24C01的读操作: 读操作有三种基本操作:当前地址读、随机读和顺序读。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。 连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。 在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA高电平)随后发停止信号。IC总线共有9个归一化子程序组成,分别是:1. 启动信号子程序2. 终止信号子程序3. 发送应答位(A)子程序4. 发送应答非位()子程序5. 检查应答位子程序6. 发送单字节子程序7. 接收单字节子程序8. 发送N字节子程序9. 接收N字节子程序标记符号的定义: 1. VSDA: IC总线数据线;2. VSCL:IC总线时钟线;3. SLA:发送/接收寻址字节内RAM存储单元;4. NUMB:发送/接收数据字节数N内RAM存储单元;5. MTD:发送数据内RAM存储区首地址;6. MRD:接收数据内RAM存储区首地址;由于EPROM的半导体工艺特性,对EPROM的写入时间需要5-10ms,但AT24C01串行EPROM芯片内部设置了一个具有SRAM性质的输入缓冲器,称为页写缓冲器。CPU对该芯片写操作时,AT24C01芯片先将CPU输入的数据暂存页写缓冲器内,然后慢慢写入EPROM中。因此,CPU对AT24C01的EPROM一次写入的数据,受到该芯片页写缓冲器容量的限制。页写缓冲器的容量:AT24C01为8B.若CPU需写入超过芯片页写缓冲器容量或超过页写缓冲器页内最大地址的数据,应在一页写完后,隔5-10ms重新启动一次写操作。保存数据子程序:WTDA:MOV A,#01H MOV R0,BM LCALL WT24 ACALL DEL MOV A,#02H MOV R0,KM LCALL WT24 ACALL DEL MOV A,#03H MOV R0,SKM LCALL WT24 ACALL DEL MOV A,#04H MOV R0,BKM LCALL WT24 RET存贮历史里程数据的流程图如图4.5.3-2所示:启动信号STAR发送数据发送寻址字节应答将AT24C01分别读入到BM,KM,SKM,BKM单元中 N应答否?Y终 止 图4.5.3-2位的传输: SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。WRBYT: ;写单字节 MOV R1,#08HWLP: RLC A JC WR1AJMP WR0 ;跳入写0WLP1: DJNZ R1,WLP RETWR1: ;写1 SETB SDA SETB SCL NOP NOP NOP NOP CLR SCL CLR SDA AJMP WLP1WR0: ;写0 CLR SDA SETB SCL NOP NOP NOP NOP CLR SCL AJMP WLP1RDBYT: ;读单字节 MOV R1,#08HRLP: SETB SDA SETB SCL MOV A,P1 JNB ACC.7,RD0 ;转读0AJMP RD1 ;转读1RLP1: DJNZ R1,RLP ;8位全接收完毕,转退出 RETRD0: CLR C MOV A,R2 RLC A MOV R2,A CLR SCL AJMP RLP1RD1: SETB C MOV A,R2 RLC A MOV R2,A CLR SCL AJMP RLP1 END开始信号: SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。开始信号程序:STAR: CLR SDA LCALL DEL SETB SDA LCALL DEL SETB SCL CLR SDA LCALL DELCLR SCL RET结束信号: SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。结束信号程序:STOP: CLR SDA LCALL DEL SETB SCL LCALL DEL SETB SDA RET应答信号: 接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到