《工业微型条码识别系统的软件设计与实现毕业设计(42页).doc》由会员分享,可在线阅读,更多相关《工业微型条码识别系统的软件设计与实现毕业设计(42页).doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-工业微型条码识别系统的软件设计与实现毕业设计-第 40 页工业微型条码识别系统的软件设计与实现摘要条形码读取技术是信息采集,自动识别、功能获取的重要方法。条形码信息主要包括产地、制造厂家、商品完备的编号、生产日期、书籍的出版时间、种类、保质期等,在众多领域都得到广泛使用。本论文设计了微型条码识别系统。该系统主要由SONIX SN9S102C,SONIX SN9P701F和AT89S52单片机组成。AT89S52为主控制器配合外围设备与RS485的数据通信将数据传输并显示在上位机上。这次毕业设计使用了单片机控制SN9P701F,使实物的体积较其他条形码识别器小了很多。该方法不仅大大缩小了设备的
2、成本,更重要的是这种识别器便于人们携带。最后本论文实现了条码识别系统的软件部分,并通过了测试与调试,基本上完成了目标和要求。关键词:条形码;SONIX SN9P701;AT89S52单片机;RS485 THE INDUSTRYS MINI BAR CODE IDENTIFICATION SYSTEM SOFTWARE DESIGN AND IMPLEMENTATIONAbstractBarcode reading technology is important methods to information collection, automatic identification and the
3、 function gets. Barcodes main information include Origin, the manufacturers number, production date, complete goods, books, publication date, type, expiration date, and so on,which are generally used in many areas. This thesis designs mini barcode recognition system , the system consist of the SONIX
4、 SN9S102C, SONIX SN9P701F and AT89S52 MCU. AT89S52 MCU combined with other devices and display of data communication with the rs485 on the host computer.This graduation project uses MCUcontrol SN9P701F , the physical volume than other barcode recognition Little a lot, The method has not only greatly
5、 reduced the cost of equipment, and more importantly, this recognition can be easy to people carry. Finally the thesis completes barcode recognitions software system, and passes the test and debug, basically completed the goals and requirements.Keywords: Barcode; SONIX SN9P701;AT89S52 MCU;RS485第1章 绪
6、论11.1 课题的背景和意义11.2 主要研究内容11.3 论文的结构安排11.4 本章小结2第2章 系统总体框架设计32.1 系统结构框图32.2 SONIX SN9S102C32.3 SONIX SN9P701F32.4 单片机模块32.5 拨码开关42.6 RS485串口通信模块42.7 I2C总线42.8 本章小结4第3章 系统硬件介绍53.1 SONIX SN9S102C53.2 SONIX SN9P701F53.2.1 SONIX SN9P701F的描述53.2.2 SONIXSN9P701F的特点53.3 AT89S52单片机设计53.3.1 单片机的主要性能63.3.2 单片机
7、最小系统概述63.3.3 AT89S52单片机最小系统电路图63.4 单片机的控制方案与选择73.4.1 控制概述73.4.2 双向接口83.4.3 数据形式103.4.4 控制时间113.5 本章小结12第4章 系统软件的详细设计134.1 系统流程图134.2 系统初始化设计134.3 SONIX SN9P701F控制程序设计154.4 RS485串口通信程序设计174.4.1 数据初始发送程序设计184.4.2 发送程序设计184.4.3 接收程序设计194.6 本章小结20第5章 系统程序实现与调试225.1 调试环境及调试步骤225.1.1 调试环境225.1.2 调试步骤225.2
8、 Keil uVision4中调试结果及分析225.2.1 Keil uVision4中的调试225.2.2 实物图演示结果分析245.4 本章小结24第6章 总结与展望266.1 总结266.2 展望26结束语27致谢28参考文献29附录A 总程序30前言随着条码逐渐走入我们的生活,条形码识别技术越来越得到人们的重视和利用,利用条形码获取信息的优点是:获取信息速度快,信息读取量大,高效率等。尤其是在经济全球化后,条形码识别对生活有着非凡的意义。但是普通的条码识别器依旧有很多问题,比如:体积大不利于携带等问题一直影响着我们对条形码的利用。这不仅对商品的流通造成了堵塞,也对时间利用造成了极大的浪
9、费。同时,条形码的种类也进行着不断的变化和改革,EAN码,UPC码,39码的不断问世,注定着条形码识别的发展进入一个新的时代。本次毕业设计使用AT89S52单片机和SONIX SN9P701F设计出由单片机控制的微型条码识别系统,实现人们随时随地对条形码的获取与识别。第1章 绪论1.1 课题的背景和意义不同规格的白缝隙和黑条组成了条形码,然后它们按照已有的编码规则形成了我们日常生活中经常见到的条形码,用它们来记录并传输一些人们交易所要用到的信息。恰好是由于这些反射率差异很大的条形码能够方便快捷的反应各个条形码中所包含的信息,让人们在很短的时间内获取最有用的信息,所以在物品交易,图书借阅,科研开
10、发,工业制造等许多产业中都起着不可或缺的作用。工业微型条码识别系统主要用于SMT机器工作位置的检测,预防工作出错产生误安装。微条码的发展应用基本可以划分为两个时期:第一时期是非人工结算,这个时期主要是应用于企业的内部架构。为企业之间信息交流提供了很大的便利,第二个时期是所有商品的供销管理,产品物流,企业的连锁化运营。在我国,应用条形码技术的现状大概处于第二个阶段,而且很大程度上识别设备还要借鉴国外的产品,所以与国外产品差距很大。在逐渐融入全球化的中国,大量商品的进出口已经成为现实,相信在不久的将来,条形码将处于全速发展的时代。条形码是物流技术的核心与关键,有效的条码识别软件能高效的实现对条形码
11、的阅读,对条形码的发展与应用提供了帮助。由于条形码与我们的生活息息相关,在工业生产中,伴随着交易数量的持续增加和服务质量的不断提高,产品进出口公司业务量和繁琐程度越来越大,工业微型条码软件系统便应运而生。目前,我们是将SONIX SN9P701F,AT89S52单片机和SONIX SN9S102C等设备连接在一起,具有高效化、小型化、规范化的优点。让合理的软件算法与简便的读取设备相结合,帮助人们对商品信息进行及时准确的分析处理,从而让条形码更简化了我们工作时的识别过程。本设计主要是单片机配合外围设备实现该条码识别系统的软件部分。1.2 主要研究内容本次课程设计中,采用AT89S52作为系统的控
12、制核心,与SONIX SN9P701F,SONIX SN9S102C等设备配合实现条形码的识别和信息的获取。1.3 论文的结构安排本文根据本次毕业设计的要求,将论文分为六章,具体内容如下:第1章 绪论,介绍了我国条形码领域的发展状况、本课题研究的应用和意义,以及本人对课题的实现思路。第2章 系统总体框架设计,简单的概括一下这次毕业设计的思路,分析各设备的作用。第3章 系统硬件介绍,概述了本次毕业设计所使用到的设备,如SONIX SN9S102CE,SONIX SN9P701F, AT89S52等等。 第4章 系统软件的详细设计,根据现有硬件资源,设计程序的流程图并写出程序,详细介绍每部分程序的
13、意义。 第5章 系统程序实现与调试,介绍调试步骤,当程序在Keil uVision4中编译成功后,通过USBasp烧录至单片机。第6章 总结与展望,对已经完成的毕业设计进行总结,分析系统设计的不足之处。1.4 本章小结本章主要介绍了本次毕业设计的研究情况和背景,并说明该领域存在的问题和现状,阐述自己的设计方向并概述设计思路。同时介绍硬件的使用情况和详细介绍这次毕业论文的组成结构。第2章 系统总体框架设计2.1 系统结构框图这次毕业设计的思路是这样的,首先通过拨码开关对单片机的控制让SONIX SN9P701F获取条形码的各种信息,再通过RS485传输到上位机中,由于现在PC机大都使用RS232
14、接口或者USB接口,所以需要一个接口转换器让信息成功传输至上位机中。系统总体设计框图如图2-1所示。图2-1系统总体设计框图2.2 SONIX SN9S102CSONIX SN9S102C为图像传感器模块,是把需要扫描的外部信号转换成电信号,以便传输给识别模块,一般来说,它是由感知元件和转换器件构成的。市场上的图像传感器千差万别,但是根据体积,光学分辨率等因素,最后决定采用SONIX SN9S102C,这是一种高度集成的有源像素图像传感器,采用0.35um CMOS技术制成。2.3 SONIX SN9P701FSONIX SN9P701F为本设计的图像处理模块,在光信号被转换成电信号后,图像处
15、理模块需要对电信号进行处理,比如信号分析,滤波,信号的调制与解调等。然后把电信号传给单片机。为了满足实物的微型化并配合SN9S102C图像传感器,这次设计采用了SONIX SN9P701F。2.4 单片机模块单片机是这次设计的核心模块,它起着控制条码的读取,传输数据,控制RS485通信等功能,所以它必须有多引脚,但是单片机的体积要尽量的小。考虑各方面因素,我选用了ATMEL公司的AT89S52单片机,在PDIP封装, PLCC封装, TQFP封装等型号中选择了TQFP44引脚封装型号,符合设计的微型化。2.5 拨码开关在系统的设计当中,拨码开关的作用为切换系统的工作状态,拨码开关共有四个键,每
16、一个键对应着单片机不同的功能。 2.6 RS485串口通信模块这次毕业设计的AT89S52单片机和上位机之间的通信都是通过RS485进行通信,RS485串口通信有三根线,分别是RXD输入线,TXD输出线和控制线。但是由于RS485在上位机上用的较少,最后要通过一个转换器转换为RS232或是USB接口进行通信。2.7 I2C总线I2C总线是一种比较普遍的传输总线,本设计中用来连接单片机和SONIX SN9P701F,使其之间保持良好的通信。I2C的本质就是两根I/O总线,一根时钟线,一根数据线,并且能很好的完成半双工的数据通信。2.8 本章小结本章介绍了这次毕业设计的主要设计思路,各设备之间如何
17、架构与各设备的作用。主要是拨码开关控制单片机,然后单片机控制SN9P701F开始扫描条形码,最后通过RS485和接口转换器显示在PC或上位机上。单片机控制SN9P701F方面,主要是通过SCK和SDIO两根线通信,SCK为时钟线,SDIO为数据线,两根线的相互作用控制着SN9P701F的读与写。第3章 系统硬件介绍3.1 SONIX SN9S102CSONIX SN9P701C条形码扫描器是光学图像传感器组件,这是一款高集成的有源像素传感器并装配了3.5CMOS技术,为了有最小化的I/O引脚,原来输出的8位引脚通过2根总线传输数据。它的 CMOS传感器在一个12引脚的CSP封装包里,SONIX
18、 SN9P701C提供了一个低成本的方法进行条形码识别。3.2 SONIX SN9P701F3.2.1 SONIX SN9P701F的描述SN9P701F 是第二代解码器,它的设计是为了应用松翰最新发展D.H.R.T.技术。它整合了一些方案包括CMOS感应界面,图像部分识别工具,稳压器,RC振荡器和恢复指针输出界面。3.2.2 SONIXSN9P701F的特点1支持光点图像格式2核心电压工作范围:3.0V 3.6V 3校准器输入:3.6v5v4最低功率损耗:3mA5截止电流:10uA6内含16位dsp的传感器控制和图像部分识别7光源定时控制8嵌入式电压稳定9嵌入式16Mhz RC标准振荡电路1
19、0嵌入式低电压检测11 48引脚LQFP包3.3 AT89S52单片机设计本设计用到的单片机是AT89S52,AT89S52作为硬件的控制部分,主要起到了控制外围设备的作用。由于该毕业设计需要满足单片机多引脚,体积小,支持RS485通信来实现简单的工业控制,所以本论文使用TFQP44封装的AT89S52单片机。AT89S52是一种极高效能CMOS、低能耗的8位小型控制处理器,在系统可编程Flash 存储器有8k容量。它使用的高密度不易丢失性存储技术来自Atmel 公司,而且与工业使用的80C51系列产品引脚和指令完全相互兼容。单片机上的Flash允许程序存储器是可编程片上系统,单片机也适用于普
20、遍的其它编程器。在芯片上,拥有简单实用的8 位CPU 与Flash系统可编程,使得许多简便、高效的解决方法能在AT89S52单片机上实现应用。并且AT89S52 可降至0Hz 静态逻辑操作状态,支持2种不同软件的可选择节电模式。在空闲模式下,CPU停止运行,但允许定时器/计数器、RAM、串口和中断继续运行。单片机的掉电保护方式为RAM中的内容被保留,晶体振荡器停止工作,单片机停止当前一切工作,直到下一个中断或手动硬件复位为止。3.3.1 单片机的主要性能单片机的AT89S52拥有以下一些标准功能: 256字节容量的RAM,32 位的I/O 口总线和看门狗系统。另外AT89S52单片机拥有3个1
21、6 位定时器/计数器,2个数据指针,一个2级6向量的中断结构,片内晶振以及时钟电路,全双工串行口。AT89S52实物如图3-1所示。图3-1AT89S52实物图3.3.2 单片机最小系统概述单片机最小系统的构成部分是:复位电路,晶振电路,电源,单片机。一个合格的单片机最小系统可以具有以下几个功能:1具有复位的功能。2可以完整的使用单片机内部储存器。3具有普遍的人机通信接口,像显示器,扬声器等。4最为重要的一点是具有扩展功能,能与其他设备通过I/O口连接。3.3.3 AT89S52单片机最小系统电路图晶振电路主要作用产生时钟脉冲,C7和C8可以帮助振荡器起振。晶振电路如图3-2所示。图3-2 晶
22、振电路复位电路是当单片机通电时,VCC的+5v电流导入RST端,只要保证RST处于两个周期高电平,则单片机复位。自动复位电路图如图3-3所示。图3-3复位电路图AT89S52单片机引脚图如图3-4所示。图3-4AT89S52单片机引脚图3.4 单片机的控制方案与选择3.4.1 控制概述SONIX SN9P701F与AT89S52单片机通信通过4跟总线,数据传输主要依靠SCK和SDIO。如下图。外部上拉电阻(4.7k)拉高了4根线上的SDIO。MCU与OID通信线路如图3-5所示。图3-5MCU和OID通信线路4根总线中的SCK 和SDIO用于OID和MCU之间的数据通信,传输接口为双向接口,S
23、CK 和SDIO的特点如表3-1所示。表3-1 SCK 和SDIO的特点SCKSDIO用途串行时钟串行数据方向MCUOIDMCUOID上拉控制否是默认状态低拉高OID和MCU之间的传输的是命令,索引和OID的状态,数据特点如表3-2所示。表3-2 OID和 DSP数据特点OIDMCUOIDMCU长度23 bits8 bits用途OID的指标,命令和状态命令3.4.2 双向接口概述:双向接口是用于OID控制器和MCU之间的,在这个协议中,只有两根线是用于传输数据的,在SDIO上数据依次从高位传输到低位,在双向接口中MCU是主机,OID设备是外围设备。主从模式:在双向接口中,主设备是控制系统的主要
24、部分,只有主机设备才能在双向接口上做以下的工作:1启动运行周期2在SCK上生成时钟信号3决定一个传输周期的方向子设备在双向接口中是被动设备,它需要对主设备的指令很灵敏,如果已经有一个数据准备要发给主设备了,子设备就会发送一个转移请求(拉低SDIO线)来通知主设备。工作条件:默认状态:主机让SCK保持低电平,SDIO被外部上拉电阻拉高开始:主设备通过改变SCK的状态(从低到高)发送一个转移周期结束:如果主设备让SCK保持低的状态超过1024个时钟,子设备就会认为转移周期结束,接口工作时序图如图3-6所示。图3-6接口工作时序图但是有一点需要注意:当主设备让SCK保持高的状态,子设备会等待另一个状
25、态改变(高变低)。在SDIO上的数据从MSb依次转移到LSb上,SDIO程度的变化只会发生在SCK一直保持在高电平,当SCK是低状态,SDIO的状态改变是禁止的。换句话说,当SCK为低状态时,在SDIO上可以捕获数据。当SCK为高时,它能把数据放在SDIO上。SDIO状态的改变会发生在高变低边缘以后。为了通信成功,主设备必须遵循以下规则去控制SCK1为了SDIO的程度改变,主设备必须保持SCK的高状态超过32个时钟。2为了SDIO的数据捕获,主设备必须保持SCK的低状态超过8个时钟低于1024个时钟。获取有效数据时序图如图3-7所示。图3-7获取有效数据时序图子设备传输数据给主设备,读周期如表
26、3-3所示。表3-3读周期总线部分开始第1个字节第216个字节停止SDIO主设备ZLZZ子设备LZ16个比特数据Z在SDIO上转移的17个字节:第1个比特:W/R控制比特,主设备让SDIO保持低状态来开启一个读周期。第2个比特到第17个比特:由子设备产生的数据。在接收到17个比特之后,SDIO会被外部上拉电阻拉高在读周期之前,子设备发送一个转移请求(拉低SDIO)去通知主设备,在主设备产生开始标示并放置读控制标示在SDIO线上时,一个变化边缘后,子设备开始发送数据。传输过后,SCK变低状态作为结束标志并且SDIO被上拉电阻拉高。读周期时序图如图3-8所示。图3-8读周期时序图主设备传输数据到子
27、设备,写周期如表3-4所示。表3-4写周期总线部分开始第1个字节第29个字节停止SDIO主设备ZH8比特数据H子设备Z/LZZZ在SDIO上一个写周期会有9位比特:第1个比特是:读/写控制比特,主设备拉高SDIO去标志一个写周期第29个比特:由主设备产生的比特在SDIO传输完9个比特以后,被外部电阻拉高在写周期中,主机产生一个上升沿在SCK上,并放置一个写控制标示在SDIO线上,主设备传输的任何一个比特都要通过SDIO,并且伴随着写控制标示在SDIO线上,当SCK下降沿之后子设备开始接收数据。在传输结束后,SCK线保持低状态作为停止信号,并且SDIO线被外部电阻拉高,写周期时序图如图3-9所示
28、。图3-9写周期时序图3.4.3 数据形式从OID中得到的连续数据为16个比特指令或16个比特标示。OID连续数据的规则如表3-5所示。表3-5OID连续数据的规则bit15bit14bit13bit12bit11bit10bit9bit8bit7bit6bit5bit4bit3bit2bit10关键标示标示1关键标示指令从OID到DSP的指令:1 OIDcmd-PowerOn=0xfff82 OIDcmd-PowerDown=0xfff73 OIDcmd-Wakeup=0xfff0OID图像处理会通知用户这个设备已经开始接收用户要求的信息依次接收来自DSP的指令命令从DSP到OID1User
29、Cmd-PowerOnOID=0x53DSP设备打开OID的图像处理2 UserCmd-PowerDownOID=0x56DSP设备让OID图像处理处于休眠状态3 UserCmd- AutoSleepFunEnable=0xA0DSP开启自动休眠功能4 UserCmd- AutoSleepFunDisable=0xA3DSP不允许开启自动休眠功能5 UserCmd- TriggerToClearAutoSleepTimmer=0xA6DSP清除自动休眠时间6 UserCmd_ClearAutoSleepTimmerIfOIDDetect=0xACUserCmd_NonClearAutoSlee
30、pTimmerIfOIDDetect=0x50OID处理器的自动休眠定时器被清07 UserCmd_CheckOIDStatus=0x30DSP可以发送这个命令去检查是否OID处理器被唤醒或休眠3.4.4 控制时间启动OID时序图如图3-10所示。图3-10启动OID时序图1启动OID:唤醒OID通过让SCK保持高状态超过10ms2打开程序应该在2s内完成在OID开始工作后,MCU从OID读取数据1 OID发送的两个数据的时间间隔最少50ms2如果MCU忽略了发送请求超过300ms,OID将移除发送请求并更新数据。OID读取数据时序图如图3-11所示。图3-11OID读取数据时序图关闭:OID
31、将会直接关闭如果MCU忽略了来自OIDcmd-PowerDown的发送请求超过75ms。3.5 本章小结本章主要完成硬件的设计,介绍了这次毕业设计需要使用到的主要硬件设备及相应的各设备引脚功能,主要是AT89S52(控制芯片),SONIX SN9P701F(图像处理模块),SONIX SN9S102C,并列出了系统参数和最佳工作状态。第4章 系统软件的详细设计为了实现条形码的识别,本系统软件主要为控制SONIX SN9P701F模块程序、系统与上位机之间的RS485通信。4.1 系统流程图系统流程图主要分为以下几个部分:系统初始化,SONIX SN9P701F控制及其条码识别和RS485通信。
32、系统流程图如图4-1所示。图4-1系统流程图4.2 系统初始化设计初始化程序流程图如图4-2所示。图4-2初始化流程图初始化程序包括了关中断(EA=0),定时器初始化,RS485通信初始化,模拟I2C端口初始化,开中断(EA=1)。定时器初始化程序为void InitT1(void) TMOD = 0x20; /定时器T1工作于定时器方式2TH1 =T1H ;/设置定时器的初值,10msTL1 =T1L; /定义T1H 0x0C4,T1L 0x00 TR1 =1;/启动定时器T1,开始计时PCON=0x80;SCON=0x50;/设置串口工作方式RS485通信初始化程序为void InitRS
33、485 (void)RSSelect=1;/默认为发送状态RSSBuffer.State=0;/设置state初值模拟I2C端口初始化程序为void InitI2C(void) /I2C总线初始化程序,作用是使总线处于空闲状态SCK=1;_nop_();SDIO=1;_nop_();4.3 SONIX SN9P701F控制程序设计用IO总线在MCU与OID设备之间模拟I2C通信,函数功能实现单片机对SONIX SN9P701F的控制。通信主要通过两根线SCK(时钟)和SDIO(数据)并设置SCK为P36,SDIO为P37,并定义数组dat和sum。SONIX SN9P701F控制及其条码识别流
34、程图如图4-3所示。图4-3 SONIX SN9P701F控制程序流程图本程序包括模拟I2C端口初始化程序Initi2c(),I2C起始程序void I2CStart(void),I2C结束程序void I2CStop(void)和I2C读取程序void I2Cwork(void)。 I2C起始程序功能是产生I2C总线的起始条件,主要程序如下:SDIO=1; Delays(1); SCK=1;/当时钟线SCK处于高电平时,SDIO出现下降沿时启动I2C总线 Delays(1); SDIO=0;/SDIO由高变低,启动I2C总线 Delays(1); SCK=0; Delays(1);I2C读取
35、程序的功能是在检测到dat中值为0x60fff8后,表示开机成功,然后用SN9S102C去读取条码。SN9S102C会自动发送数据。主要程序如下:Initi2c(); /首先初始化I2C总线Delays(5000); / 延时程序,延时60msSCK = 1;Delays(6000);/延时60msSCK=0;Delays(200000); /延时2秒后判断SDIO是否为低if(SDIO = 0)/如果SDIO为低,说明SN9S102C检测到信号,否则不执行以下程序。SCK=1;SDIO=0;/把SDIO作为输出,并输出低SCK=0;Delays(10);/延迟10us,为了让笔读取信号SCK
36、=1;SDIO=1;/将SDIO作为输入口Delays(10);SCK=1;Delays(10);for(i=0;i= RSSBuffer.Len) RSSBuffer.State+;break;当case=8时,执行数据校验。当case=9时,结束数据发送。RSSelect=0,转到接受程序。主要程序如下 RSSendOver_Flag = TRUE;/发送完毕RSSelect=0;break;发送流程图如图4-5所示。图4-5发送程序流程图4.4.3 接收程序设计为了保证数据接收的时间性,本接收程序特别采用定时器T1作为接收时间溢出定时。当数据接收超出定时时间,系统将设定为接收出错,便于系
37、统做出响应。根据接收数据量,本定时器设定的溢出时间为50ms,则TH1初始值为T1H(0xfc),TL1初始值为T1L(0x17)。在接收程序void SendMSG(void)中用switch程序完成程序的接收。Case0为设置定时器初值,设定溢出时间。主要程序如下:RSRBuffer.State+;/接收时间设置TR1=FALSE;TH1=T1H; /10msTL1=T1L;TR1=TRUE;/开始计时T1Over=5;/50msTimer1_Flag=FALSE;Case1为准备接收数据的命令,此时只有命令,没有数据。主要程序如下RSRBuffer.Cmd=SBUF;RSRBuffer.
38、State+;Case为2时,初始化数据帧,if(RSRBuffer.Len=0)即如果数据长度为0,则state加1准备接收数据,如果数据长度超过15则出错,程序重新运行。Case为3时为数据接收。其主要程序如下RSRBuffer.DataRSRBuffer.Pointer=SBUF;RSRBuffer.Pointer+;RSRBuffer.DataRSRBuffer.Pointer=SBUF就是将寄存器中的数据依次发送给数据指针。Case为4时数据接收完毕,接收程序结束。接收标志位为true,表示接收完成,关闭定时器。主要程序如下:RSRBuffer.Crc=SBUF; RSReceive
39、_Flag = TRUE; RSRBuffer.State=0; T1Over=0;/关闭定时 Timer1_Flag=FALSE;接收程序流程图如图4-6所示。图4-6接收程序流程图4.6 本章小结本章主要介绍了这次毕业设计的主要流程图和重要程序。子程序包括了:初始化程序, SONIX SN9P701F控制程序,RS485串口通信程序。通过软件编程使AT89S52单片机,SONIX SN9P701F和RS485有序的工作起来。第5章 系统程序实现与调试5.1 调试环境及调试步骤调试对于任何一个实现型毕业设计都至关重要,只有通过程序的不断调试,才能发现当初设计中存在的问题,并针对问题一一进行修
40、改。5.1.1 调试环境本程序调试采用的软件是Keil uVision4,是当前最完善的单片机的调试软件,Keil uVision4软件可以对单片机的型号进行选择,对已写出的程序进行编译,准确的反应出错位置,便于观察和修改。5.1.2 调试步骤在确定了调试环境之后,就开始进行调试工作。而在调试工作之前,确立好调试的步骤至关重要,全面的调试才能保证程序的流畅运行。步骤1:软件编译。使用Keil uVision4进行程序编译,通过软件的相关窗口,观察相关程序是否正确。步骤2:对编译后所产生的错误一一进行修改。步骤3:通过USBasp烧录至单片机中。步骤4:动态调试。用示波器监测相关端口,信号是否正常。并对出现的问题作出分析,提出解决方案。5.2 Keil uVision4中调试结果及分析5.2.1 Keil uVision4中的调试在Keil uVision4中主程序调试结果如图5-1所示,调试结果为:0 Error(s),66Warning(s),软件调试无错误。图5-1 Keil uVision4中主程序调试结果在Keil uVision4