天津中德职业技术学院
4 系统的软件设计
4.1 软件设计的流程
目前,52系列单片机使用的编程语言主要有汇编语言和C语言这两种。
最接近机器的语言是汇编语言,其常用来编制与系统硬件相关的程序,如访问I/O口、中断处理程序等,快它是一种最而又最有效的语言,在对于程序的空间和时间要求很高的场合中 使用汇编语言是最佳的选择,然而汇编语言也有其自身的缺点,比如程序开发周期较长、浮点运算处理复杂、程序移植性差等不利因素。
在程序设计过程中C语言编程设计思想被称为模块化程序设计思想。有的时候为了有效地完成任务,把所要完成的任务分割成若干个相互独立但相互又仍然有所联系的模块,这些模块使得任务变得相对简单,对外的数据交换相对简单、容易编写、容易检测,容易阅读和维护。
本设计采用C语言来编译程序。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。因此,软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。程序的主要模块有:主程序、定时溢出中断服务程序、外部中断服务程序。
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。掌握这一软件的使用对于使用51系列单片机的学者来说是十分必要的,如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会事半功倍。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势6。
13
天津中德职业技术学院
图4.1 Keil 软件主界面
图4.2 HEX文件的生成
14
天津中德职业技术学院 5 系统的总体调试
5.1 硬件的测试
按照之前设计好的智能循迹小车原理图,将各个模块进行组装,然后进行简单测试。 (1)晶振电路的测试
在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。
(2)复位电路的测试
复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为高电平5V左右7。
图5.1 单片机接口定义
15
天津中德职业技术学院 5.2 程序的下载
5.2.1 ISP下载线的使用
图5.2 ISP下载线
ISP下载线主要用于对芯片进行在线下载程序,在某些地方取代编程器,方便程序员修改客户应用程序,方便出差工作,无需带上笨重的编程器,一块AT89S52编程时间只要几秒即可完成。目前支持芯片有AT89S51,AT89S52,AT89S53,AT89S8252, AT89LS53, AT89LS8252 。一般用于电路板已留有ISP接口,作为在线编程用,没有ISP接口,可使用超小型下载板。体积小、携带方便、操作简单、经济实用,是在校大学生,初学者和电子工程师理想的编程工具。外型仅只是一个并口插座接一条1米连接线。
图5.3 ISP编程接口定义
16
天津中德职业技术学院 5.2.2 程序的烧录
将电路板与电脑通过ISP线连接。通过烧录软件在电脑端将程序烧录进单片机。
图5.4 烧录软件主界面
5.3 功能测试
程序下载进单片机以后就可以对循迹小车进行测试了。
将小车放置在预先准备好的黑色轨道上,小车从A点启动,沿黑色路径行走。当遇到交叉如C、D、E等点时,三个传感器全部检测到黑色信号,小车将直行直至传感器检测到白色。当小车到达终点B点后,三个传感器全部检测到白色,小车将继续前进并自动寻找黑色轨道。传感器捕捉到黑色轨道后小车会继续沿轨道行驶。
在这过程中,小车会遇到90°的急弯道和圆弧形的弯道,还有大量的交叉线路,主要测试小车直行的顺畅度和转弯时的灵活以及精准性。
17