毕业设计(论文)-基于CAN总线的汽车行程信息采集系统设计.doc_第1页
毕业设计(论文)-基于CAN总线的汽车行程信息采集系统设计.doc_第2页
毕业设计(论文)-基于CAN总线的汽车行程信息采集系统设计.doc_第3页
毕业设计(论文)-基于CAN总线的汽车行程信息采集系统设计.doc_第4页
毕业设计(论文)-基于CAN总线的汽车行程信息采集系统设计.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业设计(论文)基于CAN总线的汽车行程信息采集系统设计 院 部: 机械工程学院 专 业: 汽车服务工程 班 级: 11级汽服班 学 号: 学生姓名: 指导教师: 2015年 4 月 25 日摘 要控制器局域网(又名CAN总线),是由著名汽车电子产品生产和开发的德国博世公司研发出来的,最后发展成为国际规范。在现场总线的应用中,CAN总线的应用比较广泛。 在北美和西欧,嵌入式工业控制局域网和汽车计算机控制系统的标准总线就是CAN总线协议,而且专门为大型货车和重型车辆设计了以CAN协议为基础的SJ1939协议。CAN总线受到行业重视,其原因是可性能高,错误检测能力良好,从而被大量应用在汽车计算机控制系统和条件温度差、电磁辐射强和振动强的工业环境。基于CAN总线的汽车行程信息采集系统设计,从大方向来说就是汽车里程表的设计。本系统设计拟采用霍尔传感器为信号采集模块,利用单片机的定时计数器功能累加脉冲信号,再处理该信号,即可得到里程显示,从而实现行程信息采集系统设计。本文将详细阐述系统设计的硬件电路设计与软件设计流程,该系统的设计将实时采集汽车CAN总线数据信息,可逐时了解汽车行驶期间行程信息变化,同时可记录汽车运行状况,采集的数据可用于分析汽车行驶性能以及各部件的运行状态。 关键词:CAN总线;汽车行程信息;采集系统;单片机 AbstractController local area network (CAN bus), is a famous automotive electronic products production and development of German Bosch company developed, finally develop into international standards. In the application of field bus, CAN bus application more widely. In North America and Western Europe, the embedded industrial control lans and auto standard bus for computer control system is the CAN bus protocol, and specially designed for large trucks and heavy vehicles in the CAN protocol based SJ1939. CAN bus industry attention, the reason is high reliability, error detection ability is good, the computer control system which is widely applied in automobile and conditions of temperature difference, strong electromagnetic radiation and vibration of industrial environment. Car travel information collection system design based on CAN bus, from general direction for it is the design of automobile odometer. System design in this paper using hall sensor for signal acquisition module, Use of single-chip timing counter function additive pulse signal, then the signal processing, can get mileage, so as to realize information collection system design.This article will elaborate the system design of hardware circuit design and software design process, design of the system to real-time information acquisition vehicle CAN bus data, when to know during the car trip information change, at the same time CAN record car running status of collection of data CAN be used to analysis the car performance and running state of each component. Keywords: CAN controller;Car travel information;Acquisition system;Single-chip microcomputer II目 录摘 要IAbstractII第1章 绪论11.1 CAN总线的工作原理11.2 CAN总线的应用领域11.3 CAN总线的特点21.4 CAN总线的发展前景2第2章 系统概述32.1 系统总体设计概述32.2 系统设计理论依据3第3章 硬件设计43.1 主要元件介绍43.1.1霍尔式传感器简介43.1.2AT89C2051单片机简介53.1.3液晶显示驱动器SED1520简介63.2 定时器/计数器93.2.1定时器/计数器的结构93.2.2定时器/计数器的原理93.2.3定时器/计数器方式寄存器TMOD103.2.4定时器/计数器控制寄存器TCON113.3 里程计数原理133.4 本章小结13第4章 软件设计144.1 系统软件设计流程图144.2 主要模块程序设计154.2.1电机转速控制模块程序设计154.2.2频率测量模块程序设计154.2.3液晶显示程序模块设计184.2.4里程数据显示模块程序设计184.3 本章小结22第5章 结语23参考文献24致 谢25附 录26IV贵阳学院本科毕业设计(论文)第1章 绪论1.1 CAN总线的工作原理 (1)CAN总线标准分为数据链路层和物理层,其中链路层有着不同的信息种类、总线访问的仲裁法则和故障检查与故障处理的方法。(2)CAN总线上的某个节点是以报文的形式发送数据的,然后再把数据传给网络中所有的节点。(3)总线中的某个节点发送数据给其他节点时,分两个阶段进行,准备阶段:该节点的CPU把自己的标识码和要传送的数据传给本节点的CAN芯片时;发送报文阶段:该节点接到总线的分配信号时。(4)CAN芯片发出的数据是报文格式,该报文格式是根据协议编成的,这时,总线中的其他节点处于接收状态。接收到的报文都会被接收状态下的节点检定,判断这些报文是否是发给自身的,然后确定是否接收它。 1.2 CAN总线的应用领域 伴随着计算机技术和集成电路技术的飞速发展,同时人类对电子产品、计算机设备、汽车和工业等领域的应用需求不断增大,并且对通信介质的可靠性、成本等要求也随之提高。当今自动化领域技术发展的焦点之一(现场总线),在分布式控制系统中,现场总线技术支撑并实现各节点之间实时、可靠的数据通信。同步外设接口、串行通信接口、通用异步接收器传输总线、内部集成电路和通用串行总线,以及车用串行总线,包括控制器局域网和本地互连网等串行总线一般被用于微控制器中。长久以来运用的通信标准,在计算机数据传输范围内虽然被大量运用,但是无法在大范围的复杂环境运用,比如需要用到很多的传感器和控制器这种情况下。因此CAN总线应运而生。当今世界,人们不断提高了对汽车效能的需求,这使得汽车技术不断发展,汽车上用的电控单元越来越多,因此电子设备之间的信息接收、传输越来越繁杂,为使各单元之间信息交换更为便捷,那就需要更多信号线来连接各单元,于是车用总线技术得到了较大发展。现在CAN总线逐渐被运用在航天、航海、自动化、电力系统、工业控制等领域中,究其原因是其比较实用,可靠,而且成本不高。1.3 CAN总线的特点(1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。(2)网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。 (3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。(4)可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。(5)直接通信距离最远可达10km(速率5Kbps以下)。(6)通信速率最高可达1MB/s(此时距离最长40m)。(7)节点数实际可达112个。(8)采用标准帧结构,每一帧的有效字节数为8个。(9)每帧信息都有CRC校验及其他检错措施,数据出错率极低。(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。 (11)节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。 1.4 CAN总线的发展前景 CAN最初是用于汽车行业的监测、控制,用来解决汽车内部的复杂硬件信号接线的低成本通信总线,现今CAN总线已经被公认为一种可靠的网络总线在汽车上得以应用。CAN总线共享信息和资源,总线的数据通信提高了系统可靠性、实时性、灵活性、可维护性,更好地匹配和协调各个控制系统。随着汽车电子技术的发展具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN总线,越来越受到人们的重视,它在汽车领域上得到了广泛的应用。世界上一些著名的汽车制造厂商,都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。第2章 系统概述2.1系统总体设计概述 本设计主要由信号采集处理模块、单片机AT89C2051(内含CAN控制器模块)、系统化LCD显示模块、系统软件等组成。其中信号采集处理模块以霍尔传感器为核心器件,霍尔器件固定在圆盘附近,圆盘每转一圈,霍尔器件将产生一个脉冲,一个脉冲即代表了一个圆盘的周长。单片机内部的定时器/计数器timer0工作在定时状态,timer1工作在计数状态,利用内部定时器T0对脉冲输入引脚T1进行控制,这样就能精确地检测到设定时间内加到T1引脚的脉冲数。累加的脉冲数乘以车轮周长就可得到里程数据,将数据送到LCD显示模块进行显示。该系统总体设计原理框图如图1所示。系统软件设计采用模块化设计方式,包括单片机和液晶模块的初始化模块、写数据命令子模块、频率测量模块、里程计算模块、行程显示数据LCD显示模块等。 单片机 行程显示 脉冲信号 霍尔传感器 图2.1系统总体设计原理框图2.2系统设计理论依据车轮转速传感器利用霍尔元件或者感应线圈产生一定车速的脉冲信号,车速与输出的脉冲的频率成正相关,然而车身电脑控制系统对脉冲信号进行A/D转换,经过转换生成数字信号,再经过处理之后进入CAN收发器打包成一定格式的数据帧,并带着标识码发送到CAN总线上。里程表中的CAN收发器接收到车速标识码的数据帧后,通过译码获得转速数据帧,通过CPU计算(里程表转速比首先由软件编入)后一路发出8位电机驱动信号,表盘指针由步进电机直接带动,偏转到一定的车速刻度处,表示此时车速;8段LCD线上驱动电路接收到另一路信号,显示出对应的里程数。第3章 硬件设计3.1 主要元件介绍 3.1.1霍尔式传感器简介 霍尔转速传感器:如2图所示霍尔转速传感器的外形图和与磁场的作用关系图。霍尔传感器和磁钢必须配对使用因为磁场由磁钢产生。如图3所示是霍尔传感器采集转速信号图。霍尔传感器在圆盘外缘附近的位置,而磁钢被固定在非磁材料的圆盘边上。霍尔传感器输出脉冲的数与圆盘转动圈数成正相关,每转一圈便输出一个脉冲。圆盘的转速是由单片机计算产生脉冲的频率得到的。 霍尔传感器的输出不需要再加装滤波电路,因为其自身已经有了滤波电路,所以可以将信号直接送到单片机引脚的输入位置或者直接实现单片机A/D信号转换。并且该传感器输出的信号抗干扰能力很强且十分稳定。 要使测出的转速更精准,那就要增强输出的脉冲信号,也就是要让一定时间采集到的脉冲数增多,在圆盘上贴上多块磁钢是比较可行的方法。这样可以解决由于车轮转速慢而测不到脉冲的问题。 图3.1霍尔转速传感器的外形图 图3.2霍尔传感器采集转速信号示意图3.1.2AT89C2051单片机简介美国ATMEL公司研制的AT89C2051单片机,具有高性能CMOS8位,低电压的优点。片内含2k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C2051提供了高性价比的解决方案。AT89C2051有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,具有耗能低性能高的优点。AT89C51可以在线编程,也可以按照常规方法进行编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 AT89C2051具有如下功能特性:(1)兼容MCS51指令系统;(2)32个双向I/O口;(3)两个16位可编程定时/计数器;(4)1个串行中断;(5)两个外部中断源;(6)2k可反复擦写(1000次)Flash ROM;(7)128x8bit内部RAM;(8)6个中断源;(9)低功耗空闲和掉电模式; (10)软件设置睡眠和唤醒功能。 图3.3单片机AT89C2051引脚图3.1.3液晶显示驱动器SED1520简介本设计系统采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本设计采用直接控制方式。直接控制方式就是将液晶显示模块的接口作为存储器或IO 设备直接挂在计算机总线上。计算机通过地址译码控制E1和E2的选通;读写操作信号 RW由地址线 A1控制;命令/数据寄存器选择信号AO由地址线A0控制。地址映射如下:0X000H0X001H0X002H0X003H0X004H0X005H0X006H0X007H写E1指令写E1数据读E1状态读E1数据写E2指令写E2数据读E2状态读E2数据表3.4地址映射表 图3.5液晶显示屏控制电路 SED1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十分方便,作为内藏式控制器被广泛应用于点阵数较少的液晶显示模块。(1)SED1520的特性 1.内置显示RAM区RAM容量为2560(32行80列)位。RAM中的1位数据控制液晶屏上一个点的亮灭状态:“1”表示亮, “0”表示暗。 2.具有16个行驱动口和16个列驱动口,并可级联两个SED1520实现32行驱动。 3.可直接与80系列微处理器相连,亦可直接与68系列微处理器相连。 4.驱动占空比为116或132。 5.可以与SED1520配合使用,以便扩展列驱动口数目。(2)SED1520指令与显示RAM结构 SED1520指令系统比较简单,共13条,除读状态指令、读显示RAM数据指令外,其他指令均为写操作,并且读写指令均为单字节指令。在送出每条指令时,必须进行控制器状态检测,状态字节的含义如下: D7:1/0,模块忙/准备就绪; D5:1/0,模块显示关/开; D4:1/0,模块复位/正常; D3-D0: 未用 在指令使用中,关键要分清显示行、列设置和显示页面设置的关系。单片SED1520可驱动6116液晶屏,其内部显示RAM相对于COM0每8行为一个显示页面。本设计所用的字符液晶模块由两块SED1520级联驱动,其中一个工作在主工作方式下,另一个工作在从方式下,主工作方式SED1520负责上半屏16行的驱动和左半屏的61列驱动,从工作方式的SED1520则负责下半屏16行的驱动和右半屏的61列驱动,使能信号E1、E2用来区分具体控制的是那一片SED1520。这样两片SED1520级联可驱动12232图形点阵液晶显示屏,可完成图形显示,也可显示七个半(1616点阵)汉字。 图3.6模块驱动原理图SED1520液晶显示驱动器共有13种显示指令。本文用到的部分指令见下表指 令代 码功 能R/WD/ID7D6D5D4D3D2D1D0显示开/关指令0010101111/0全部显示开关,0:关 1:开显示开始行00110开始行(031)显示RAM中数据的起始行页地址设置0010111003设置显示页地址 X address列地址设置000列地址(0121)设置显示列地址 Y address写显示数据01写入的数据写显示数据到RAM静态驱动0010100100/11:静态驱动,0:动态驱动刷新率设置0010101000/11:1/32,0:1/16结束0011101111释放读写复位0011100011设置为初始状态表3.7部分传送指令表3.2定时器/计数器AT89C2051单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。3.2.1定时器/计数器的结构 图3.8定时器/计数器结构原理图从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。 3.2.2定时计数器的原理 16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率 fcount=1/12osc。如果晶振为12MHz,则计数周期为: T=1/(12106)Hz1/12=1s 。这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。 当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU 当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。3.2.3 定时器计数器方式寄存器TMOD 定时器计数器T0和T1有2个控制寄存器TMOD和TCON,它们分别用来设置各个定时器计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。 定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式如下图所示。 D7 D6 D5 D4 D3 D2 D1 D0GATECTM1M0GATECTM1M0控制定时器T1控制定时器T0表3.9TMOD格式表 GATE:门控位。GATE=0时,定时器由软件控制位TR0或TR1来控制启停。TRi位为1时,定时器启动开始工作;为0时定时器停止工作。 GATE=1时,定时器的启动停止由外部中断引脚和TRi位共同控制。只有当外部中断引脚INT0或INT1为高时,TR0或TR1置1才能启动定时器工作。 CT:功能选择位。当CT=0时设置为定时器工作模式;当CT=1时设置为计数器工作模式。M1、M0:工作方式选择位。定时器计数器有4种工作方式,由M0、M1来定义:M0M1操作方式功能说明00方式013位定时器计数器,TLi只用低5位01方式116位定时器计数器10方式2自动重装初值的8位定时器计数器,THi的值在保持不变,TLi溢出时,THi的值自动装入TLi中。11方式3仅适用于T0,T0分成2个独立的8位计数器;T1停止计数。表3.10定时器计数器工作方式表定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。复时,TMOD所有位均为0。 3.2.4定时器/计数器控制寄存器TCONTCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。TCON的格式如下图所示。其中TFl,TRl,TF0和TR0位用于定时器计数器;IEl,ITl,IE0和IT0位用于中断系统。 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (位地址)TF1TR1TF0TR0IE1IT1IE0IT0 各位定义如下: TF1和TF0:分别为定时器1和定时器0溢出标志。当计数器计满产生溢出时,由硬件自动置“1”,并可申请中断。进入中断服务程序后,由硬件自动清零。TR1和TR0: 定时器1和定时器0启动控制位。IE1和IE0: 外部中断引脚INT0或INT1中断请求标志位。当外部中断源有请求时其对应的中断标志位置“1”。其复位方式由触发方式来设置。IT1和IT0: 为外部中断1和外部中断0的触发方式选择位。ITi设置为“0”时为电平触发;设置为“1”时为边沿触发方式。TCON中低4位与中断有关。由于TCON是可以位寻址的,因而如果只是清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作。 (1)定时器/计数器的初始化由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤如下: 1.确定工作方式(即对TMOD赋值); 2.预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3.根据需要开放定时器/计数器的中断(直接对IE位赋值); 4.启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。 (2)定时器/计数器的四种工作方式定时器T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。通过对方式寄存器TMOD中M1、M2位的设置,可选择四种工作方式。 1.工作方式0工作方式0是一个13位的定时/计数器,16位计数器只用了高8位THi和低5位(TLi的D4D0位),TLi的高3位未用。 2.工作方式116位的定时/计数器,原理同工作方式0 3.工作方式2自动重装计数器。16位计数器拆成两个8位计数器,低8位作计数器用,高8位用于保存计数初值。当低8位计数产生溢出时,将TFi位置1,同时又将保存在高8位中的计数初值重新装入低8位计数器中,又继续计数,循环重复不止。 4.工作方式3方式3只适用定时器T0,T0在该模式下被拆成两个独立的8位计数器TH0和TL0。其中TL0使用原来T0的一些控制位和引脚,它们是:C/T,GATE,TR0,TF0和T0(P3.4)引脚INT0(P3.2)引脚。此方式下的TL0除作8位计数器外,其功能和操作与方式0,方式1完全相同,可作计数也可作定时用。该方式下的TH0,此时只可作简单的内部定时器功能。它借用原定时器1的控制位和溢出标志位TR1和TF1,同时占用了T1的中断源。TH0的启动和关闭幕式仅受TR1的控制,TR1=1,TH0启动定时;TR1=0,TH0停止定时工作。该方式下的T1仍可设置为方式0、方式1、方式2,用于任何不需要中断的场合。3.3里程计数原理 本设计所采用的霍尔式传感器由一个磁钢和一个霍尔器件组成。磁钢被贴在非磁性圆盘上,随圆盘一起旋转,霍尔器件固定在圆盘附近,圆盘每转一圈,霍尔器件将产生一个脉冲,一个脉冲即代表了一个圆盘的周长。本设计中霍尔传感器产生的脉冲将被送到单片机的内部定时计数器Timer1的T1口。内部定时计数器Timer0工作在定时状态,Timer1工作在计数状态。Timer0和Timer1均工作在模式1。本设计中Timer0产生0.5秒的定时。Timer1将对0.5秒内对加到T1脚的脉冲进行计数。假设0.5秒内timer1计数到N个脉冲。则圆盘的转动频率为 N / 0.5=2N 。若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。3.4本章小结本章叙述了该采集信息采集系统的硬件设计部分,整个系统以单片机AT89C2051为核心器件,由霍尔传感器采集得到微弱的轮速脉冲信号,经过信号放大电路的放大整形处理,传送到单片机的Timer1的T1口,再通过单片机的计算和控制,在液晶显示屏SED1520上即可得到显示里程数据,从而实现汽车行程信息的数据采集。第4章 软件设计4.1系统软件设计流程图 开始初始化显示汉字 延时清屏显示汉字 电机控制 方向显示计数脉冲 里程显示图4.1系统软件设计流程图本系统软件设计采用模块化设计方法。整个系统由初始化模块、电机转速控制模块、频率测量模块、里程显示模块以及其他功能模块组成。程序设计中,以60H、61H、62H三个地址为数据缓冲区,60H(DATA1)用于存储每0.5s 计数到的脉冲数,用于计算速度;61H(DATA2)、62H(DATA3)两个地址用于存储计数到的脉冲的累加数据,用于计算里程。4.2主要模块程序设计4.2.1电机转速控制模块程序设计电机转速的控制模块由指拨开关、单片机、DAC0832数模转换芯片组成。指拨开关K0-K7接单片机的P10-P17(P1口),通过指拨开关可输入数据0-255,单片机将指拨开关输入的数据输出到DAC0832数模变换芯片,通过数模变换,转换成-8V+8V的电压驱动直流电机。从而达到对电机转速的控制。输入数据等于128时,输出电压为0V;数据大于128时,输出电压大于0V;输入数据小于128时,输出电压小于0V。mov p1,#0ffh ;设置P1口为输入口 mov dptr,#cs0832 mov A, p1 movx dptr,A4.2.2频率测量模块程序设计霍尔传感器产生的脉冲被送到单片机的内部定时/计数器timer1的T1口。内部定时/计数器Timer0工作在定时状态,Timer1工作在计数状态。Timer0和Timer1均工作在模式1。本设计中Timer0产生0.5秒的定时。Timer1将对0.5秒内对加到T1脚的脉冲进行计数。假设0.5秒内timer1计数到N个脉冲。则圆盘的转动频率为 N / 0.5=2N 。JISHU: MOV IE,#10001010B ;打开中断开关 MOV TMOD,#MODE ;设定内部定时器/计数器的工作模式 MOV SP,#70H MOV 40H,#00H MOV TH1,#00H ;将timer1的计数寄存器赋初值0 MOV TL1,#00H ;将timer1的计数寄存器赋初值0 SETB TR1 ;启动timer1AA: CLR F1 ;标志位赋0 MOV TH0,#03CH ;定时器写入初值 MOV TL0,#0B0H SETBTR0 ;打开定时器timer0 JNBF1,$ ;等待50ms INC 40H MOV A,40H CJNE A, #09H,AA ;定时中断重复10次 CLR TR1 ;关闭计数器timer1 MOV DATA1,TL1 ;取出timer1计数值给DATA1 MOV A,DATA1 ADD A,DATA2 MOV DATA2,A ;将计数值累加到DATA2 JNC BB ;检查计数是否溢出 INC DATA3 ;有溢出则DATA3加1BB: RET;-定时中断子程序TIMER: CLR TR0 SETB F1 RETITimer0工作在模式1时,TLO、THO计数寄存器各使用8位,而28=256,设置计数初值时,把计数起点的值处以256,将余数放入TLO计数寄存器,将商数放入THO计数寄存器。本实验系统所采用12MHz的晶振,定时器所计数的脉冲的周期为1us。设计每50ms产生一次定时中断,需计数50000个脉冲,则装入计数寄存器的计数初值为65536-50000=15536,装入THO计数寄存器的初值为15536/256=60(03CH), 装入TLO计数寄存器的初值为176(0B0H)。程序流程图如下:开始初始化设定计数器初值,并启动F1=0定时器赋初值,并启动F1=0?yesno40H加140H=9 ?NoYes停止计数,取出计数值将计数值累加到DATA2CY=0 ?YESNoDATA3加1返回主程序Timer关闭定时器F1=1返回Timer0中断子程序图4.2频率测量模块程序流程图4.2.3液晶显示模块程序设计本设计中里程的数据由液晶显示模块显示,所用的液晶显示模块由SED1520芯片驱动,首先必须对液晶显示模块进行初始化,编写相应的字库,编写读写程序等。液晶显示程序的设计包括了初始化程序、清屏程序、写指令代码子程序、写显示数据子程序、读显示数据子程序、中文显示子程序、数字显示程序以及中文字库和数字字库的编写。程序详见附表。4.2.4里程数据显示模块程序设计本设计中霍尔传感器产生的脉冲被送到单片机的内部定时计数器timer1的T1口。内部定时计数器Timer0工作在定时状态,Timer1工作在计数状态。Timer0和Timer1均工作在模式1。本设计中Timer0产生0.5秒的定时。Timer1将对0.5秒内对加到T1脚的脉冲进行计数。假设0.5秒内timer1计数到N个脉冲。则圆盘的转动频率为 N / 0.5=2N 。若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。对脉冲频率进行处理,即可转化为车速。对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。本程序对汽车运行的实际情况进行模拟。设计程序时假设汽车轮子的周长约为2m,最后在显示屏显示的速度单位是km/h,里程单位是km。速度的计算如下:若0.5秒计数到N个脉冲,则轮子的转动频率为2N,车速为2N2 m/s,也即2N23.6 km/h 。设计中作近似处理,处理为14N km/h 。显示时先显示百位,再依次显示十位、个位。;-速度处理显示子程序SPEED: PUSH A MOV A,DATA1 MOV B,#0EH ;计数值乘以14 MUL AB MOV B, #64H ;除数赋值100 DIV AB ;得到百位显示数据代码 MOV CODE_ , A ;百位显示字库代码 MOV A,B LCALL BB1 ;调用速度写显示数据程序 MOV B,#0AH ;除数赋值10 DIV AB ;得到十位显示数据代码 MOV CODE_ , A ;十位显示字库代码 MOV CTEMP, #08H ;显示后移8列 MOV A,B LCALL BB1 ;调用速度写显示数据程序 MOV CODE_ , A ;个位显示字库代码 MOV CTEMP, #10H LCALL BB1 MOV DATA1,#00H ;数据缓冲区清零 POP A RETDATA2,DATA3存储计数到的脉冲总数,DATA2能存储255个脉冲,每次计数溢出,则DATA3加1,DATA3里的数据权重为256.这样两个字节的数据能计数最多65536个脉冲,也即131072 米 (130多公里)。实际制作里程表时只要适当增加数据缓冲区的数量,即可对最大显示里程进行扩充。程序设计过程中,对里程数据的显示作了近似处理;-里程处理显示子程序MILAGE: PUSH A MOV A,DATA3 MOV B,#0C8H ;除以200 显示百位里程数据 DIV AB MOV CODE_, A MOV CTEMP,#00H MOV A,B LCALL BB2 MOV B,#014H ; 显示十位里程数据 DIV AB MOV CODE_,A MOV CTEMP, #08H MOV A,B LCALL BB2 MOV B, #02H ; 显示个位里程数据 DIV AB MOV CODE_ ,A MOV CTEMP, #10H MOV A,B LCALL BB2 MOV CODE_ ,#0AH MOV CTEMP, #17H ;显示小数点 LCALL BB2 CJNE A,#00H, M1 MOV A,DATA2 ;DATA2除以50得到小数点MOV B,#032H 后第一位 DIV AB MOV CODE_, A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H ;余数再除以5得到小数点后第二位 DIV AB MOV CODE_ ,A MOV CTEMP, #26H LCALL BB2 POP A RETM1 : MOV A,DATA2 MOV B,#032H DIV

温馨提示

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

最新文档

评论

0/150

提交评论