• 3.90 MB
  • 2022-04-22 13:43:08 发布

基于单片机的汽车里程表设计.doc

  • 77页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'湖南工业职业技术学院电动自行车里程表的软件设计序言本文介绍里程表设计以单片机和霍尔传感器为核心。霍尔传感器将到来的低电平脉冲信号输入到单片机进行控制与计算,再采用LED模块进行显示,使得电动自行车的里程数据能直观的显示给使用者。自行车里程表是用于远距离连续测量自行车行驶距离的仪表。它分为电源、霍尔传感器和显示器3部分。目前,里程表普遍使用在汽车和摩扦车上,是一种机械测量装置,测试精度相对低,自行车上使用里程表的还很少见。针对这种情况,研制新型的数字化里程表用于自行车上是非常必要的。本文介绍的自行车里程表是由电源稳压系统供电,AT89C52单片机为中央处理器,结合高精度的控制电路,方便地实现了智能化、高精度、高可靠性、高效率的自行车里程表的设计,并且使用方便。里程表广泛应用于各类机车,包括厂矿企业所使用的电机车和汽车、摩托车等。传统的机械式里程表虽然稳定可靠,但功能单一,随着电子技术的迅猛发展,电子式里程表得以广泛应用。一种以单片机为核心的里程表,它不仅可以显示车辆行驶的总里程,也可显示一段时间的阶段里程,并且具有较强的再开发能力。这一切都是因为利用了单片机系统强大的数据存储和处理控制功能。里程表以单片机AT89C52为核心,由系统输入、单片机部分和系统输出组成。第77页共76页 湖南工业职业技术学院第1章绪论单片机自从推出以来,以其超小型化、结构紧凑、可靠性高、成本低等优点被人们广泛接受,从而应用于工业、电讯、数据处理、仪器仪表等多方面。电动自行车里程表是电动自行车的重要配件,在电动自行车仪表中占重要位置,但几十年来其发展变化并不大,现在国外很多车中使用了数字里程表,但在国内还并不多见。1.1课题背景里程表的原理很简单,因为汽车车轮的直径已知,车轮的圆周长便是恒定不变的。由此可以计算出每走一里路车轮要转多少圈,这个数也是恒定不变的。因此只要能够自动把车轮的转数积累下来,然后除以每一里路对应的转数就可以得到行驶的里程了。这样简单的原理古人就已经发现,并且开始使用了。“记里鼓车”就是这样的装置,它是利用上述原理,再加上巧妙的机构使得车轮每转一定圈数就自动敲一下鼓,此时只要有专人把它记下了,就可以得到所走里程。此装置十分巧妙无论白天、黑夜均可使用,而且盲人也可使用,体现出了我国古代劳动人民的聪明才智。不过,如果车上没有人默记鼓声数目的话,单靠记里鼓车本身还不能累计一共走了多少里。而且车停下来之后谁也不知道这车曾经走过多少里路,这是美中不足之处。从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用LED直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。1.2里程表的发展现在汽车上的里程表可就不一样了,它克服了“记里鼓车”的不足之处,既能告诉第77页共76页 湖南工业职业技术学院你这次走了多少公里,也能记忆自从出厂以来一共走了多少公里,于是,车辆是否需要大修,发动机比例关系是否应该报废,全都有记录可依。汽车发动机的轴把动力传给变速箱,从变速箱的输出轴到车轮的传动比是不变的。在变速箱的输出轴上装有一根“软轴”,一直通到驾驶员面前的里程表里去。所谓“软轴”就是像自行车线闸用的拉线那样有钢丝芯的螺旋管,管壁和内芯之间有润滑油,外管固定而内芯可以转动,这个内芯的转速与车轮的转速有着恒定的比例关系。软轴通到车速表,使得指针能把车的行驶速度指示出来。同时,软轴旋转还经过蜗轮蜗杆传到车速表中间的滚轮计数器上,把车轮的转数所代表的里程数累计了下来,因为车速和里程都是靠同一根软轴传来的旋转动作驱动的,所以这两个表在一起,前者用指针指示,后者由滚轮计数器累计。新型小汽车的里程表里包括由同一软轴带动的两个滚轮计数器,分别累计本次里程和总里程。本次里程通常有四位数,供短期计数,这是可以清零的;总里程则有六位数,不能清零。本次里程的单独指示和清零对于出租车的计费十分不方便。最近电子式车速里程表逐步推广,它不用软轴,而是在变速箱输出轴上安装脉冲发生器,用导线把电脉冲传到仪表里,用脉冲频率指示速度,用脉冲计数器累计里程。看起来电子式车速里程表比先前的机械电磁式的更合理,因为它不用软轴传动。但是因为机械电磁式的价格比较便宜,在目前汽车里用得仍然比较多。汽车里程表主要分为机械式和电子式两种,目前市场上的大部分新车型都采用电子式里程表,而配备机械式里程表的大都属于较老车型,在二手车市场上比较多见,像老款的捷达、普桑和富康,这些热销车型都是机械式里程表。回调里程表其实很简单,尤其是机械式里程表,几分钟就可以了。而调整电子式里程表的成本较高,需要专门的设备。现在市面上就有一种专门针对电子式里程表的调表仪器。早期的机械软轴的里程表几乎已经消失了,取而代之的是电子式的里程表和液晶显示屏,过去可以通过拨数码齿轮的方式调整里程表,现在这些方法都行不通,不过调表的需求并不随调整难度的增加而减少,如卖车和新车的都需要减小里程数掩盖车子真实行驶里程。公家车的司机又需要增加里程数。如果减小液晶表的公里数只能通过编程器调整存储片数据来实现,这需要专门的设备和知识,普通人要调整的确不易。但如果要增加公里数实现起来就要容易很多了,我们只要给车速传感器提供一个符合要求的信号就可以了。第77页共76页 湖南工业职业技术学院1.2设计的主要内容及技术指标单片机软件设计程序主要包括里程设计模块;存储历史里程数据设计模块;里程的显示设计模块;里程公里数的累计设计模块;里程公里数的清0设计模块。里程计数时有一盏指示灯闪烁;用AT24C01进行对历史里程数据存储;用共阴7段动态显示的数码管进行显示公里数;用个开关实现对里程公里数的清0功能;用霍尔传感器实现对里程车轮圈数的累计功能。主要技术指标:一.完成里程的显示功能二.能存贮历史里程数据三.能够清除历史数据四.有一盏指示灯第77页共76页 湖南工业职业技术学院第2章硬件的设计2.1单片机简介单片机是单片微型计算机(Singlc-ChipMicrocomputer)的简称。单片机是将中央处理器(CPU),程序存贮器(ROM或EPROM),随机存贮器(RAM),定时器/计数器,并行及串行I/O口等电路集成在一块芯片上做成的计算机。单片机的典型结构如图2-1-1所示。定时计数器时钟CPU串行口并行口ROMRAM单片机的典型结构(图2-1-1)单片机与一般的非单片型微型机相比,具有以下特点:Ø具有较强的通用性又有相当的专用性,尤其适合于各种控制系统。Ø片内带有定时器/计数器。Ø片内设有多个I/O接口,便于系统扩展及信息交换。Ø使用汇编语言,指令系统的指令字节数较少,程序执行速度快,节省存贮器。Ø多品种,多系列。2.2AT89系列单片机简介第77页共76页 湖南工业职业技术学院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.2AT89C52系列单片机的介绍AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。主要性能参数:1.与MCS-51产品指令和引脚完全兼容第77页共76页 湖南工业职业技术学院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:振荡器反相放大器的输出端。第77页共76页 湖南工业职业技术学院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.0Vto+7.0V最高工作电压:6.6V直流输出电流:15.0mA第77页共76页 湖南工业职业技术学院2.2里程表各部分电路介绍本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,LED显示模块及74LS07驱动器构成。2.2.1霍尔传感器电路霍尔传感器电路图如下图3.4.1-1所示。图3.4.1-12.2.2里程指示电路霍尔传感器发出一个低电平脉冲,里程显示时四个数码管点亮后开始计数,表明电动自行车正在行驶中,一盏指示灯一直闪烁着。电路如图3.4.2-1所示。第77页共76页 湖南工业职业技术学院图3.4.2-12.2.1里程数据存储电路里程数据的存储电路是本次设计的关键电路,单片机首先向AT24C01发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向AT24C01的内部地址传送数据。当显示里程时,单片机首先向AT24C01发送读信号,然后确认后,单片机从AT24C01内部的地址向单片机的读出单元字节读出数据,供显示所用。因此,最终可保证掉电时数据不丢失。IC总线的的介绍:IC总线是双线串行总线。IC总线采用二线传输,即SDA串行数据线和SCL串行时钟线。总线和器件之间的数据传送均由SDA数据线完成。一个IC总线系统里的所有外围器件均采用器件地址和引脚地址的编址方式。系统中主CPU对任何节点的寻址没有采用传统的片选线方式,而是采用纯软件的寻址方式。为了能使总线上的所有节点器件输出实现“线”与逻辑功能,IC器件输出端必须是漏极或集电极开路结构,即SDA和SCL接口线上必须加上拉电阻。里程数据存储电路,如图3.4.3-1:图3.4.3-1第77页共76页 湖南工业职业技术学院2.2.1时钟电路图3.4.4-1在图3.4.4-1的电路中,电容器C1和C2对振荡频率有微调作用,通常的范围:30±10PF;石英晶体选择6MHZ或12MHZ都可以。其结果只是机器周期时间不同,影响计数器的计数初值。2.2.2LED显示模块电路及74LS07驱动器LED显示器采用动态显示,用74LS07驱动共阴极LED数码管。LED显示模块电路图,如图3.4.5-1所示。LED数码管结构图,如图3.4.5-2(a),(b)为共阴极型,(c)为共阳极型。图3.4.5-1第77页共76页 湖南工业职业技术学院图3.4.5-2OC门驱动器用7407,7407即TTL集电极开路六正相高压驱动器.当7407输出低电平时,没有电流流过LED,当7407输出为开路状态时,电流经100限流电阻流入LED显示器,每个七段LED的公共端都接一个7407驱动器。7407模型如图3.4.5-3:图3.4.5-37407引脚如图3.4.5-4:图3.4.5-4第77页共76页 湖南工业职业技术学院第3章软件的设计3.1系统的总体设计一个完整的单片机系统,包括软硬件两个方面。硬件是系统可靠运行的“载体”,是基础,而软件则是使“载体”产生动力的发电机,二者相辅相成,缺一不可。从设计者的角度出发,一个硬件电路的设计过程往往就是设计者的经验不断积累的过程。总体设计流程:在设计硬件电路时:一般的流程是:(1)器件选择(包括单片机和外围芯片的选择)(2)电路图绘制(3)PCB制板(4)硬件检查和排错第77页共76页 湖南工业职业技术学院(5)硬件电路调试完毕只有在硬件平台建立之后才能更好进入软件系统的调试。在进行软件系统的设计时,设计者首先要建立完整,总体的概念,一个完整的软件系统是由各个功能模块组成的。程序设计者要时刻牢记如何将那些独立,分散的子程序模块通过主程序连接起来,并最终实现系统的目标功能。3.1单片机应用软件设计应用软件应在硬件电路的支持下能可靠地实现应用系统的各种功能。它应具有下列特点:(1)结构清晰,简捷,流程合理。(2)各功能程序模块化,子程序化,既便于调试,链接,也便于移植,修改。(3)程序存储区,数据存储区规划合理,既节约内存容量,又便于操作。(4)各功能程序的运行状态,运行结果以及运行要求尽量设置状态标志,以便查询,控制与程序判转。(5)调试修改后,还应规范化,以利于交流,借鉴,为模块化,标准化打下基础。(6)做好抗干扰设计,这是计算机应用系统提高可靠性的有力措施。(7)设置自诊断程序,系统工作前先运行自诊断程序,检查系统各特征状态参数是否正常,以提高运行的可靠性。开发步骤:(1)确定任务:a)确定系统的功能,指标,成本b)完成期限(2)总体设计:a)调研b)机型选择c)软硬件任务划分I.硬件开发一.绘出线路图二.选购元器件三.组装第77页共76页 湖南工业职业技术学院四.调试硬件II.软件开发一.建立数学模型,确定算法,安排数据结构二.设计,编制各子程序模块三.各子程序进行调试四.各子程序连接起来调试(3)样机联调:a)软,硬件结合起来调试b)找出错误,修改软,硬件c)实时仿真,直至满足设计要求(4)产品定型:a)形成工艺b)编写技术文件3.1中断控制和的中断请求信号由外部产生并输入,称外部中断,其余的中断请求信号均由主机内部产生,故称为内部中断。本次里程表的设计只用到外部中断:外部中断0请求中断输入端口(P3.2引脚),低电平或负跳变(从高到低)有效。中断屏蔽:AT89C52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求开放(允许)或屏蔽(禁止)的控制。中断响应的过程:AT89C52的指令系统中设有两条返回指令:RET和RETI。调用子程序中应选用RET返回指令,中断服务程序中应选用RETI返回指令,如采用的是RET返回指令,虽然也能使中断服务程序返回原断点处继续往下执行原程序,但它不会告知中断控制系统,现行中断服务程序已执行完毕,致使中断控制系统误认为仍在执行中断服务程序而屏蔽新的中断请求。因此,中断服务程序的返回必须用RETI指令,而不能用RET返回指令代替。第77页共76页 湖南工业职业技术学院中断响应时间:从中断源发生中断请求到主机响应中断,转去执行中断服务程序需要3-8个机器周期。外部中断0矢量地址:0003H。3.1I/O口的控制方式在单片机中,为了实现数据的输入输出传送,通常使用三种控制方式。即:无条件传送方式,查询方式和中断方式。无条件传送方式适用于以下器件或设备的输入输出:例如,机械或电子开关,指示灯,发光二极管,数码管等。它们随时处于“准备好”状态方便数据的传输。查询方式:为了实现查询方式的数据输入输出传送,需要由接口电路提供部,器件或设备的状态,并以软件方法进行状态测试。因此,这是一种软,硬件方法结合的数据传送方式。程序查询流程如图4.4-1所示。读入状态信息N准备好了吗?数据传送Y图4.4-1第77页共76页 湖南工业职业技术学院中断方式:中断方式与查询方式的主要区别在于如何知道,器件或外设是否为数据传输作好了准备。查询方式是主机主动查询。而中断方式则为部,器件或外设主动请求。采用中断方式进行数据传输时,当部,器件或外设为数据传输已作好准备之后,就向主机发出中断请求(相当于通知主机),主机在接收到中断请求之后,在允许中断的情况下,响应中断请求,暂停正在执行的原程序,转而去为部,器件或外设的数据提供传输服务。待服务完成之后,程序返回,主机再从断点处继续执行原程序。3.1里程表的软件设计3.1.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.8175224609.6191226660.4207228771.22233大车轮小车轮第77页共76页 湖南工业职业技术学院l图4.5.1-2最小的电动自行车尺寸的车轮周长为1752毫米,小车轮的周长要略小于大车轮的周长,假设为1500毫米,在将其值缩小10倍,因此得到小车轮的周长值。主程序流程图如图4.5.1-3所示。初始化读AT24C01判内部数据处理P1和P3规定作为电平拉高输入口开总中断和外部中断,设堆栈指针SP开P0和P2口第77页共76页 湖南工业职业技术学院按下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.1.1里程的设计里程数据存放单元见如下表4.5.2-1所示。表4.5.2-1BKMSKMKMBMSMMBMMSMMMM50H55H54H53H52H51H56H因为电动自行车里程表的硬件设计里程的显示部分是采用四个共阴极的数码管,所以只能显示BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)。但设计时从BMM(分米)开始置存放单元并显示,每按一下P3.6开关,存放单元数据进行累加一,第77页共76页 湖南工业职业技术学院而BMM(分米),M(米),SM(十米)置存储单元,虽然没显示但骑电动自行车时BMM(分米),M(米),SM(十米)累加的。因此BMM(分米),M(米),SM(十米)加处理后不存储AT24C01,而BM(0.1公里),KM(公里),SKM(十公里),BKM(百公里)加处理后存储AT24C01后再在数码管上显示。3.1.1存贮历史里程数据的设计存贮历史里程数据要用到IC总线,IC(Inter-IntegratedCircuit)总线是一种由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型号种类器件地址引脚地址AT24C01EEPROM1010A2A1A0第77页共76页 湖南工业职业技术学院AT24C01是美国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.5V~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA。AT24C系列PROM接口及地址选择:由于IC总线可挂接多个串行接口器件,在IC总线中每个器件应有唯一的器件地址,按IC总线规则,器件地址为7位数据(即一个IC总线系统中理第77页共76页 湖南工业职业技术学院论上可挂接128个不同地址的器件),它和1位数据方向位构成一个器件寻址字节,最低位D0为方向位(读/写)。器件寻址字节中的最高4位(D7~D4)为器件型号地址,不同的IC总线接口器件的型号地址是厂家给定的,如AT24C系列PROM的型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0,对应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚电平给定。AT24C系列PROM读写操作软件实现方法:对AT24C系列PROM的读写操作完全遵守I2C总线的主收从发和主发从收的规则。AT24C01的写操作:写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序连续写操作是对E2PROM连续装载n个字节数据的写入操作,n随型号不同而不同,一次可装载字节数也不同。AT24C01/028字节/每页。AT24C01的读操作:读操作有三种基本操作:当前地址读、随机读和顺序读。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA高电平)随后发停止信号。IC总线共有9个归一化子程序组成,分别是:1.启动信号子程序2.终止信号子程序3.发送应答位(A)子程序4.发送应答非位()子程序5.检查应答位子程序第77页共76页 湖南工业职业技术学院3.发送单字节子程序4.接收单字节子程序5.发送N字节子程序6.接收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:MOVA,#01HMOVR0,BMLCALLWT24ACALLDELMOVA,#02HMOVR0,KMLCALLWT24ACALLDELMOVA,#03H第77页共76页 湖南工业职业技术学院MOVR0,SKMLCALLWT24ACALLDELMOVA,#04HMOVR0,BKMLCALLWT24RET存贮历史里程数据的流程图如图4.5.3-2所示:启动信号STAR发送数据发送寻址字节应答将AT24C01分别读入到BM,KM,SKM,BKM单元中N应答否?Y第77页共76页 湖南工业职业技术学院终止图4.5.3-2位的传输:SDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。WRBYT:;写单字节MOVR1,#08HWLP:RLCAJCWR1AJMPWR0;跳入写0WLP1:DJNZR1,WLPRETWR1:;写1SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDAAJMPWLP1WR0:;写0CLRSDASETBSCLNOP第77页共76页 湖南工业职业技术学院NOPNOPNOPCLRSCLAJMPWLP1RDBYT:;读单字节MOVR1,#08HRLP:SETBSDASETBSCLMOVA,P1JNBACC.7,RD0;转读0AJMPRD1;转读1RLP1:DJNZR1,RLP;8位全接收完毕,转退出RETRD0:CLRCMOVA,R2RLCAMOVR2,ACLRSCLAJMPRLP1RD1:SETBCMOVA,R2RLCAMOVR2,ACLRSCLAJMPRLP1第77页共76页 湖南工业职业技术学院END开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。开始信号程序:STAR:CLRSDALCALLDELSETBSDALCALLDELSETBSCLCLRSDALCALLDELCLRSCLRET结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。结束信号程序:STOP:CLRSDALCALLDELSETBSCLLCALLDELSETBSDARET应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。应答信号程序:MACK:;发应答位第77页共76页 湖南工业职业技术学院CLRSDASETBSCLNOPNOPNOPNOPCLRSCLETBSDARETMNACK:;发非应答位SETBSDASETBSCLNOPNOPNOPNOPCLRSCLCLRSDARET3.1.1里程的显示设计用两片74LS07分别驱动LED数码管(共阴型动态显示)和数码管的小数点。用一个开关,用于开电动自行车时里程的计数,并点亮一个指示灯。这个开关在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。本设计采用软件用延时消抖动。编制按键程序:一个完善的按键控制程序应具备以下功能:第77页共76页 湖南工业职业技术学院(1)检测有无按键按下,并采取硬件或软件措施,消除按键机械触点抖动的影响。(2)有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。(3)准确输出按键值(或键号),以满足跳转指令要求。按键触点的抖动如图4.5.4-1所示:图4.5.4-1具体工作如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。显示处理子程序:XSCL:MOVA,BMMOVDPTR,#TABMOVCA,@A+DPTRMOVBMD,AMOVA,KMMOVDPTR,#TABMOVCA,@A+DPTRMOVKMD,AMOVA,SKMMOVDPTR,#TAB第77页共76页 湖南工业职业技术学院MOVCA,@A+DPTRMOVSKMD,AMOVA,BKMMOVDPTR,#TABMOVCA,@A+DPTRMOVBKMD,ARET本设计采用共阴极LED显示器,LED显示器采用发光二极管显示字段。单片机系统中经常采用的是7段显示器,即LED显示器中有8个发光二极管,代表“a.b.c.d.e.f.g.”7个字段和一个全小数点“dp”。共阴极LED显示器的发光二极管负极接地,当发光二极管的正极为高电平时,发光二极管被点亮。使用LED显示器时,工作电流一般为5-10mA/段,当LED处于全亮状态时,工作电流约为40-80mA左右,通常将控制LED显示字符的8位数据称之为段选码。如表4.5.4-2为共阴和共阳LED数码管几种八段编码表。表4.5.4-2共阴和共阳LED数码管几种八段编码表显示数字共阴顺序小数点暗共阴逆序小数点暗共阳顺序小数点亮共阳逆序小数点亮Dpgfedcba16进制abcdefgDp16进制0001111113FH11111100FCH40HC0H10000011006H0110000060H79HF9H2010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H5011011016DH10110110B6H12H92H6011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H第77页共76页 湖南工业职业技术学院动态显示相关概念:所谓动态显示,实质上就是各个不同的LED显示器按照一定的顺序轮流显示。它利用了人眼的“视觉暂留现象”,只要多个LED显示器的选通扫描速率足够快,人眼就观察不到数码管的闪烁现象。动态扫描方式的所有LED段选线并联在一起,只由一个8位的I/O口控制,而各个LED的位选线则由另一组I/O口控制。动态LED显示方式的优点是功耗较低,占用CPU的I/O口线少,外围接口简单,但程序编制较之静态显示方式则略显复杂。在单片机与LED显示器的接口电路中,要使LED数码管正常发光,显示器驱动芯片也很关键。本次设计采用7407来驱动LED显示器。LED显示需注意的几个问题:(1)采用动态显示方式编写软件时,应选择合适的延时周期。如时间选择不合适,LED将会不停闪烁,这时可适当调整延时常数即可解决问题。(2)采用动态扫描方式的LED显示电路占用较少的硬件资源,但有时却过多地占用了CPU的资源,如应用系统不允许,可在设计电路中采用静态显示方式,以减少软件的编写难度。显示程序流程图如图4.5.4-3所示:Y按键闭合否?N点亮指示灯关P2.0延时消抖动延时显示BMD单元内容放入P0第77页共76页 湖南工业职业技术学院开P2.0开P2.3延时BKMD单元内容放入P0关P2.3关P2.1KMD单元内容放入P0开P2.2延时SKMD单元内容放入P0开P2.1图4.5.4-33.1.1里程公里数的累计功能设计小车轮周长设定为150毫米,分15等份,即15个脉冲,每个脉冲10毫米为单位,对电动自行车的周长进行测量,到100毫米(到10个脉冲),则BMM单元加1,当100个脉冲到来时,M单元加1,以此类推,即可点亮数码管(BM,KM,SKM,BKM单元的内容)。加一数据处理子程序:JCL:CLRP1.0MOVA,BMMINCACJNEA,#0AH,BMMJAJMPMJ1BMMJ:MOVBMM,A第77页共76页 湖南工业职业技术学院AJMPGOONMJ1:MOVBMM,#00HMOVA,MINCACJNEA,#0AH,MJAJMPSMJMJ:MOVM,AAJMPGOONSMJ:MOVM,#00HMOVA,SMINCACJNEA,#0AH,SMJ1AJMPBMJSMJ1:MOVSM,AAJMPGOONBMJ:MOVSM,#00HMOVA,BMINCACJNEA,#0AH,BMJ1AJMPKMJBMJ1:MOVBM,A中断0的流程图如图4.5.5-1所示:中断加一数据处理子程序N脉冲是否到来?第77页共76页 湖南工业职业技术学院Y调用显示处理子程序写AT24C01图4.5.5-1中断示意图如图4.5.5-2所示:现行程序中断服务程序中断断点继续执行图4.5.5-2里程累计功能各分支流程图:流程图4.5.5-3;流程图4.5.5-4;流程图4.5.5-5;流程图4.5.5-6所示。将BMM单元内容放入A判M单元内容A(M)加1M单元内容放入ABMM单元内容清0YN灭指示灯显示数据A单元内容放入BMM单元BMM单元内容是否到10A(BMM)加1第77页共76页 湖南工业职业技术学院图4.5.5-3M单元内容是否到10N判BM单元内容SM单元清0A(BM)加1BM单元内容放入ASM单元内容是否到10显示数据A单元放入MYSM单元内容放入AA(SM)加1M单元清0第77页共76页 湖南工业职业技术学院NA单元放入SMY显示数据图4.5.5-4N显示数据A单元放入KMY判SKM单元内容A(SKM)加1SKM单元内容放入AKM单元清0NKM单元内容是否到10显示数据A单元放入BMA(KM)加1KM单元放入ABM单元清0YBM单元内容是否到10第77页共76页 湖南工业职业技术学院图4.5.5-5显示数据储存24C01NA单元放入BKMY显示数据A单元放入SKMNYBMM,M,SM,BM,KM,SKM,BKM,BMD,KMD,SKMD,BKMD清0BKM单元内容是否到10A(BKM)加1SKM单元清0BKM单元放入ASKM单元内容是否到10第77页共76页 湖南工业职业技术学院图4.5.5-6第4章软件调试第77页共76页 湖南工业职业技术学院4.1程序的检测与调试1.程序的查错手段单片机的应用系统均需借助对应的开发系统(或装置)进行在线仿真,对应用系统的软,硬件进行全面地检测与调试。各种开发系统或装置均提供以下查错手段。(1)单步执行采用单步执行操作可对应用程序每步执行一条指令,可逐条检查这一段程序的执行过程是否符合原设计要求。可直接查出错误所在。宏单步可执行一段程序,如一步就可执行完整个循环程序段。(2)断点设置全速运行可在程序有疑虑的地方设置断点,从设置的起始地址开始,以全速或非全速方式向设定的断点处运行。如果这段程序无语法或逻辑上的错误,则连续运行到设置的断点处停止运行,返回监控状态。如果有错误,则在错误处停止运行,如果进入死循环或者程序跑飞,就会永不停止运行。全速断点运行为检查实时性及中断响应处理等提供了方便。(3)显示器窗口检查(4)实时跟踪记录除上述之外,还有以下功能:l符号化调试。在原程序中一般均以符号地址,标号等出现,通过汇编自动进行变换和调整,偏移量等均可自动换算和填入。l程序的运行。l自动生成目标代码和固化。2.源程序的检测在源程序进行调试之前,硬件系统必须基本正确,重点对源程序进行检测。(1)对照程序流程图,先对相对独立的功能模块,子程序,中断服务程序等进行仔细地检查,然后对整个主程序按其功能划分成若干程序段进行分段检查,逐步扩大到整个程序系统。第77页共76页 湖南工业职业技术学院检查时重点检查程序的逻辑功能,结构和算法,有关参量和初始值是否完善,正确,关键性指令的选择是否合理,特别是借助开发系统也较难调试正确的隐患,只有通过细心的检查加以排除。(2)硬件系统检查。硬件系统必须排除电源短路和碰线故障,然后空板(没有插上芯片等器件)进行上电检查各电源点是否正确,有关逻辑电平及信号是否正确。确认无误之后逐次插上芯片等器件,借助开发系统可检查出是否有硬件故障。一旦有故障时,开发系统的监控程序将出现不能正常工作的现象。故可采用此法排除硬件系统的一般性故障。有些故障只有通过软件调试才能排除,有时还需通过软件调试修改硬件设计。3.源程序的调试源程序的调试一般可分为分调,联调和考机3步进行。(1)分调首先将基本独立的子程序调试正确,符合原设计要求,用模拟的方法将中断服务程序初调,然后将主程序按相对独立的功能程序段,遵照应用系统运行的逻辑顺序逐段进行调试。A)设置并输入一组符合要求的参量,启动程序段运行,观察运行情况或故障的影响及现象。B)对出现的问题进行仔细地分析,合理推测,借助开发系统的调试手段,逐步缩小疑点范围,直至找出问题所在进行修改。C)分析故障原因。(2)联调在分调基本完成的基础上进行联调,它将与整个系统的硬件,软件,环境密切相关,必须联合在线调试。调试的重点在于主程序与各功能模块程序段之间的连接处,按照整个软件系统的执行顺序,逐个相连进行调试。(3)考机4.2单片机开发工具开发工具应具以下主要作用:第77页共76页 湖南工业职业技术学院(1)系统硬件电路的诊断;(2)程序的输入与修改;(3)除连续运行程序外,具单步运行,设断点运行和状态查询等功能;(4)能将程序固化到EPROM芯片上去。开发工具应具备:(1)交叉汇编功能。(2)EPROM编程器。(3)仿真功能。A)CPU仿真。B)EPROM仿真。通用机开发系统如图5.2-1所示:EPROM写入插座通用计算机系统l用户系统仿真头开发模板图5.2-1仿真系统硬件:a)仿真系统硬件是一种大规模在线可编程芯片,将整个单片机仿真控制电路集成在芯片中;仿真CPU则外置在仿真头上,通过更换不同的仿真头,可对各种单片机进行仿真。b)8位/16位兼容,可仿真8位及16位单片机。c)采用硬件断点技术,不占用单片机任何资源。d)采用串行口与计算机通信,波特率自动设置,最高可达38400。e)第77页共76页 湖南工业职业技术学院可配接逻辑分析仪,能实现复杂的组合断点和观察逻辑波形及分析时序关系。仿真系统硬件安装示意图5.2-2所示:用户板仿真头34芯仿真电缆仿真系统9芯串行口电缆接至计算机串行口单5V电源红正黑负串行口及电源电缆图5.2-24.3LCA51仿真过程1.打开LCA51界面,在文件中新建,输入程序后保存。2.打开编译对话框,如图5.3-1所示;编译当前文件,加载对话框如图5.3-2。第77页共76页 湖南工业职业技术学院图5.3-1图5.3-2若要把编写的程序烧到AT89C52芯片中,过程如下:打开设置选择仿真机,打开仿真机的对话框后,打开通讯口对话框,设置如下。设置对话框如图5.3-3,图5.3-4所示。第77页共76页 湖南工业职业技术学院图5.3-3图5.3-4在工具栏中选择芯片固化,如图5.3-5所示。第77页共76页 湖南工业职业技术学院图5.3-5之后进行一系列的操作。4.3硬件、软件仿真调试本系统的软件系统全部采用C51来编写,由于一般的仿真器对C51的支持有一定的缺陷,软件调试比较复杂。除了语法差错外,当确认程序没问题时,通过直接把程序烧到单片机来调试。即单独调试好每一个模块,然后再连接成一个完整的系统调试。硬件连线的步骤:1.连好电脑主机的9针串口联机线,连好电脑主机的USB线(短线)和仿真器的USB线(长线)。2.仿真器工作时需要的电源电流不大于150MA时,均不需外接电源,直接由电脑的USB接口供电(将金属跳冒跳在USB端),能满足仿真要求。在特殊情况下(需要的电源电流大于150MA,或你不想用USB接口供电),可自己购买一个5V的直流稳压电源(千万注意直流稳压电源插座是内正外负).用直流稳压电源供电,拔掉连在电脑主机的USB线(短线),将金属跳冒跳在OUT端。仿真器的本质:第77页共76页 湖南工业职业技术学院仿真器就是通过仿真头用软件来代替了在目标板上的51芯片,关键是不用反复的烧写,不满意随时可以改,可以单步运行,指定端点停止等等,调试方面极为方便。仿真器的原理:仿真器内部的P口等硬件资源和51系列单片机基本是完全兼容的。仿真主控程序被存储在仿真器芯片特殊的指定空间内,有一段特殊的地址段用来存储仿真主控程序,仿真主控程序就象一台电脑的操作系统一样控制仿真器的正确运转。硬件、软件仿真调试:经过硬件、软件单独调试后,即可进入硬件、软件联合仿真调试阶段,找出硬件、软件之间不相匹配的地方,反复修改和调试。4.3编制单片机应用程序的步骤和难点如何编写单片机应用程序,这是一个实践性很强的题目,也是一项艰苦而细致的工作。如果按照一定的步骤并且找出难点,事先对这些难点加以处理,能够收到事半功倍的效果。下面是开发中必经的几个步骤和可能遇到的难点的处理。编制步骤:1.搞清功能和编写方案接到一个单片机项目设计之后,并不是马上动手编写程序,而是仔细研究技术要求或者技术说明,根据这些技术要求和技术说明,把程序应该具备的主要功能写清楚,写仔细,这是最关键的工作,否则在设计完成以后会发现有些功能由于事先没有考虑清楚再重新设计将会很麻烦,可能有些需要重新增加的功能很容易补充,而有些可能由于没有事先考虑周全而无法实现。2.编写总流程图和各功能模块流程图根据要完成的程序功能写出总流程图,根据总流程图把整个程序划分成几个主要的功能模块,每个功能模块都要写出基本流程图,这主要是为以后的程序编写起到一个指导作用。当然,在实际的程序编写过程中肯定会有一些改动,一个基本的流程会指导写程序的过程中不会出现太大的偏差。3.准备编程所需的资料这些资料主要是编程语言方面的书籍、杂志等。因为程序语言的有些资料第77页共76页 湖南工业职业技术学院不可能记得太清楚,如每条指令的含义,具体操作每条指令所牵涉的硬件电路等。如果资料准备得比较充分,可以放在案边,若有需要,顺手查阅。4.人机界面的编程用单片机实现的项目人机界面相对简单。若为LED显示,应根据LED的位数选取简单、明了、用户一看便知的提示符;显示的数据位数应充分考虑技术的要求。5.分析编程的难点和技术解决方案为了能比较顺利地完成程序设计,应根据程序所完成的功能和程序流程对整个程序的框架分析一下,并根据自己掌握的技能定位整个程序的难点,然后找到最佳的算法。6.写程序在上面的准备工作完成后,就可以着手编写程序。因为有了明确的程序流程,有了充足的资料,可能遇到的难点基本上找到了解决方法。这样,事先准备得比较充分,即使在以后的程序编写过程中遇到困难,也较易解决。这样就可以节省很多时间,以便静下心来认真按照方案和流程编写程序。另外,一般写完一个功能程序就进行调试,通过后再编写另外一个功能代码,这样可以防止全部代码编写完毕后再调试可能带来的相互影响,从而可以搞清楚到底是哪部分程序有问题。7.程序调试程序的调试过程是一个比较复杂的过程,有些需要高度的技巧和一定的方法。一般的编程软件都提供单步、单步越过、断点、运行到光标处等基本方法,一般掌握这几种基本方法就可以解决绝大部分问题。经过长时间的调试实践之后自然就可以掌握一定的调试技巧,即熟能生巧。4.3故障分析1.编好的C51程序用仿真器运行一切正常,但写入片子独立运行时,运行结果却是错的。分析:仿真器一般跳了地址的,需要做简单的调整的,再者是检查第77页共76页 湖南工业职业技术学院硬件电路了。如果仿真通过,那可能的原因就是芯片有问题,请重新检查,或者换一块片子。2.中断陷入了死循环。分析:在高级中断中修改PC值。进入中断时将中断前PC的值压栈,修改栈中值,然后中断返回时就可以从0000H开始执行了。也可以指向任何你需要的位置。进入中断后,栈顶的两个数据为PC中断前的值,如下操作即可。POPACCPOPACCMOVA,#RET_PCLPUSHACCMOVA,#RET_PCHPUSHACCRETI其中RET_PCL,RET_PCH为要返回的地址。这只是个思路,具体的话还要根据实际来编,中断返回前还可以做一些其他工作。3.现在的程序用仿真器仿真通过,程序正常,然后把生成的文件烧写到芯片里面去,系统没有任何反应(用仿真器可以控制指示灯亮,将程序写到芯片里去之后就不亮了),将程序写到芯片之后还需要如何处理。分析:可能是程序的起始地址没弄好,也可能是单片机是坏了,主要问题是硬件有问题。4.程序不按规定的流程执行,程序跳转到不可知的地址去了。分析:这种现象称为程序跑飞,通常是由硬件引起的。堆栈开的太小了。堆栈和指针是两个主要的影响因素,指针乱指的危险性很大通常让人莫名其妙,按步执行看看程序是如何跑飞的,找到源头不难解决。堆栈的溢出也是经常发生的事情关键在于程序设计上对用到堆栈的地方是否加了保护,实在不行就执行到一定的阶段让堆栈指向一个固定的地方(没有使用它的时候),可能堆栈溢出,可能进入死循环(如果没有看门狗),可能逻辑方面的问题等等。第77页共76页 湖南工业职业技术学院第5章结束语本次毕业设计是在指导老师汪小锋的指导下完成的。忙碌了两个多月,我的毕业设计课题也终将告一段落。编译程序时点击运行,也基本达到预期的效果,虚荣的成就感在没人的时候也总会冒上心头。但由于能力和时间的关系,总是觉得有很多不尽人意的地方,可是,我又会有点自恋式地安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获。以此语言来安抚我尚没平复的心。毕业设计,也许是我大学生涯交上的最后一个作业了。想籍次机会感谢在校期间二年以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。我的毕业指导老师汪小锋老师,虽然我们是在开始毕设时才认识,但他却给我不厌其烦的指导,并提供了很多与该研究相关的重要信息,培养了我们对科学研究的严谨态度和创新精神。这将非常有利于我们今后的学习和工作。在此表示衷心的感谢!本次毕业设计还得到了课题组的各位老师的大力协助,在此一并表示我们的感谢!第77页共76页 湖南工业职业技术学院参考文献[1]张友德,赵志英,涂时亮.单片微型机原理、应用与实验[M].上海:复旦大学出版社,2000.[2]勒达.单片机应用系统开发实例导航[M].北京:人民邮电出版社,2003.[3]薛钧义,张彦斌.单片微型计算机及其应用[D].西安:西安交通大学出版社,2001.[4]涂时亮.单片机软件设计技术[D].重庆:科学文献出版社重庆分社,1987.[5]王毅.单片机器件应用手册[M].北京:人民邮电出版社,1995.[6]何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,1996.[7]蔡美琴.MCS-51系列单片机系统及其应用[M].上海:高等教育出版社,1992.[8]苏伟斌.8051系列单片机应用手册[M].北京:科学出版社,1997.[9]马家辰.MCS-51单片机原理及接口技术[M].哈尔滨:哈尔滨工业大学出版社,1997.[10]藏海河.单片机原理及应用[M].重庆:重庆大学出版社,2004.[11]刘文秀.单片机仿真[J].中国学术期刊,2004,6(5):56-61.[12]杨雪梅.单片机软件的抗干扰设计[J].中国学术期刊,2006,3(8):18-25.[13]Joseph.Amethodofdeveloping80C552microcontrolleronMCS-51device[J].EastChinaInstituteofMetallurgy,1998,14(27):101-125.[14]Intel.InterfacinganMCS-51Microcontronllertoan82527CANController[J].IondonMacmillanPRESSLTD,1996,5(80):32-40.[15]PhilipsSemiconductors.TheIC-BusSpecificationVersion(2.1)[J].USA,2000,17(35):71-83.第77页共76页 湖南工业职业技术学院附录1中英文文献TheCProgrammingLanguageCisahigh-levelprogramminglanguagedevelopedbyDennisRitchieandBrianKernighanatBellLabsinthemid-1970s.Althoughoriginallydesignedasasystemsprogramminglanguage,Chasprovedtobeapowerfulandflexiblelanguagethatcanbeusedforavarietyofapplications,frombusinessprogramstoengineering.Cisaparticularlypopularlanguageforpersonalcomputerprogrammersbecauseitisrelativelysmall-itrequireslessmemorythanotherlanguages.ThefirstmajorprogramwritteninCwastheUNIXoperatingsystem;andformanyyears,CwasconsideredtobeinextricablylinkedwithUNIX.Now,however,CisamimportantlanguageindependentofUNIX.Althoughitisahigh-levellanguages,Cismuchclosertoassemblylanguagethanaremostotherhigh-levellanguages.ThisclosenesstotheunderlyingmachinelanguageallowsCprogrammerstowriteveryefficientcode.Thehow-levelnatureofC,however,canmakethelanguagedifficulttouseforsometypesofapplications.Nowlet’stakeanoverviewoftheCprogramminglanguage,bothhistoricallyandtechnicallyandtechnically.Asageneral-purposeprogramminglanguage,ChasbeencloselyassociatedwithUNIXsystemwhereitwasdeveloped,sinceboththesystemandmostoftheapplicationsthatrunonitarewritteninC.Thelanguage,however,isnottiedtoanyoneoperatingsystemormachine;andalthoughithasbeencalleda“systemprogramminglanguage”becauseitisusefulforwritingcompilersandoperatingsystems,ithasbeenusedequallywelltowritemajorprogramsinvariousfields.ManyoftheimportantideasstemfromthelanguageBCPL,developedby第77页共76页 湖南工业职业技术学院MartinRichards.TheinfluenceofBCPLonCproceededindirectlythroughthelanguageB,whichwaswrittenbyKenTompsonin1970forthefirstUNIXsystemontheDEC-PDP-7.BCPLandBare“typeless”languages.Bycontrast,Cprovidesavarietyofdatatypes.Thefundamentaltypesarecharacters,andintegersandfloatingpointnumbersofseveralsizes.Additionally,thereisahierarchyofderiveddatatypescreatedwithpointers,arrays,structures,andunions.Expressionsareformedfromoperands;anyexpression,includinganassignmentorafunctioncall,canbeastatement.Pointersprovideformachine-independentaddressarithmetic.Cprovidesthefundamentalcontrol-flowconstructionsrequiredforwell-structuredprograms:statementgrouping,decisionmaking(if-else),selectingoneofasetofpossiblecases(switch),loopingwiththeterminationtestatthetop(while,for)oratthebottom(do),andearlyloopexit(break).Functionsmayreturnvaluesofbasictype,structures,unions,orpointers.Anyfunctionmaybecalledrecursively.Localvariablesaretypically“automatic”,orcreatedanewwitheachinvocation.Functiondefinitionsmaynotbenestedbutvariablesmaybedeclaredinablock-structuredfashion.ThefunctionsofaCprogrammayexistinseparatesourcefilesthatarecompiledindividually.Variablesmaybeinternaltoafunction,externalbutknownonlywithinasinglesourcefiles,orvisibletotheentireprogram.Apreprocessingstepperformsmacrosubstitutiononprogramtext,inclusionofothersourcefile,andconditionalcompilation.Cisarelativelylow-levellanguage,meaningthatCdealswiththesamesortofobjectsthatmostcomputersdo,namelycharacters,numbers,andaddresses.Thesemaybecombinedandmovedaboutwiththearithmeticandlogicaloperatorsimplementedbyrealmachines.Cprovidesnooperationstodealdirectlywithcomposeiteobjectssuchascharacterstrings,sets,lists,orarrays.Therearenooperationsthatmanipulateanentireanystorageallocationfacilityotherthanstatic第77页共76页 湖南工业职业技术学院definitionandthestackdisciplineprovidedbythelocalvariablesoffunctions;therearenoheaporgarbagecollection.Finally,Citselfprovidesnoinput/outputfacilities;therearenoReadorWritestatements,andnobuilt-infileaccessmethods.Allofthesehigher-levelmechanismsmustbeprovidedbyexplicitly-calledfunctions.MostCimplementationshaveincludedareasonablystandardcollectionofsuchfunctions.Similarly,Coffersonlystraightforward,single-threadcontrolflow:tests,loops,grouping,andsubprograms,butnotmultiprogramming,paralleloperations,synchronization,orco-routines.Althoughtheabsenceofsomeofthesefeaturesmayseemlikeagravedeficiency,keepingthelanguagedowntomodestsizehasrealbenefits.SinceCisrelativelysmall,itcanbedescribedinasmallspace,andlearnedquickly.Aprogrammercanreasonablyexpecttoknowandunderstandandindeedregularlyusetheentirelanguage.In1983,theAmericanNationalStandardInstitute(ANSI)establishedacommitteetoprovideamodern,comprehensivedefinitionofC.Theresultingdefinition,theANSIstandard,or“ANSIC”,wascompletedlatein1988.Mostofthefeaturesofthestandardarealreadysupportedbymoderncompilers.ThestandardisbasedontheoriginalCreferencemanual.Thelanguageisrelativelylittlechanged;oneofthegoalsofthestandardwastomakesurethatmostexistingprogramswouldremainvalid,or,failingthat,thatcompilerscouldproducewarningofnewbehavior.Formostprogrammers,themostimportantchangeisanewsyntaxfordeclaringanddefiningfunctions.Afunctiondeclarationcannowincludeadescriptionoftheargumentsofthefunction;thedefinitionsyntaxchangestomatch.Thisextrainformationmakesitmucheasierforcompilertodetecterrorscausedbymismatchedarguments.Thishasprovedtobeaveryusefuladditiontothelanguage.AsecondsignificantcontributionofthestandardisthedefinitionofalibrarytoaccompanyC.Itspecifiesfunctionsforaccessingtheoperatingsystem第77页共76页 湖南工业职业技术学院(forexample,toreadandwritefile),formattedinputandoutput,memoryallocation,stringmanipulation,andthelike.Acollectionofstandardheadersprovidesuniformaccesstodeclarationsoffunctionsanddatatypes.Programsthatusethislibraryiscloselymodeledonthe“standardI/Olibrary”oftheUNIXsystem.AlthoughCmatchesthecapabilityofmanycomputers,itisindependentofanyparticularmachinearchitecture.Withalittlecareitiseasytowriteportableprograms,thatis,programsthatcanberunwithoutchangeonavarietyofhardware.C,however,likeanyotherlanguage,hasitsblemishes.Someoftheoperatorshavethewrongprecedence;somepartsofthesyntaxcouldbebetter.Nonetheless,Chasprovedtobeanextremelyeffectiveandexpressivelanguageforawidevarietyofprogrammingapplications.HavingreviewedthehistoryandfeaturesofC,let’snowstudyanexampleCprogramforabasicunderstandingofwhataCprogramlookslike.Thefollowingprogramfindsthefactorialofthenumber6./*Programtofindfactorialof6*/#include#define3VALUE6inti,j;main(){j=1;for(i=1;i<=VALUE;i++)j=j*I;printf(“Thefactorialof%dis%dn”,VALUE,j);}Asshownintheexample,Ccodestartswith#include,whichinstructsthecompilertoincludethestandardI/Olibraryintoyourprogramsothatyoucanreadandwritevalues,handletextfiles,andsoon.Chasalargenumberofstandardlibrarieslikestdio,includingstring,timeandmath第77页共76页 湖南工业职业技术学院libraries.The#definelinecreatesaconstant.Twoglobalvariablesaredeclaredusingtheinti,j;line,whichannouncestheproperties(inthiscase,integer)ofthetwovariables.Othercommonvariabletypesarefloat(forrealnumber)andchar(forcharacters),bothofwhichyoucandeclareinthesamewayasint.Thelinemain()declaresthemainfunction.EveryCprogrammusthaveafunctionnamedmainsomewhereinthecode,whichmarksthebeginningofyourprogram.InC,thestatementsofafunctionareenclosedinbraces{}.Intheexamplethemain()functioncontainsonlythreestatement,whichareanassignmentstatement,aforstatement,andaprintfstatement.TheprintfstatementinCiseasiertouse.Theportionindoublequotesiscalledtheformatstringanddescribeshowthedataistobeformattedwhenprinted.Theformatstringcontainsstringliterals(orstringconstant)suchasThefactorialof,n(alsocalledescapesequence./nstandsforcarriagereturns),andoperatorsintheformof%d,whichareusedasplaceholdersforvariables.Thetwooperators(alsocalledconversionspecifications)intheformatstringindicatethatintegervaluesfoundlaterintheparameterlistaretobeplacedintothestringatthesepoints.Otheroperatorsinclude%fforfloatingpointvalues,%cforcharacters,and%sforstrings.Intheprintfstatement,itisextremelyimportantthatthenumberofoperatorsintheformatstringcorrespondsexactlywiththenumberandtypeofthevariablesfollowingit.Forexample,iftheformatstringcontainsthreeoperatorsanditmustbefollowedbyexactlythreeparameters,andtheymusthavethesametypesinthesameorderasthosespecifiedbytheoperators.Thisprogramisgood,butitwouldbebetterifitreadsinthevalueinsteadofusingaconstant.Editthefile,removetheVALUEconstant,anddeclareavariablevalueinsteadasaglobalinteger(changingallreferencestolower-casebecausevalueisnowavariable).Thenplacethefollowingtwolinesatthebeginningoftheprogram:Printf(“Enterthevalue:”);第77页共76页 湖南工业职业技术学院Scanf(“%d”,&value);Makethechanges,thencompileandruntheprogramtomakesureitworks.Notethatscanfusesthesamesortofformatstringasprintf.The&signinfrontofvalueistheaddressoperatorinC,whichreturnstheaddressofthevariable.Youmustusethe&operatorinscanfonanyvariableoftypechar,int,orfloat,aswellasrecordtypes.Ifyouleaveoutthe&operator,youwillencounteranerrorwhenyouruntheprogram.译文C语言C语言是一种高级程序设计语言,是20世纪70年代由DennisRitchie和BrianKernighan在贝尔实验室开发的。虽然C语言最初是作为一种系统语言设计的,但后来的实践证明C语言功能强大,也十分灵活,可以用于各种应用程序,如商业软件、工程项目等,C语言在个人计算机编程领域非常流行,因为C语言规模较小—比其他语言需求的内存少。用C语言编写的第一个重要程序是UNIX操作系统;以后多年之中,大家普遍认为C语言是与UNIX操作系统密不可分的。不过,现在C语言已经是一种与UNIX无关的重要语言,虽然C语言是一种高级语言,但是它比其他高级语言更接近于汇编语言。正是因为与低层的机器语言十分接近,C程序员才可以编写高效率的代码。不过,C语言的这种低级性在某些应用场合也显得难以驾驭。以下我们将从历史和技术的角度对C语言作一概括。作为一种通用的程序设计语言,C语言是在UNIX环境下开发出来的。UNIX系统本身及其应用程序也都是用C语言编写的,所以C语言一直与UNIX有着密切的关系。不过,C语言并不局限于某种操作系统或机型;C语言一直被称作一种“系统开发语言”,因为它在编写编译程序和操作系统方面特别有用,但是,在其他领域的大型程序开发方面也表现得同样出色。C语言的许多重要思想来自于Martin第77页共76页 湖南工业职业技术学院Richards研制的BCPL语言。BCPL语言对于C语言的影响是通过B语言间接地进行的。B语言是KenTompson于1970年为DEC-PDP-7计算机上的UNIX系统而开发的。BCPL语言和B语言都是“无类型的”语言。相比之下,C语言提供了各种数据类型。其中基本的数据类型包括:字符型、整数型、各种精度的浮点型、数组型、结构型,及其联合体。表达式是由操作数组成的;任何的表达式,包括赋值及函数调用都可以作为一条语句。指针则可以提供与机器无关的地址运算。C语言提供了各种基本的流程控制结构,用于结构化程序设计。如:语句分组、判定结构(if-else)、情况结构(switch)、终止于顶部的循环结构(while,for)、终止于底部循环结构(do),及其循环中断命令(break)。函数的返回值可以是基本类型、结构、共同体或指针。任何的函数均可以递归调用。通常局部变量都是“自动型的”,或者说,是在每次调用时重新建立的。函数定义不能嵌套,但是变量可以在块结构中说明。C程序的函数单独存放于源文件中,分别编译。变量可定义为函数的内部变量,某一源文件中可以使用的外部变量,也可以定义为整个程序均可见的全程变量。预处理功能可以对程序文本进行宏替换,并可以蕴含其他源文件,或进行条件编译。C语言是一种相对低级的语言,也就是说它可以处理大多数机器本身所能处理的数据类型,如:字符、数值、地址等。这些数据既可以同机器所支持的算术和逻辑运算符组合,也可以由它们进行传送。对于字符串、集合、表、数组等组合数据类,C语言没有提供直接的操作。虽然一个结构可以整体复制,但是C语言中无法对整个数组或字符串进行整体操作。除了函数内的局部变量可以进行静态定义和堆堆栈无用内存收集机制。最后一点,C语言本身也没有提供输入/输出功能,没有读/写语句及内在的文件存取方法。所有这些高层的机制都是由通过函数显式调用的。大多数的C语言版本都带有基本标准的函数库,其中包含了以上这些函数。基于同样的道理,C语言仅仅提供了直接的、单线程的流程控制,如测试、循环、分支及子程序等;没有多道程序控制、并行操作、同步,协同例程管理。没有上述功能看起来像是一种缺陷,不过,把语言控制在较小的规模确有许多优点。鉴于C语言相对较小,可以用比较少的篇幅予以描述,并可以短时间内掌握。如果说程序员可以了解、掌握并确定经常使用全部的语言,并不奇怪。第77页共76页 湖南工业职业技术学院1983年,美国国家标准协会(ANSI)成立了一个专门的委员会,对C语言进行全面的、现代化的定义。其结果便是ANSIC,是1988下后期完成的,这一标准的大多数功能在较新的编译系统中业已付诸实施。这一标准是基于早期的C语言参考手册建立的,相对而言,语言本身没有多大变化;其目的之一就是为了保证现存的大多数程序可以有效运行,或者,在不兼容的情况下,由编译程序提出警告,说明(程序可能导致的)新的操作。对大多数程序员来说,最重要的变化是函数的说明及定义有了一种新的语法。现在,在函数的说明中可以包含参数的描述;函数的定义语法也作了相应的修改。有了这种附加信息,编译程序就可以很容易地检查出由于参数类型不匹配所造成的错误。事实证明,对C语言的这一扩充非常奏效。ANSIC对C语言的第二个贡献是定义了一套伴随C语言的函数库,其中说明的函数涉及到对操作系统的访问(如文件的读写)、格式输入输出、内存分配、字符串操作等等。ANSIC还规定了一套标准的首标文件,提供了对于函数说明及数据类型的统一使用方法。程序只要使用这一函数库与机器交换信息,其兼容性就可以得到保证,大多数的库函数都是以UNIX系统的“标准的I/O函数库”为基础建立的。虽然C语言可以充分发挥多数计算机的功能,但是,它并不依赖于具体的计算机体系结构,只需稍加注意,就可以编写出可移植的应用程序,也就是说程序不用修改就可以在各种机器上运行。不过,像其他语言一样,C语言也有自己的缺陷。比如,某些运算符的优先顺序存在错误;还有的语句在语法上可以更好一些,尽管如此,实践业已证明C语言在各种编程运用中非常有效,并具有良好的表现力。上面简单介绍了C语言的历史及特点,现在我们来考察一个C语言例程,以便大家对C语言程序的结构有所了解。以下这个程序用于计算6的阶乘: /*programtofindfactorialof6*/#include#defineVALUE6inti,j;main(){j=1;for(I=1;I<=VALUE;I++)第77页共76页 湖南工业职业技术学院j=j*I;printf(“Thefactorialof%dis%dn”,VALUE,j);}如例中所示,C语言程序(代码)以“#include”一句开始,其目的只是编译程序将C标准函数库蕴含到用户程序中,以便于读写数据、处理文本文件等等。C语言带有大量像“stdio.h”这样的标准函数库,包括字符串处理、时间及数学运算等函数库。“#define”一行定义了一个常量。“inti,j”一行说明了两个全局变量,定义了两个变量的属性(本例中为整数)。其他常用的变量类型还有浮点型(指实数型)、字符型(指字符)等,其说明格式同整型类似。“main()”一行说明了本程序的主函数。每一个C语言程序都必须有一个名为“main()”的函数,可出现于程序的任意位置,用以标记程序的开始。在C语言中函数的语句都被括在一对{}中。在本例中,主函数包括三行语句,分别是赋值语句、for循环语句,及printf格式输出语句。C语言中的“printf”语句很容易使用。双引号中的部分叫作格式串,用于描述数据在输出时的格式。格式串可以包括字符常量,如“Thefactorialof”及“n”(又称作转义序列,n表示回车);还可以包括形如“%d”的操作符,用作待输出变量的定位符。本例中格式串的两个操作符(又叫作转换说明),表示出现于后续参数表中的整型数值将被置于该格式字符串的指定位置。类似的格式操作符还有表示浮点数值的“%f”、表示字符的“%c”,及表示字符串的“%s”等。必须注意,在“printf”语句中,格式串中操作符的数目与后续的变量在类型及数目上要严格对应。例如,如果格式串包含三个操作符,在后面的参数也必须有三个,并且参数在类型及出现的顺序上要与前面的操作符一致。这个程序还可以,不过,如果能将常量改为由程序读入数值,则会更好一些。编辑该程序,删除VALUE常量,并说明一个全局变量“value”(把所有变更引用都改为小写,因为“value”现已说明为一个变量),然后将以下两行加到程序的开始处:printf(“Enterthevalue:”);scanf(“%d”,&value);修改程序,进行编译并运行,以确保程序无误。值得注意的是,“printf”使用的格式串与“scanf”相同,“value”变量前的“&”第77页共76页 湖南工业职业技术学院字符在C语言中称作地址操作符,用于返回指定变量的内存地址。出现于“scanf”中的字符型、整型、浮点型,以及记录型(即结构型)的任何变量都必须加上“&”操作符。倘若漏掉“&”,运行程序时就会出现错误。第77页共76页 湖南工业职业技术学院附录2硬件设计原理图第77页共76页 湖南工业职业技术学院附录3PCB板原理图第77页共76页 湖南工业职业技术学院附录4软件程序BMMEQU50HMEQU51HSMEQU52HBMEQU53HKMEQU54HSKMEQU55HBKMEQU56HBMDEQU57HKMDEQU58HSKMDEQU59HBKMDEQU5AHSDABITP1.5SCLBITP1.4KZBZEQU5BHORG0000HLJMPMAINORG0003HLJMPZTCLORG0030HMAIN:MOVA,#01HLCALLRD24MOVBM,AMOVA,#02HLCALLRD24MOVKM,AMOVA,#03HLCALLRD24MOVSKM,A第77页共76页 湖南工业职业技术学院MOVA,#04HLCALLRD24MOVBKM,AMOVA,BMCJNEA,#0FFH,L1MOVBM,#00HAJMPL5L1:MOVA,KMCJNEA,#0FFH,L2MOVKM,#00HAJMPL5L2:MOVA,SKMCJNEA,#0FFH,L3MOVSKM,#00HAJMPL5L3:MOVA,BKMCJNEA,#0FFH,L4MOVBKM,#00HL5:LCALLWTDAL4:LCALLXSCLMOVP1,#0FFHMOVP3,#0FFHSETBEASETBEX0MOVSP,#70HMOVKZBZ,#14HLOOP:JBP1.2,LOPALCALLD1JBP1.2,LOPAMOVKZBZ,#11H第77页共76页 湖南工业职业技术学院CLRP3.1AJMPJCMCLOPA:JBP1.3,LOPBLCALLD1JBP1.3,LOPBMOVKZBZ,#13HCLRP3.3AJMPJCMCLOPB:JBP1.6,LOPCLCALLD1JBP1.6,LOPCCLRP3.4MOVKZBZ,#14HAJMPJCMCLOPC:JBP1.7,LOPDLCALLD1JBP1.7,LOPDCLRP3.5MOVKZBZ,#16HAJMPJCMCLOPD:JBP1.1,JCMCLCALLD1JBP1.1,JCMCLCALLDAGOLCALLXSCLLCALLWTDAJCMC:JBP3.6,XSAACALLD1JBP3.6,XSALCALLJCL第77页共76页 湖南工业职业技术学院LCALLWTDAXSA:MOVP0,BMDCLRP2.3ACALLD1SETBP2.3MOVP0,KMDCLRP2.2ACALLD1SETBP2.2MOVP0,SKMDCLRP2.1ACALLD1SETBP2.1MOVP0,BKMDCLRP2.0ACALLD1SETBP2.0AJMPLOOPZTCL:PUSHACCKK:LCALLJCLDJNZKZBZ,KKLCALLXSCLLCALLWTDAPOPACCRETIXSCL:MOVA,BMMOVDPTR,#TABMOVCA,@A+DPTRMOVBMD,AMOVA,KM第77页共76页 湖南工业职业技术学院MOVDPTR,#TABMOVCA,@A+DPTRMOVKMD,AMOVA,SKMMOVDPTR,#TABMOVCA,@A+DPTRMOVSKMD,AMOVA,BKMMOVDPTR,#TABMOVCA,@A+DPTRMOVBKMD,ARETWTDA:MOVA,#01HMOVR0,BMLCALLWT24ACALLDELMOVA,#02HMOVR0,KMLCALLWT24ACALLDELMOVA,#03HMOVR0,SKMLCALLWT24ACALLDELMOVA,#04HMOVR0,BKMLCALLWT24RETRD24:PUSHACCSETBSDA第77页共76页 湖南工业职业技术学院NOPNOPCLRSCLNOPNOPLCALLSTARNOPMOVA,#0A0HNOPNOPLCALLSHIFTLCALLACKPOPACCLCALLSHIFTLCALLACKNOPNOPLCALLSTARMOVA,#0A1HLCALLSHIFTNOPNOPLCALLACKNOPNOPSETBSDAMOVR7,#08HNOPNOPCLRA第77页共76页 湖南工业职业技术学院NOPNOPSETBSDARD0:RLANOPNOPSETBSCLNOPNOPMOVC,SDANOPNOPMOVACC.0,CNOPNOPCLRSCLDJNZR7,RD0NOPRETWT24:PUSHACCSETBSDACLRSCLLCALLSTARMOVA,#0A0HLCALLSHIFTLCALLACKPOPACCLCALLSHIFTLCALLACKMOVA,R0第77页共76页 湖南工业职业技术学院LCALLSHIFTLCALLACKLCALLSTOPLCALLDELRETSTAR:CLRSDALCALLDELSETBSDALCALLDELSETBSCLCLRSDALCALLDELCLRSCLRETSTOP:CLRSDALCALLDELSETBSCLLCALLDELSETBSDARETACK:SETBSCLLCALLDELCLRSCLRETSHIFT:MOVR7,#08HSH01:RLCAMOVSDA,CNOPSETBSCLLCALLDEL第77页共76页 湖南工业职业技术学院CLRSCLDJNZR7,SH01RETD1:MOVR3,#06HF1:DJNZR3,F1RETDEL:MOVR1,#9FHFA:DJNZR1,FARETJCL:CLRP1.0MOVA,BMMINCACJNEA,#0AH,BMMJAJMPMJ1BMMJ:MOVBMM,AAJMPGOONMJ1:MOVBMM,#00HMOVA,MINCACJNEA,#0AH,MJAJMPSMJMJ:MOVM,AAJMPGOONSMJ:MOVM,#00HMOVA,SMINCACJNEA,#0AH,SMJ1AJMPBMJSMJ1:MOVSM,AAJMPGOON第77页共76页 湖南工业职业技术学院BMJ:MOVSM,#00HMOVA,BMINCACJNEA,#0AH,BMJ1AJMPKMJBMJ1:MOVBM,AAJMPGOONKMJ:MOVBM,#00HMOVA,KMINCACJNEA,#0AH,KMJ1AJMPSKMJKMJ1:MOVKM,AAJMPGOONSKMJ:MOVKM,#00HMOVA,SKMINCACJNEA,#0AH,SKJ1AJMPBKMJSKJ1:MOVSKM,AAJMPGOONBKMJ:MOVSKM,#00HMOVA,BKMINCACJNEA,#0AH,BKJ1LCALLDAGOBKJ1:MOVBKM,AGOON:ACALLXSCLSETBP1.0RET第77页共76页 湖南工业职业技术学院DAGO:MOVA,#00HMOVBMM,AMOVM,AMOVSM,AMOVBM,AMOVKM,AMOVSKM,AMOVBKM,AMOVBMD,AMOVKMD,AMOVSKMD,AMOVBKMD,ARETORG0400HTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHEND第77页共76页 湖南工业职业技术学院附录5PCB板里程显示图第77页共76页 湖南工业职业技术学院附录6PCB板里程数据清零后的显示图第77页共76页 湖南工业职业技术学院附录7元器件清单1.电阻100欧2只10千欧2只1千欧11只2.电容电解电容10uf2只电解电容470uf1只磁片电容30pf2只3.共阴数码管4只4.12MHZ晶振1只5.AT24C01芯片1片6.74072片7.89C511片8.78051只9.78121只10.五孔插座1只11.二极管3只第77页共76页 湖南工业职业技术学院致谢经过两个多月的毕业设计,我最终完成了毕业设计所要求达到的预期要求和技术指标。在设计与调试过程中,我得到指导老师汪小锋老师亲切关怀和悉心的指导,在此表示感谢。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。我在毕业设计中主要负责单片机软件编程,这对我来说也是很大的挑战。一开始刚接触到这个课题感到无从下手。在指导老师的指导和帮助下,我自己查找了相关的资料,拟订了设计思路和方案,经过不断修改和调试完成了设计内容。同时我要感谢和我同组的同学,由于我们做的电动自行车里程表的设计,需要软件和硬件的结合,在硬件与软件联调的时候也出现了不少问题,不过通过与合作者的研究讨论,不断排除各方面的问题,最后解决了问题。在此期间,她也给了我许多帮助。我才能克服一个一个的困难和疑惑,直至本次毕业设计的顺利完成。通过这次毕业设计,我要再次感谢所有给予我帮助的老师和同学们!第77页共76页'