当前位置:文档之家› 软件的设计与调试

软件的设计与调试

4 软件的设计与调试软件部分主要是用所编写的语言程序来配合相应的硬件电路,控制所设计电路实现所预期功能的部分。

C8051F120单片机的程序可以使用C语言,也可以使用汇编语言,或者是两者的结合,本设计使用C 语言编写程序实现拖拉机工况油耗仪功能。

软件部分分成几大模块来实现单片机的功能。

程序主函数的设计,由于设计中使用了相应的芯片,所以必须首先对相应的芯片进行初始化并对通讯串口芯片进行初始化、中断向量的设计以及开中断、循环等待等准备。

程序的详细如附录中的程序部分所示。

4.1 初始化程序对所有模块进行初始化,例如单片机的初始化、LED数码管显示的初始化等。

程序如附录中所示。

初始化是为了让系统正常工作,而给一些变量参数赋以初值的程序。

初始化程序主要任务是清屏幕。

初始化模块,如图4.1所示。

系统加电后进行初始化,测量系统进入起始状态,等待控制面板输入。

系统检测控制面板输入,根据控制面板输入进入相应测量程序。

SFRPAGE = CONFIG_PAGE;WDTCN = 0xde; // Disable watchdog timerWDTCN = 0xad;OSCILLATOR_Init (); // Initialize oscillatorPORT_Init_UART0 (); // Initialize crossbar andGPIOPORT_Init_UART1 (); // Initialize crossbar andGPI1UART0_Init (); // Initialize UART0UART1_Init (); // Initialize UART1其中串口uart0 初始化如下void UART0 {char SFRPA _Init (void) //uart0 初始化GE_SAVE;SFRPAGE_ SAVE = SFRPAGE; // Preserve SFRPAGE SFRPAGE = TMR2_PAGE;TMR2CN = 0x00; // Timer in 16-bit auto-reloadup timer// modeTMR2CF = 0x08; // SYSCLK is time base; nooutput; // up count only RCAP2 = - ((long) SYSCLK/BAUDRATE/16);TMR2 = RCAP2;TR2= 1;SFRPAGE = UART0_PAGE; SCON0 = 0x50; // Start Timer2SSTA0 = 0x15;TI0 = 1;SFRPAGE = SFRPAGE_SAVE; }// 8-bit variable baud rate; // 9th bit ignored; RX enabled // clear all flags// Clear all flags; enable baud rate// doubler (not relevant for these// timers);// Use Timer2 asRX andTX baud rate// source;// Indicate TX0 ready// Restore SFRPAGE开始图4.1主程序初始化流程图拖拉机工况油耗仪的应用软件根据系统功能要求而设计,以可靠地实现系统功能。

设计时,将单片机的数据处理模块设计成主程序模块,其他模块在该模块的控制下进行。

应用的子程序实行标志化管理,即在需调用的程序模块之前,都设置了程序实现的功能名称,调用时可直接转向该模块程序,这样既便于调试、链接,又便于移植、修改:程序的调试工作是采用仿真器检验在计算机上编写的程序运行是否正常、有无语法错误等,查看运行结果是否符合设计目的,再通过仿真器挂接硬件电路,模拟现场测试,检查硬件的电路连接和软件程序流程。

在测试中由于存在干扰,软件程序设计中需要编写抗干扰程序,以提高采集数据的准确度。

4.2 串口通讯程序设计串口通讯程序是通过软件程序的编写,过对软件的查询和中断服务程序的检测来实现数据的接受与传送。

对UART的控制和访问是通过相关的特殊功能寄存器即串行控制寄存器(SCON)和串行数据缓冲器(SBUF)来实现的。

一个SBUF地址可以访问发送寄存器和接收寄存器。

读操作将自动访问接收寄存器,而写操作自动访问发送寄存器。

UART 可以工作在查询或中断方式。

UART 有两个中断源:一个发送中断标志TI (SCON )(数据字节发送结束时置位)和一个接收中断标志RI(SCON )(接收完一个数据字节后置位)。

当CPU转向中断服务程序时硬件不清除UART中断标志,中断标志必须用软件清除。

这就允许软件查询UART 中断的原因(发送完成或接收完成)。

使用双串口,必须用两个独立的波特率发生器,可以用两个时钟,UART0 用时钟2产生波特率,UART1 用时钟1 产生波特率。

判断串口发送标志位TI是否为1,若TI为1,则把数据从单片机发给PC机,并把TI清零,中断子程序返回;若TI 为0,表明RI=0, 则把串口接收标志位RI 清零,把串口接收缓冲器SBUF 中的数据写入串口接收数据单元RECDATA, 再把该数据送到串口发送缓冲器SBUF 中,传给PC 机,置串口成功接收数据标志位RECOKBIT 为1,表明串口成功接收发送数最后中断子程序返回接收程序流程图’发送程川流程图:4.3 数码管显示程序和按键扫描程序设计本设计有4 个显示界面来提供用户需要显示的信息,其中第一个界面是开机界面,每一个界面显示不同的内容,通过程序来对需要显示的项目进行设显示。

数据显示程序的流程图如图4.3。

系统的测试功能是在控制面板的控制下完成的,因此,控制面板管理和控制显得非常重要。

在设计测试程序时,把控制面板管理程序模块设计成主程模块,其他模块都是在该模块的控制下进行的。

调整项目需要通过按键进行控制,所以需要扫描按键进行项目的控制,具体的按键扫描控制如下图4-4程序流程图所示4.4软件系统主程序通过主程序,能够控制整个硬件系统的功能实现。

软件系统的设计流程,如图4. 5所示。

5 主程序流程图4.5 本章小结测试系统中软件是配合控制硬件电路,共同完成对油耗的智能化显示,其功能通过分程序模块实现,本章介绍了系统主程序,初始化模块、键盘模块、数据显示模块和串口接收和发送数据模块等。

同时介绍了程序的调试工作,以对编写的程序进行运行检查验证。

5.2 系统的软硬件调试5.2.1系统调试使用的仪器(1) pc机1块( 2)单片机编程器 1 台( 3)电源 1 台( 4 )万能表 1 台5.2.2系统调试的内容在一个课题制作成功之前要经过多次的细心和耐心的调试,只有这样才能完成课题并取得更加理想的效果,每一个细节的检查都是十分必要的,因为很可能一个细节问题的疏漏就会导致整个系统的不能工作!通电检查,方法是将万用表电流档串联在电源和所测电路板之间,观察电路总静态电流的大小。

若发现电流过大,说明电路可能有短路;电流过小或无电流,表示电路存在断路。

遇到上述情况,必须无排除故障,才能进行调试5.2.3系统调试过程中遇到的问题软件部分由于编程量很大,有时候把一些循环语句弄混了,导致结果出不来,最后经过仔细从头到尾的检查才发现问题。

刚开始按键控制不能循环,选择输出是第 4 路输出不能直接切换到第一路输出,后来加了个循环子程序问题就解决了。

结论本文研究的拖拉机工况油耗仪在单片机的控制下,通过计算机送来的数据,在控制软件的支撑下,能实现拖拉机的静态和动态测试,能测量拖拉机的累计油耗、瞬时油耗、油温、油压。

解决了国内油耗检测产品与国外相比测试精度相对较低、测试功能不全面、体积略大和成本较高等问题。

该项技术的产品化,将极大地推进拖拉机油耗规范化、提高油耗检测精度,对于新生产车、营运车辆可进行燃料经济性的精确检测、评价。

能很好地满足科研院所、车辆制造、使用和维修单位、拖拉机用户等需要,应用前景广阔。

主要研究工作:(1)确定了拖拉机工况油耗仪总体技术方案。

拖拉机工况油耗仪应能完成拖拉机工况油耗仪的智能显示,主要解决目前拖拉机油耗检测产品存在的燃油浪费,精度不高,操作系统复杂等问题,为此从燃油流量信号的检测、处理与输出等方面入手进行相关研究,建立检测系统数学模型、构建仪器结构,在软件的支撑下,满足上述要求。

并将理论在实践中进行验证。

(2)进行了拖拉机工况油耗仪硬件的设计与选择,构建了仪器结构。

根据拖拉机工况油耗仪要实现智能化显示功能的要求,针对智能油耗仪的具体应用情况,选择系统组成元件,主要有单片机、显示器、时钟和日历、监控芯片、键盘、通讯接口和电源等,构成油耗检测系统的硬件部分,进行各组成元件之间的合理匹配,设计系统控制电路,完成硬件部分的设计。

(3)建立了拖拉机工况油耗仪数学模型。

根据拖拉机发动机供油系统工作原理和拖拉机运行条件,确定油耗显示方法,建立油耗系统显示数学模型。

(4)进行了油耗显示系统软件的设计与调试,同时提出了系统抗干扰的相关措施。

配合硬件部分控制电路编写控制软件,共同完成对油耗的智能化显示。

针对油耗检测系统工作过程中会遇到的干扰,分析其原因,采取相应办法,提高油耗检测系统的抗干扰能力。

(5)进行了验证性试验。

试验数据分析说明,试验系统实际油耗与油耗仪测量油耗具有很好的一致性,试验结果重复性好,数据可信,可作为建模的基础。

大参数测量时系统测量精度高,接近实际测量值。

建立的油耗计算模型是可行的,但误差略大,需要对该模型进行修正。

根据具体情况对理论模型进行了修正,从而提高了油耗检测精度,可以达到预期研究的目标。

进行了试验误差分析。

为了更合理的选用测试装置和测试方法,正确地分析误差产生的原因,减小或消除误差,并恰当地处理试验数据,以便得到理想的试验结果。

不足之处与进一步研究展望:拖拉机油耗测量的影响因素考虑的不够全面,会影响到测试精度。

今后还将加大该方面的研究力度,通过控制程序加以修正。

谢辞岁月如歌,光阴似箭,回首求学历程,对那些引导我、帮助我、激励我的人,我心中充满了感激。

在论文完成过程之中,除了我自己的潜心学习和研究之外,也凝聚了很多人的心血。

所以在这里,我要对帮助我完成论文的所有人表示感谢。

首先,我要对我的导师——机电工程学院赵书尚教授,表示我最由衷的感谢,感谢赵老师在毕业设计过程中给与的指导。

赵老师自始至终关心督促毕业设计进程和进度,帮助解决毕业设计中遇到的许多问题。

还不断传授分析问题和解决问题的办法,并指出了正确的努力方向,使我在毕设过程中少走很多弯路。

能师从赵老师,我为自己感到庆幸!希望我的老师能永远的身体健康、永远年轻、永远幸福!同时,身边的同学也给了我许多的帮助,特别是机电工程学院机电091 班的各位同学,在我硬件及软件遇到无法解决的困难的时候给予我最真诚的鼓励和帮助,尤其是在c 语言编程的问题上给了我很多的指点,让我有信心完成课题的设计。

相关主题