毕业设计---汽车速度与里程表设计和实现.doc_第1页
毕业设计---汽车速度与里程表设计和实现.doc_第2页
毕业设计---汽车速度与里程表设计和实现.doc_第3页
毕业设计---汽车速度与里程表设计和实现.doc_第4页
毕业设计---汽车速度与里程表设计和实现.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

汽车速度与里程表设计和实现前言 汽车是现代生活中不可或缺的一种重要交通工具,传统的指针式里程表伴随着汽车的诞生就一直为人们喜爱,不过,新生事物不会因传统的存在而停止它前进的步伐。数码科技在今天已渗透到工业,农业,民用等产品的点点滴滴。新概念的汽车速度与里程表最直观的变化就是用大屏幕的液晶取代指针式表盘,直接用数字显示速度和里程,以及其他一些诸如油耗、时钟、环境温度等参数,直观的呈现给使用者。同时,它还具有成本低廉,显示清晰,稳定可靠等优点。由于单片机体积小,可以把它做到产品的内部,取代老式机械零件,缩小产品体积,增强功能,实现智能化。因此被广泛地用在智能产品中。intel公司的mcs-51系列单片机近年来得到了广泛流行。本文即介绍一种基于at89c2051单片机的汽车速度与里程表的设计和实现。本设计以at89c2051为核心,利用单片机的运算和控制功能,采用串口液晶显示模块实时显示所测汽车的速度和里程信息的设计方案。由于使用了串口液晶显示模块和e2prom,以及高效快速算法,因而可在节约系统资源和简化程序设计的基础上保证测量精度和系统实时性。本文先对汽车速度和里程表设计中所需设备作详细介绍,再对设计中存在的问题进行了讲述,对硬件部分和软件部分的设计和实现作认真的说明。1 系统概述1本系统设计由信号采集处理模块、单片机at89c2051控制模块、系统化lcd显示模块、系统软件等组成。系统软件包括单片机和液晶模块的初始化模块、液晶模块的写数据/命令子模块、周期测量模块、速度与里程计算模块、数据存储模块、速度和里程显示数据转bcd码模块、显示数据消多余零模块、数据显示模块以及实时中断服务模块等。其中,信号采集处理模块以霍尔传感器为核心器件,将不同的转速信号转换成相应的脉冲信号,并送到单片机的t1引脚;对单片机进行设置,使内部的定时器/计数器timer0工作在定时状态,timer1工作在计数状态,利用内部定时器t0对脉冲输入引脚t1进行控制,这样就能精确地检测到设定时间内加到t1引脚的脉冲数,一个脉冲即代表着车子前进一个轮长,对脉冲数进行处理就可得到里程和速度的数据;将数据送到lcd显示模块进行显示。速度显示部分采用串口液晶显示模块,所得的数据采用i2c总线并通过e2prom来存储,因而节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。汽车速度与里程表系统原理框图如图1-1所示:脉冲信号单片机lcd图1-1 汽车速度与里程表系统原理框图2 基本原理与设计方案本设计能实时地将所测的速度显示出来,同时也能够累计显示总里程数。该速度里程表能将传感器输入到单片机的脉冲信号的宽度(传感器将车速转变成相应宽度的脉冲信号)实时地测量出来,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由串口液晶显示模块实时显示出所测速度。本设计用两个按键来控制显示速度或里程。考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后再输入到单片机进行测速。单片机利用定时器t0的控制功能测出输入信号的周期后,再利用单片机的算术运算功能将周期转换成速度,同时每秒钟进行一次里程累计,从而计算出总里程。最后将得出的速度和里程值存储在e2prom中,并根据两个按键的选择情况来显示速度或里程。为了方便计算要显示数据值的段码,可再将其转换成压缩的bcd码,然后通过查表将要显示的数据值中每一位的压缩bcd码转换成8段码送到显示缓冲区,最后经串口送至液晶显示模块以显示所测的速度或里程。2.1 霍尔传感器简介2 霍耳效应:1879年e.h. 霍尔发现,如果对位于磁场(b)中的导体(d)施加一个电压(v),该磁场的方向垂直于所施加电压的方向,那么则在既与磁场垂直又和所施加电流方向垂直的方向上会产生另一个电压(uh),人们将这个电压叫做霍尔电压,产生这种现象被称为霍尔效应。霍尔效应从本质上讲是运动的带电粒子在磁场中受洛仑兹力作用而引起的偏转。当带电粒子(电子或空穴)被约束在固体材料中,这种偏转就导致在垂直电流和磁场的方向上产生正负电荷的积累,从而形成附加的横向电场。通有电流i 的金属或半导体板置于磁感强度为b 的均匀磁场中,磁场的方向和电流方向垂直,在金属板的第三对表面间就显示出横向电势差 u h 的现象称为霍耳效应。u h 就称为霍耳电势差。实验测定,霍耳电势差的大小和电流i 及磁感强度b成正比,而与板的厚度d 成反比。霍尔转速传感器:霍尔转速传感器磁场由磁钢提供,所以霍尔传感器和磁钢需要配对使用。霍尔传感器在非磁材料的圆盘边上粘贴一块磁钢,它固定在圆盘外缘附近。圆盘每转动一圈,霍尔传感器便输出一个脉冲。通过单片机测量产生脉冲的频率就可以得出圆盘的转速。霍尔电流传感器本身已经存在滤波电路,输出无须再加装滤波,可直接供单片机的05v的 ad采集或直接送到单片机的中断输入引脚,其采样信号非常稳定,而且抗干扰能力很强。霍尔电流传感器反应速度一般在7微妙,所以不用考虑单片机循环判断的时间。若在圆盘上贴上多块磁钢,则圆盘每转一圈,输出的脉冲信号将相应增加,单位时间内测到的脉冲数将增多,测出的转速也将更加精细。霍尔转速传感器的外形图和与磁场的作用关系如图2.1-1所示;霍尔传感器检测转速示意图如图2.1-2所示:图2.1-1 霍尔转速传感器的外形图图2.1-2 霍尔传感器检测转速示意图2.2 at89c2051芯片简介3at89c2051是一个低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的flash只读程序存储器和128 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,内置功能强大的微型计算机的at89c2051提供了高性价比的解决方案。at89c2051是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,at89c2051可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。at89c2051具有如下功能特性: 兼容mcs51指令系统; 32个双向i/o口; 两个16位可编程定时/计数器; 1个串行中断; 两个外部中断源; 4k可反复擦写(1000次)flash rom; 128x8bit内部ram; 6个中断源; 低功耗空闲和掉电模式; 软件设置睡眠和唤醒功能。2.3 液晶显示模块sed1520sed1520液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8位微处理器相连,集行、列驱动器于一体,因此使用起来十分方便,作为内藏式控制器被广泛应用于点阵数较少的液晶显示模块。2.3.1 sed1520芯片介绍本设计仿真实验系统采用的液晶显示屏内置控制器为sed1520,点阵为122x32,需要两片sed1520组成,由e1、e2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两种连接方式。一种为直接访问方式,一种为间接控制方式。本设计采用直接控制方式。直接控制方式就是将液晶显示模块的接口作为存储器或i/o 设备直接挂在计算机总线上。计算机通过地址译码控制 e1和 e2的选通;读/写操作信号 r/w由地址线 a1控制;命令/数据寄存器选择信号ao由地址线a0控制,地址映射如表2.3.1-1所示(地址中的x由lcd cs决定,可参见地址译码部分说明);液晶屏显示控制电路如图2.3.1-1所示:表2.3.1-1 地址映射(地址中的x由lcd cs决定,可参见地址译码部分说明)0x000h0x001h0x002h0x003h0x004h0x005h0x006h0x007h写e1指令写e1数据读e1状态读e1数据写e2指令写e2数据读e2状态读e2数据图2.3.1-1 液晶屏显示控制电路2.3.2 sed1520特性内置显示ram区ram容量为2560(32行80列)位。ram中的1位数据控制液晶屏上一个点的亮灭状态:“1”表示亮,“0”表示暗。它具有16个行驱动口和16个列驱动口,并可级联两个sed1520实现32行驱动。还可直接与80系列微处理器相连,亦可直接与68系列微处理器相连。其驱动占空比为1/16或1/32。并可以与sed1520配合使用,以便扩展列驱动口数目。2.3.3 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点阵)汉字。2.4 定时器/计数器结构416位的定时/计数器分别由两个8位专用寄存器组成,即:t0由th0和tl0构成;t1由th1和tl1构成。其访问地址依次为8ah-8dh。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器tmod和一个8位的定时控制寄存器tcon。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。tmod主要是用于选定定时器的工作方式;tcon主要是用于控制定时器的启动停止,此外tcon还可以保存t0、t1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚t0(p3.4)和t1(p3.5)输入。定时器/计数器的结构原理图如图2.4-1所示:图2.4-1 定时器/计数器的结构原理图2.5 定时计数器的原理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也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。2.6 频率测量本设计所采用的霍尔传感器是由一个磁钢和一个霍尔器件组成的。磁钢被贴在非磁性圆盘上,跟着圆盘一起旋转。此霍尔器件就固定在圆盘的附近,工作时,圆盘每转动一圈,霍尔器件就会产生一个脉冲。这里的一个脉冲就代表了一个圆盘的周长。在本设计中,霍尔传感器产生的脉冲将被送到单片机的内部定时计数器timer1的t1口。内部的定时计数器timer0工作在定时状态,timer1工作在计数状态。timer0和timer1均工作在模式1。本设计中,timer0所产生的是0.5秒的定时。timer1将对0.5秒内对加到t1脚的脉冲进行计数。假设0.5秒内timer1计数到n个脉冲,则圆盘的转动频率为 n / 0.5=2n 。若是将磁钢贴于汽车的轮轴上,则汽车轮子每转一圈,霍尔器件产生一个脉冲。对脉冲频率进行处理,即可转化为车速。对脉冲数进行累加再乘以轮子的长度,即可得到里程数据。本设计中开辟了两个字节的数据区存储累加脉冲数据,最多能计数65536个脉冲,也即131072 米(假设车轮周长2m)。3 系统硬件设计53.1 信号预处理电路它由二级电路构成,第一级是由开关三极管组成的零偏置放大器,采用开关三极管可以保证放大器具有良好的高频响应。当输入信号为零或负电压时,三极管截止,电路输出高电平;而当输入信号为正电压时,三极管导通,此时输出电压随着输入电压的上升而下降,这使得速度里程表既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。由于放大器的放大功能降低了对待测信号的幅度要求,因此,系统能对任意大于0.5v的正弦波和脉冲信号进行测量。预处理电路的第二级采用带施密特触发器的反相器ct74ls14来把放大器生成的单相脉冲转换成与coms电平相兼容的方波信号同时将输出信号加到单片机的p3.2口上。系统信号预处理电路如图3.1-1所示:图3.1-1 系统信号预处理电路3.2 施密特触发器利用施密特触发器状态转换过程中的正反馈,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。从传感器得到的矩形脉冲经传输后往往发生波形畸变。当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接收端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。只要施密特触发器的vt+和vt-设置得合适,均能受到满意的整形效果。施密特触发器对脉冲整形图如图3.2-1所示:图3.2-1 施密特触发器对脉冲整形图3.3 液晶显示电路和数据存储电路6本设计的显示部分采用液晶显示模块lcm0825,lcm0825是8位段码式液晶显示模块,它内部集成有lcd控制器、lcd驱动器和ram,因而可方便显示数据的编程。液晶显示模块采用3-4线串行数据输入,可直接与单片机接口。由于串行接口方式节省了所需的口线和系统资源,因而使系统具有较高的资源利用率。该模块可在2.7v-5.2v电压下工作,其低功耗及背光可调特性使得设计更具有经济性和通用性。lcm0825能够显示8位数据,每一个数据均以8段码的形式放在其内部显示ram区,并用模块内ram的两个存储地址来放置一个数据的8段码。8位数据共占用内部16个地址。每一个数据位的8段码存放形式及高低地址存放段码的顺序都和表1所列的第8位数据的8段码存放格式一样,只是段码的存放地址不同。所以,编程时一定要考虑数据的存放地址和形式。在使用该液晶显示模块时,vcc与vlcd之间可用一个50k的电位器来调整背光。液晶显示模块与单片机接口电路图如图3.3-1所示:图3.3-1 液晶显示模块与单片机接口电路图4 系统软件设计整个程序的设计以gx-arm-s3c2410试验箱为平台,其中速度和里程的计算都采取了近似处理。本系统软件采用模块化设计方法。整个系统由初始化模块、电机转速控制模块、电机转向显示模块、频率测量模块、速度,里程显示模块、汉字显示模块以及其他功能模块组成。整个程序设计中,以60h、61h、62h三个地址为数据缓冲区,60h(data1)用于存储每0.5s 计数到的脉冲数,用于计算速度;61h(data2)、62h(data3)两个地址用于存储计数到的脉冲的累加数据,用于计算里程。系统程序流程总框图如图4-1所示: 开始初始化显示汉字 延时清屏显示汉字 电机控制 方向显示计数脉冲速度 里程显示图4-1 系统程序流程总框图4.1 电机转速控制模块程序设计7电机转速的控制模块由指拨开关、单片机、dac0832数模变换芯片组成。指拨开关k0-k7接单片机的p10-p17(p1口),通过指拨开关可输入数据0-255,单片机将指拨开关输入的数据输出到dac0832数模变换芯片,通过数模变换,转换成-8v+8v的电压驱动直流电机。从而达到对电机转速的控制。输入数据等于128时,输出电压为0v;数据大于128时,输出电压大于0v;输入数据小于128时,输出电压小于0v。电机转速控制模块程序设计如下:mov p1,#0ffh ;设置p1口为输入口mov dptr,#cs0832mov a, p1movx dptr,a4.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 setb tr0 ;打开定时器timer0 jnb f1 , $ ;等待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 reti当timer0工作在模式1时,tlo、tho计数寄存器各使用8位,从计算式 28 = 256,可以得出在设置计数初值时,把计数起点的值除以256,再将其余数放入tlo计数寄存器,将商数放入tho计数寄存器。这个实验系统所采用的是12mhz的晶振,定时器所计数的脉冲的周期为1us。由此,我们将这样设计:每50ms产生一次定时中断,就需要计数50000个脉冲,则装入计数寄存器的计数初值就为6553650000 = 15536,这时,装入tho计数寄存器的初值就为15536/256 = 60(03ch), 装入tlo计数寄存器的初值为176(0b0h)。timer0中断子程序流程图如图4.2-1所示:timer关闭定时器f1=1返回 图4.2-1 timer0中断子程序流程图主程序流程图如图4.2-2所示:开始初始化设定计数器初值,并启动f1=0定时器赋初值,并启动f1=0?yesno40h加140h=9 ?noyes停止计数,取出计数值将计数值累加到data2cy=0 ?yesnodata3加1返回主程序图4.2-2 主程序流程图4.3 液晶显示程序设计8本设计中速度和里程的数据由液晶显示模块显示,所用的液晶显示模块由sed1520芯片驱动,首先对液晶显示模块进行初始化,编写相应的字库,编写读写程序等。液晶显示程序的设计包括了初始化程序、清屏程序、写指令代码子程序、写显示数据子程序、读显示数据子程序、中文显示子程序、数字显示程序以及中文字库和数字字库的编写。4.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 ab add a,#05h ;显示大于0.50公里时代码加5 mov code_, a mov ctemp, #1eh mov a,b lcall bb2 mov b,#05h div ab mov code_ ,a mov ctemp, #26h lcall bb2 pop a ret;-第二行速度数据显示调用子程序bb1: push a mov page_,#00h mov a,ctemp add a,#3ch mov column,a lcall diw_pr pop a ret;-第一行里程数据显示调用子程序bb2: push a mov page_,#02h mov a,ctemp add a,#3ch mov column,a lcall diw_pr pop a ret4.5 模块程序设计该程序对从指拨开关输入的数据作出反应,若输入的数据为128,则在lcd显示屏上显示“停止”的标志,若输入的数据大于128,则显示“正转”的标志,若输入的数据小于128,则显示“反转”的标志。模块程序如下:fxb: mov ctemp ,#00h cjne a,#80h,fx mov page_,#00h ;停止 mov a,ctemp add a,#2ah mov column,a mov code_,#09h lcall ccw_pr mov page_,#00h ;显示“0” mov a,ctemp add a,#3ch mov column,a mov code_,#00h lcall diw_pr mov page_,#00h ;显示“0” mov a,ctemp add a,#44h mov column,a mov code_,#00h lcall diw_pr mov page_,#00h ;显示“0” mov a,ctemp add a,#4ch mov column,a mov code_,#00h lcall diw_pr retfx: anl a,#80h cjne a,#80h,fx1 mov page_,#00h ;正转 mov a,ctemp add a,#2ah mov column,a mov code_,#07h lcall ccw_pr retfx1: mov page_,#00h ;反转 mov a,ctemp add a,#2ah mov column,a mov code_,#08h lcall ccw_pr ret5 系统软件调试9程序的调试过程是一个比较复杂的过程,有些需要高度的技巧和一定的方法。一般的编程软件都提供单步、单步越过、断点、运行到光标处等基本方法,一般掌握这几种基本方法就可以解决绝大部分问题。经过长时间的调试实践之后自然就可以掌握一定的调试技巧,即熟能生巧。 5.1 程序查错手段单片机的应用系统均需借助对应的开发系统(或装置)进行在线仿真,对应用系统的软、硬件进行全面地检测与调试。各种开发系统或装置均提供以下查错手段。首先有单步执行。采用单步执行操作可对应用程序每步执行一条指令,可逐条检查这一段程序的执行过程是否符合原设计要求。可直接查出错误所在。宏单步可执行一段程序,如一步就可执行完整个循环程序段。再次,有断点设置全速运行可在程序有疑虑的地方设置断点,从设置的起始地址开始,以全速或非全速方式向设定的断点处运行。如果这段程序无语法或逻辑上的错误,则连续运行到设置的断点处停止运行,返回监控状态。如果有错误,则在错误处停止运行,如果进入死循环或者程序跑飞,就永远不会停止运行。全速断点运行为检查实时性及中断响应处理等提供了方便。另外,还有显示器窗口检查和实时跟踪记录等。除上述之外,还有以下功能: 符号化调试,程序运行; 自动生成目标代码和固化;5.2 源程序检测在源程序进行调试之前,硬件系统必须基本正确,重点对源程序进行检测。首先是对照程序流程图,先对相对独立的功能模块,子程序,中断服务程序等进行仔细地检查,然后对整个主程序按其功能划分成若干程序段进行分段检查,逐步扩大到整个程序系统。检查时重点检查程序的逻辑功能、结构和算法,有关参量和初始值是否完善,正确,关键性指令的选择是否合理,特别是借助开发系统也较难调试正确的隐患,只有通过细心的检查加以排除。再次是硬件系统检查,硬件系统必须排除电源短路和碰线故障,然后空板(没有插上芯片等器件)进行上电检查各电源点是否正确,有关逻辑电平及信号是否正确。确认无误之后逐次插上芯片等器件,借助开发系统可检查出是否有硬

温馨提示

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

评论

0/150

提交评论