




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、工业微型条码识别系统的软件设计与实现工业微型条码识别系统的软件设计与实现 摘要摘要 条形码读取技术是信息采集,自动识别、功能获取的重要方法 。条形码 信息主要包括产地、制造厂家、商品完备的 编号、生产日期、书籍的出版时 间、种类、保质期等,在众多领域都得到广泛使用。 本论文设计了微型条码识别系统。该系统主要由 sonix sn9s102c,sonix sn9p701f 和 at89s52 单片机组成。at89s52 为主控制器配 合外围设备与 rs485 的数据通信将数据传输并显示在上位机上。 这次毕业设计使用了单片机控制 sn9p701f,使实物的体积较其他条形码 识别器小了很多。该方法不仅
2、大大缩小了 设备的成本,更重要的是这种识别器 便于人们携带。最后本论文实现了条码识别系统的软件部分,并通过了测试 与调试,基本上完成了目标和要求。 关关键键词词:条形码;sonix sn9p701;at89s52 单片机;rs485 the industrys mini bar code identification system software design and implementation abstract barcode reading technology is important methods to information collection, automatic iden
3、tification and the 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 co
4、nsist of the sonix 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 mcu control sn9p701f , the physical volume than other barcode recognition little a lot, the method
5、has not only greatly 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;a
6、t89s52 mcu;rs485 第第 1 1 章章 绪论绪论.1 1 1.1 课题的背景和意义 .1 1.2 主要研究内容 .1 1.3 论文的结构安排 .1 1.4 本章小结 .2 第第 2 2 章章 系统总体框架设计系统总体框架设计.3 3 2.1 系统结构框图 .3 2.2 sonix sn9s102c .3 2.3 sonix sn9p701f .3 2.4 单片机模块 .3 2.5 拨码开关 .4 2.6 rs485 串口通信模块.4 2.7 i2c 总线 .4 2.8 本章小结 .4 第第 3 3 章章 系统硬件介绍系统硬件介绍.5 5 3.1 sonix sn9s102c .5
7、 3.2 sonix sn9p701f .5 3.2.1 sonix sn9p701f 的描述 .5 3.2.2 sonixsn9p701f 的特点 .5 3.3 at89s52 单片机设计.5 3.3.1 单片机的主要性能.6 3.3.2 单片机最小系统概述.6 3.3.3 at89s52 单片机最小系统电路图 .6 3.4 单片机的控制方案与选择 .7 3.4.1 控制概述.7 3.4.2 双向接口.8 3.4.3 数据形式.10 3.4.4 控制时间.11 3.5 本章小结 .12 第第 4 4 章章 系统软件的详细设计系统软件的详细设计.1313 4.1 系统流程图 .13 4.2 系
8、统初始化设计 .13 4.3 sonix sn9p701f 控制程序设计.15 4.4 rs485 串口通信程序设计.17 4.4.1 数据初始发送程序设计.18 4.4.2 发送程序设计.18 4.4.3 接收程序设计.19 4.6 本章小结 .20 第第 5 5 章章 系统程序实现与调试系统程序实现与调试.2222 5.1 调试环境及调试步骤 .22 5.1.1 调试环境.22 5.1.2 调试步骤.22 5.2 keil uvision4 中调试结果及分析.22 5.2.1 keil uvision4 中的调试 .22 5.2.2 实物图演示结果分析.24 5.4 本章小结 .24 第第
9、 6 6 章章 总结与展望总结与展望.2626 6.1 总结 .26 6.2 展望 .26 结束语结束语.2727 致谢致谢.2828 参考文献参考文献.2929 附录附录 a a 总程序总程序 .3030 前言前言 随着条码逐渐走入我们的生活,条形码识别技术越来越得到人们的重视和利用, 利 用条形码获取信息的优点是:获取信息速度快,信息读取量大,高效率等。尤其是在经济 全球化后,条形码识别对生活有着非凡的意义。 但是普通的条码识别器依旧有很多问题,比如: 体积大不利于携带等问题一直影响 着我们对条形码的利用。 这不仅对商品的流通造成了堵塞,也对时间利用造成了极大的 浪费。同时,条形码的种类也
10、进行着不断的变化和改革, ean码,upc码,39码的不断问 世,注定着条形码识别的发展进入一个新的时代。 本次毕业设计使用at89s52单片机和sonix sn9p701f设计出由单片机控制的微型条码 识别系统,实现人们随时随地对条形码的获取与识别 。 第第 1 1 章章 绪论绪论 1.11.1 课题的背景和意义课题的背景和意义 不同规格的白缝隙和黑条组成了条形码,然后它们按照已有的编码规则 形成了我们 日常生活中经常见到的条形码,用它们来记录并传输一些人们交易所 要用到的信息。恰 好是由于这些反射率差异很大的条形码能够方便快捷的反应各个条形码中所包含的信息, 让人们在很短的时间内获取最有用
11、的信息,所以在物品交易,图书借阅,科研开发,工业 制造等许多产业中都起着不可或缺的作用。工业微型条码识别系统主要用于smt 机器工 作位置的检测,预防工作出错产生误安装。 微条码的发展应用基本可以划分为两个时期 :第一时期是非人工结算,这个时期主要 是应用于企业的内部架构。为企业之间信息交流提供了很大的便利,第二个时期是所有商 品的供销管理,产品物流,企业的连锁化运营。在我国,应用条形码技术的现状大概处于 第二个阶段,而且很大程度上识别设备还要借鉴国外的产品 ,所以与国外产品差距很大。 在逐渐融入全球化的中国,大量商品的进出口已经成为现实 ,相信在不久的将来,条形码 将处于全速发展的时代。条形
12、码是物流技术的核心与关键 ,有效的条码识别软件能高效 的实现对条形码的阅读,对条形码的发展与应用提供 了帮助。 由于条形码与我们的生活息息相关, 在工业生产中,伴随着交易数量的持续增加 和 服务质量的不断提高,产品进出口公司业务量和繁琐程度越来越大,工业微型条码软件 系统便应运而生。目前,我们是将 sonix sn9p701f,at89s52 单片机和 sonix sn9s102c 等设备连接在一起,具有高效化、小型化、规范化的优点。让合理的软件算法与简便的 读取设备相结合,帮助人们对商品信息进行及时准确的分析处理,从而 让条形码更简化 了我们工作时的识别过程。 本设计主要是单片机配合外围设备
13、实现该条码识别系统的软件部分。 1.21.2 主要研究内容主要研究内容 本次课程设计中,采用 at89s52 作为系统的控制核心,与 sonix sn9p701f,sonix sn9s102c 等设备配合实现条形码的识别和信息的获取。 1.31.3 论文的结构安排论文的结构安排 本文根据本次毕业设计的要求,将论文分为 六章,具体内容如下: 第 1 章 绪论,介绍了我国条形码领域的发展状况、本课题研究的应用和意义,以及 本人对课题的实现思路。 第 2 章 系统总体框架设计,简单的概括一下这次毕业设计的思路, 分析各设备的作 用。 第 3 章 系统硬件介绍,概述了本次毕业设计所使用到的设备,如 s
14、onix sn9s102ce,sonix sn9p701f, at89s52 等等。 第 4 章 系统软件的详细设计,根据现有硬件资源,设计程序的流程图 并写出程序, 详细介绍每部分程序的意义。 第 5 章 系统程序实现与调试,介绍调试步骤,当程序在 keil uvision4 中编译成功 后,通过 usbasp 烧录至单片机。 第 6 章 总结与展望,对已经完成的毕业设计进行总结, 分析系统设计的不足之处。 1.41.4 本章小结本章小结 本章主要介绍了本次毕业设计的研究情况和背景,并说明该领域存在的问题和现状, 阐述自己的设计方向并概述设计思路。同时介绍 硬件的使用情况和详细介绍这次毕业论
15、 文的组成结构。 第第 2 2 章章 系统总体框架设计系统总体框架设计 2.12.1 系统结构框图系统结构框图 这次毕业设计的思路是这样的,首先 通过拨码开关对单片机的控制让 sonix sn9p701f 获取条形码的各种信息,再通过 rs485 传输到上位机中,由于现在 pc 机大都 使用 rs232 接口或者 usb 接口,所以需要一个接口转换 器让信息成功传输至上位机中。 系统总体设计框图如图 2-1 所示。 oid图像识别设备 dsp图像处理设备 如sn9p701 at89s52单片机 rs485接口转换上位机 i2c 拨码开关sonix sn9s102c dsp图像处理设备 soni
16、x sn9p701f at89s52单片机 rs485接口转换上位机 拨码开关 a b 图 2-1 系统总体设计框图 2.22.2 sonixsonix sn9s102csn9s102c sonix sn9s102c 为图像传感器模块,是把需要扫描的外部信号转换成电信号,以便 传输给识别模块,一般来说,它是由感知元件和转换器件构成的。市场上的图像传感器千 差万别,但是根据体积,光学分辨率等因素,最后决定采用 sonix sn9s102c,这是一种 高度集成的有源像素图像传感器,采用 0.35um cmos 技术制成。 2.32.3 sonixsonix sn9p701fsn9p701f son
17、ix sn9p701f 为本设计的图像处理模块,在光信号被转换成电信号后,图像处理 模块需要对电信号进行处理,比如信号分析,滤波,信号的调制与解调等 。然后把电信 号传给单片机。为了满足实物的微型化并配合 sn9s102c 图像传感器,这次设计采用了 sonix sn9p701f。 2.42.4 单片机模块单片机模块 单片机是这次设计的核心模块,它起着控制条码的读取,传输数据,控制rs485 通 信等功能,所以它必须有多引脚,但是单片机的体积要尽量 的小。考虑各方面因素,我 选用了 atmel 公司的 at89s52 单片机,在 pdip 封装, plcc 封装, tqfp 封装等型号中 选择
18、了 tqfp44 引脚封装型号,符合设计的微型化。 2.52.5 拨码开关拨码开关 在系统的设计当中,拨码开关的作用为切换系统的工作状态, 拨码开关共有四个键, 每一个键对应着单片机不同的功能。 2.62.6 rs485rs485 串口通信串口通信模块模块 这次毕业设计的 at89s52 单片机和上位机之间的通信都是 通过 rs485 进行通信, rs485 串口通信有三根线,分别是 rxd 输入线,txd 输出线和控制线。但是由于 rs485 在上位机上用的较少,最后要通过一个转换器转换为 rs232 或是 usb 接口进行通信。 2.72.7 i i2 2c c 总线总线 i2c 总线是一
19、种比较普遍的传输总线, 本设计中用来连接单片机和 sonix sn9p701f,使其之间保持良好的通信。 i2c 的本质就是两根 i/o 总线,一根时钟线,一 根数据线,并且能很好的完成 半双工的数据通信。 2.82.8 本章小结本章小结 本章介绍了这次毕业设计的主要设计思路,各设备之间如何架构与 各设备的作用。 主要是拨码开关控制单片机,然后单片机控制 sn9p701f 开始扫描条形码,最后通过 rs485 和接口转换器显示在 pc 或上位机上。单片机控制 sn9p701f 方面,主要是通过 sck 和 sdio 两根线通信,sck 为时钟线,sdio 为数据线,两根线的相互作用控制着 sn
20、9p701f 的读与写。 第第 3 3 章章 系统硬件系统硬件介绍介绍 3.3.1 1 sonixsonix sn9s102csn9s102c sonix sn9p701c 条形码扫描器是光学图像传感器组件,这是一款高集成的有源像素 传感器并装配了 3.5cmos 技术,为了有最小化的 i/o 引脚,原来输出的 8 位引脚通过 2 根总线传输数据。它的 cmos 传感器在一个 12 引脚的 csp 封装包里,sonix sn9p701c 提供了一个低成本的方法进行条形码识别。 3.3.2 2 sonixsonix sn9p701fsn9p701f 3.2.13.2.1 sonixsonix s
21、n9p701fsn9p701f 的描述的描述 sn9p701f 是第二代解码器,它的设计是为了应用松翰最新发展 d.h.r.t.技术。它整 合了一些方案包括cmos感应界面,图像部分识别工具,稳压器, rc振荡器和恢复指针输 出界面。 3.2.23.2.2 sonixsn9p701fsonixsn9p701f 的特点的特点 1 支持光点图像格式 2核心电压工作范围:3.0v 3.6v 3 校准器输入:3.6v5v 4 最低功率损耗:3ma 5 截止电流:10ua 6 内含 16 位 dsp 的传感器控制和图像部分识别 7 光源定时控制 8 嵌入式电压稳定 9 嵌入式 16mhz rc 标准振荡
22、电路 10 嵌入式低电压检测 11 48 引脚 lqfp 包 3.33.3 at89s52at89s52 单片机设计单片机设计 本设计用到的单片机是 at89s52,at89s52 作为硬件的控制部分,主要起到了控制外 围设备的作用。由于该毕业设计需要满足单片机多引脚,体积小,支持 rs485 通信来实 现简单的工业控制,所以本论文使用 tfqp44 封装的 at89s52 单片机。 at89s52 是一种极高效能 cmos、低能耗的 8 位小型控制处理器,在系统可编程 flash 存储器有 8k 容量。它使用的高密度不易丢失性存储技术来自 atmel 公司,而且 与工业使用的 80c51 系
23、列产品引脚和指令完全相互兼容。 单片机上的 flash 允许程序存 储器是可编程片上系统,单片机也适用于普遍的其它编程器。 在芯片上,拥有简单实用 的 8 位 cpu 与 flash 系统可编程,使得许多简便、高效的解决方法能在 at89s52 单片 机上实现应用。并且 at89s52 可降至 0hz 静态逻辑操作状态,支持 2 种不同软件的可选 择节电模式。在空闲模式下, cpu 停止运行,但允许定时器/计数器、ram、串口和中断 继续运行。单片机的掉电保护方式为 ram 中的内容被保留,晶体振荡器停止工作,单片 机停止当前一切工作,直到下一个中断或手动硬件复位为止。 3.3.3.3.1 1
24、 单片机的主要性能单片机的主要性能 单片机的 at89s52 拥有以下一些标准功能: 256 字节容量的 ram,32 位的 i/o 口 总线和看门狗系统。另外 at89s52 单片机拥有 3 个 16 位定时器/计数器,2 个数据指针, 一个 2 级 6 向量的中断结构,片内晶振以及时钟电路,全双工串行口。 at89s52 实物如 图 3-1 所示。 图 3-1at89s52 实物图 3.3.23.3.2 单片机最小系统概述单片机最小系统概述 单片机最小系统的构成部分是: 复位电路,晶振电路,电源,单片机。一个合格的 单片机最小系统可以具有以下几个功能: 1 具有复位的功能。 2 可以完整的
25、使用单片机内部储存器。 3 具有普遍的人机通信接口,像显示器,扬声器等。 4 最为重要的一点是具有扩展功能,能与其他设备通过 i/o 口连接。 3.3.33.3.3 at89s52at89s52 单片机最小系统电路图单片机最小系统电路图 晶振电路主要作用产生时钟脉冲,c7 和 c8 可以帮助振荡器起振。晶振电路如图 3- 2 所示。 30pf c7 30pf c8 xtal1 xtal2 12 y1 gnd 12m 图 3-2 晶振电路 复位电路是当单片机通电时,vcc 的+5v 电流导入 rst 端,只要保证 rst 处于两个周 期高电平,则单片机复位。自动复位电路图如图 3-3 所示。 1
26、0uf c6 10k r4 vcc 图 3-3 复位电路图 at89s52 单片机引脚图如图 3-4 所示。 33 32 31 30 29 28 27 26 25 24 23 1 2 3 4 5 6 7 8 9 10 11 44 43 42 41 40 39 38 37 36 35 34 12 13 14 15 16 17 18 19 20 21 22 p1.5 p1.6 p1.7 rst p3.0 no p3.1 p3.2 p3.3 p3.4 p3.5 p3.6 p0.4 p0.5 p0.6 p0.7 ea/vpp nc ale psen p2.7 p2.6 p2.5 p3.7 xtal2
27、xtal1 gnd gnd p2.0 p2.1 p2.2 p2.3 p2.4 p0.3 p0.2 p0.1 p0.0 vcc nc p1.0 p1.1 p1.2 p1.3 p1.4 at89s52 (mosi) (miso) (sck) (rxd) (txd) int0 int1 t0 t1 ad4 ad5 ad6 ad7 a15 a14 a13 ex/t2 t2 ad0 ad1 ad2 ad3 w/r rd a8 a9 a10 a11 a12 (tfqp( 图 3-4at89s52 单片机引脚图 3.43.4 单片机的控制方案与选择单片机的控制方案与选择 3.4.13.4.1 控制概述控制概
28、述 sonix sn9p701f 与 at89s52 单片机通信通过 4 跟总线,数据传输主要依靠 sck 和 sdio。如下图。外部上拉电阻( 4.7k)拉高了 4 根线上的 sdio。mcu 与 oid 通信线路 如图 3-5 所示。 oidmcu 1 2 3 4 sck sdio vcc gnd vcc 4.7k 图 3-5mcu 和 oid 通信线路 4 根总线中的 sck 和 sdio 用于 oid 和 mcu 之间的数据通信,传输接口 为双向接口, sck 和 sdio 的特点如表 3-1 所示。 表 3-1 sck 和 sdio 的特点 scksdio 用途串行时钟串行数据 方向
29、 mcuoidmcuoid 上拉控制否是 默认状态低拉高 oid 和 mcu 之间的传输的是命令,索引和 oid 的状态,数据特点如表 3-2 所示。 表 3-2 oid 和 dsp 数据特点 oidmcuoidmcu 长度 23 bits8 bits 用途oid 的指标,命令和状态命令 3.4.23.4.2 双向接口双向接口 概述:双向接口是用于 oid 控制器和 mcu 之间的,在这个协议中,只有两根线是用 于传输数据的,在 sdio 上数据依次从高位传输到低位,在 双向接口中 mcu 是主机,oid 设备是外围设备。 主从模式:在双向接口中,主设备是控制系统的主要部分,只有主机设备才能在
30、 双 向接口上做以下的工作: 1 启动运行周期 2 在 sck 上生成时钟信号 3 决定一个传输周期的方向 子设备在双向接口中是被动设备,它需要对主设备的指令很灵敏,如果已经有一个 数据准备要发给主设备了,子设备就会发送一个转移请求(拉低 sdio 线)来通知主 设备。 工作条件: 默认状态:主机让 sck 保持低电平,sdio 被外部上拉电阻拉高 开始:主设备通过改变 sck 的状态(从低到高)发送一个转移周期 结束:如果主设备让 sck 保持低的状态超过 1024 个时钟,子设备就会认为转移周期 结束,接口工作时序图如图 3-6 所示。 图 3-6 接口工作时序图 但是有一点需要注意:当主
31、设备让 sck 保持高的状态,子设备会等待另一个状态改 变(高变低) 。 在 sdio 上的数据从 msb 依次转移到 lsb 上,sdio 程度的变化只会发生在 sck 一直 保持在高电平,当 sck 是低状态,sdio 的状态改变是禁止的。换句话说,当 sck 为低状 态时,在 sdio 上可以捕获数据。当 sck 为高时,它能把数据放在 sdio 上。sdio 状态的 改变会发生在高变低边缘以后。 为了通信成功,主设备必须遵循以下规则去控制 sck 1 为了 sdio 的程度改变,主设备必须保持 sck 的高状态超过 32 个时钟。 2 为了 sdio 的数据捕获,主设备必须保持 sck
32、 的低状态超过 8 个时钟低于 1024 个 时钟。获取有效数据时序图如图 3-7 所示。 图 3-7 获取有效数据时序图 子设备传输数据给主设备,读周期如表 3-3 所示。 表 3-3 读周期 总线部分开始第 1 个字节第 216 个字节停止 主设备 zlzz sdio 子设备 lz 16 个比特数据 z 在 sdio 上转移的 17 个字节: 第 1 个比特:w/r 控制比特,主设备让 sdio 保持低状态来开启一个读周期。 第 2 个比特到第 17 个比特:由子设备产生的数据。 在接收到 17 个比特之后,sdio 会被外部上拉电阻拉高 在读周期之前,子设备发送一个转移请求(拉低 sdi
33、o)去通知主设备,在主设备产 生开始标示并放置读控制标示 在 sdio 线上时,一个变化边缘后,子设备开始发送数据。 传输过后,sck 变低状态作为结束标志并且 sdio 被上拉电阻拉高。读周期时序图如图 3-8 所示。 图 3-8 读周期时序图 主设备传输数据到子设备,写周期如表 3-4 所示。 表 3-4 写周期 总线部分开始第 1 个字节第 29 个字节停止 主设备 zh 8 比特数据 h sdio 子设备 z/lzzz 在 sdio 上一个写周期会有 9 位比特: 第 1 个比特是:读/写控制比特,主设备拉高 sdio 去标志一个写周期 第 29 个比特:由主设备产生的比特 在 sdi
34、o 传输完 9 个比特以后,被外部电阻拉高 在写周期中,主机产生一个上升沿在 sck 上,并放置一个写控制标示在 sdio 线上,主 设备传输的任何一个比特都要通过 sdio,并且伴随着写控制标示在 sdio 线上,当 sck 下 降沿之后子设备开始接收数据。在传输结束后,sck 线保持低状态作为停止信号,并且 sdio 线被外部电阻拉高,写周期时序图如图 3-9 所示。 图 3-9 写周期时序图 3.4.33.4.3 数据形式数据形式 从 oid 中得到的连续数据为 16 个比特指令或 16 个比特标示。oid 连续数据的规则 如表 3-5 所示。 表 3-5oid 连续数据的规则 bit1
35、5 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2bit1 0 关键标示标示 1 关键标示指令 从 oid 到 dsp 的指令: 1 oidcmd-poweron=0 xfff8 2 oidcmd-powerdown=0 xfff7 3 oidcmd-wakeup=0 xfff0 oid 图像处理会通知用户这个设备已经开始接收用户要求的信息 依次接收来自 dsp 的指令 命令从 dsp 到 oid 1usercmd-poweronoid=0 x53 dsp 设备打开 oid 的图像处理 2 usercm
36、d-powerdownoid=0 x56 dsp 设备让 oid 图像处理处于休眠状态 3 usercmd- autosleepfunenable=0 xa0 dsp 开启自动休眠功能 4 usercmd- autosleepfundisable=0 xa3 dsp 不允许开启自动休眠功能 5 usercmd- triggertoclearautosleeptimmer=0 xa6 dsp 清除自动休眠时间 6 usercmd_clearautosleeptimmerifoiddetect=0 xac usercmd_nonclearautosleeptimmerifoiddetect=0 x
37、50 oid 处理器的自动休眠定时器被清 0 7 usercmd_checkoidstatus=0 x30 dsp 可以发送这个命令去检查是否 oid 处理器被唤醒或休眠 3.4.43.4.4 控制时间控制时间 启动 oid 时序图如图 3-10 所示。 图 3-10 启动 oid 时序图 1 启动 oid:唤醒 oid 通过让 sck 保持高状态超过 10ms 2 打开程序应该在 2s 内完成 在 oid 开始工作后,mcu 从 oid 读取数据 1 oid 发送的两个数据的时间间隔最少 50ms 2 如果 mcu 忽略了发送请求超过 300ms,oid 将移除发送请求并更新数据 。oid
38、读取 数据时序图如图 3-11 所示。 图 3-11oid 读取数据时序图 关闭:oid 将会直接关闭如果 mcu 忽略了来自 oidcmd-powerdown 的发送请求超过 75ms。 3.53.5 本章小结本章小结 本章主要完成硬件的设计, 介绍了这次毕业设计需要使用到的主要硬件设备及相应 的各设备引脚功能,主要是 at89s52(控制芯片) ,sonix sn9p701f(图像处理模块) , sonix sn9s102c,并列出了系统参数和最佳工作状态。 第第 4 4 章章 系统软件的详细设计系统软件的详细设计 为了实现条形码的识别,本系统软件主要为控制 sonix sn9p701f
39、模块程序、系统与 上位机之间的 rs485 通信。 4.14.1 系统流程图系统流程图 系统流程图主要分为以下几个部分:系统初始化,sonix sn9p701f 控制及其条码识 别和 rs485 通信。系统流程图如图 4-1 所示。 开始 关中断 定时器初始化 rs485通信初 始化 模拟i2c端口初 始化 开中断 扫描条形码 有数据 发送给上位机 否 是 图 4-1 系统流程图 4.24.2 系统初始化设计系统初始化设计 初始化程序流程图如图 4-2 所示。 关中断 定时器初始化 rs485通信初 始化 模拟i2c端口初 始化 开中断 图 4-2 初始化流程图 初始化程序包括了关中断( ea
40、=0) ,定时器初始化,rs485 通信初始化,模拟 i2c 端 口初始化,开中断(ea=1) 。 定时器初始化程序为 void initt1(void) tmod = 0 x20; /定时器 t1 工作于定时器方式 2 th1 =t1h ;/设置定时器的初值,10ms tl1 =t1l; /定义 t1h 0 x0c4,t1l 0 x00 tr1 =1;/启动定时器 t1,开始计时 pcon=0 x80; scon=0 x50;/设置串口工作方式 rs485 通信初始化程序为 void initrs485 (void) rsselect=1;/默认为发送状态 rssbuffer.state=0
41、;/设置 state 初值 模拟 i2c 端口初始化程序为 void initi2c(void) /i2c 总线初始化程序,作用是使总线处于空闲状态 sck=1; _nop_(); sdio=1; _nop_(); 4.4.3 3 sonixsonix sn9p701fsn9p701f 控制程序设计控制程序设计 用 io 总线在 mcu 与 oid 设备之间模拟 i2c 通信,函数功能实现单片机对 sonix sn9p701f 的控制。通信主要通过两根线 sck(时钟)和 sdio(数据)并设置 sck 为 p36,sdio 为 p37,并定义数组 dat和 sum。sonix sn9p701
42、f 控制及其条码识别流程 图如图 4-3 所示。 初始化io口 delay 50ms clk输出高 判断dat是否为低,如果2秒后 还不为低,说明sonixsn9s102 c没信号 delay 60ms clk输出低 clk输出低 把dat作为输出 口,并输出低 clk输出高 delay10us,让 笔读dat信号 clk输出高 把dat作为输 入口 delay 10us clk输出高 delay 10 us clk输出低 读取dat 是否读了23 次 如果收到23bit数据为0 x60fff8,表示笔开机 成功,这时候拿sonix sn9s102c去点 码,sonix sn9s102c会自动
43、发数据过来 否 是 是 开始 结束 否 图 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
44、总线 delays(1); sck=0; delays(1); i2c 读取程序的功能是在检测到 dat 中值为 0 x60fff8 后,表示开机成功,然后用 sn9s102c 去读取条码。sn9s102c 会自动发送数据。主要程序如下: initi2c(); /首先初始化 i2c 总线 delays(5000); / 延时程序,延时 60ms sck = 1; delays(6000);/延时 60ms sck=0; delays(200000); /延时 2 秒后判断 sdio 是否为低 if(sdio = 0)/如果 sdio 为低,说明 sn9s102c 检测到信号,否则不执行以下程序
45、。 sck=1; sdio=0;/把 sdio 作为输出,并输出低 sck=0; delays(10);/延迟 10us,为了让笔读取信号 sck=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-
46、5 所示。 rssbuffer.state 的值 将前导码 放入寄存 器,准备 发送数据 执行发送 数据指令 将前导码 放入寄存 器,准备 发送数据 用数据指 针依次发 送数据 判断数据 长度初始 化数据指 针 数据发送 结束 数据校验 将前导码 放入寄存 器,准备 发送数据 将前导码 放入寄存 器,准备 发送数据 将前导码 放入寄存 器,准备 发送数据 复位 结束 开始 0123456789default 图 4-5 发送程序流程图 4.4.34.4.3 接收程序设计接收程序设计 为了保证数据接收的时间性,本接收程序特别采用定时器 t1 作为接收时间溢出定时。 当数据接收超出定时时间,系统将
47、设定为接收出错,便于系统做出响应。根据接收数据量, 本定时器设定的溢出时间为 50ms,则 th1 初始值为 t1h(0 xfc) ,tl1 初始值为 t1l(0 x17)。 在接收程序 void sendmsg(void)中用 switch 程序完成程序的接收。 case0 为设置定时器初值,设定溢出时间。主要程序如下: rsrbuffer.state+;/接收时间设置 tr1=false; th1=t1h; /10ms tl1=t1l; tr1=true;/开始计时 t1over=5;/50ms timer1_flag=false; case1 为准备接收数据的命令,此时只有命令,没有数据
48、。主要程序如下 rsrbuffer.cmd=sbuf; rsrbuffer.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 时数据接收完毕,接收程序结
49、束。接收标志位为 true,表示接收完成,关 闭定时器。主要程序如下: rsrbuffer.crc=sbuf; rsreceive_flag = true; rsrbuffer.state=0; t1over=0;/关闭定时 timer1_flag=false; 接收程序流程图如图 4-6 所示。 rssbuffer.state 的值 设置定时 器初值, 设定溢出 时间 执行准备 接收数据 指令 将寄存器 中的值依 次放入数 据指针并 判断长度 判断数据 长度初始 化数据指 针 程序结束 rssbuffer. state=0 数据校 验,关闭 定时器 程序结束 rssbuffer. state
50、=0 开始 结束 0123456 图 4-6 接收程序流程图 4.64.6 本章小结本章小结 本章主要介绍了这次毕业设计的主要流程图 和重要程序。子程序包括了:初始化程 序, sonix sn9p701f 控制程序,rs485 串口通信程序。通过软件编程使 at89s52 单片 机,sonix sn9p701f 和 rs485 有序的工作起来。 第第 5 5 章章 系统程序实现与调试系统程序实现与调试 5.15.1 调试环境及调试步骤调试环境及调试步骤 调试对于任何一个实现型毕业设计都至关重要,只有通过程序的不断调试,才能发现 当初设计中存在的问题, 并针对问题一一进行修改。 5.1.15.1
51、.1 调试环境调试环境 本程序调试采用的软件是 keil uvision4,是当前最完善的单片机的调试软件,keil uvision4 软件可以对单片机的型号进行选择,对已写出的程序进行编译,准确的反应出 错位置,便于观察和修改。 5.1.25.1.2 调试步骤调试步骤 在确定了调试环境之后,就开始进行调试工作。而在调试工作之前,确立好调试的步 骤至关重要,全面的调试 才能保证程序的流畅运行。 步骤 1:软件编译。使用 keil uvision4 进行程序编译,通过软件的相关窗口,观 察相关程序是否正确。 步骤 2:对编译后所产生的错误一一进行修改。 步骤 3:通过 usbasp 烧录至单片机
52、中。 步骤 4:动态调试。用示波器监测相关端口,信号是否正常。并对出现的问题作出分 析,提出解决方案。 5.25.2 keilkeil uvision4uvision4 中调试结果及分析中调试结果及分析 5.2.15.2.1 keilkeil uvision4uvision4 中的调试中的调试 在 keil uvision4 中主程序调试结果如图 5-1 所示,调试结果为:0 error(s), 66warning(s) ,软件调试无错误。 图 5-1 keil uvision4 中主程序调试结果 在 keil uvision4 中的 rs485 串口通信程序调试结果如图 5-2 所示,调试结
53、果为: 0 error(s),66warning(s) ,软件调试无错误。 图 5-2 keil uvision4 中的 rs485 串口通信程序调试结果 在 keil uvision4 中 sonix sn9p701f 控制程序调试结果如图 5-3 所示,调试结果为: 0 error(s),66warning(s) ,软件调试无错误。 图 5-3 keil uvision4 中 sonix sn9p701f 控制程序调试结果 5.2.25.2.2 实物图演示结果分析实物图演示结果分析 在烧录程序至单片机后,可以用示波器检测出波形。示波器 检测电路如图 5-4 所示。 主程序中的延时程序 de
54、layms()可以调节波形的频率。 图 5-4 示波器检测电路 5.45.4 本章小结本章小结 本章主要对软件调试时出现的错误进行解决,如软件无法编译成功等问题。经过以 上几个步骤,基本完成了设计要求,软件调试成功,已满足基本功能,并对已写的程序进 行分析和反思。 第第 6 6 章章 总结与展望总结与展望 6.16.1 总结总结 随着条形码技术逐渐应用于 工业产品,利用单片机操控识别芯片的微型条形码识别 器在我们日常生活中也起着日益重要的作用。各大企业也越来越重视条形码识别器的准确 性与灵活性。 本课题正是基于用户在识别条形码时对实际需求的分析 ,提出了微型条码识别的技 术方案。通过毕业设计这
55、段时间对实物的硬件与软件架构进行了深入的学习和研究,基本 完成了任务要求,并且加深了对课题的认识,以下是对这次毕业设计的总结: 1,查阅了相关的条形码资料,单片机资料和 sonix sn9p701f 资料。对之前条形码 识别技术和发展有了一定的认识,在搜集了这些资料后,仔细研究和探索资料中能够用到 的地方,加以改进,应用于这次毕业设计中。 2 查阅与这次毕业设计有关的外文资料,在外文资料的整理中, 外文翻译对于本次 毕业设计影响重大,只有严谨准确的翻译才能让这次毕业设计事半功倍。 3 通过查阅单片机与外围设备连接的技术资料,制定了这次毕业设计的总体框架, 拨码开关控制单片机工作状态,单片机 控
56、制 oid 设备,在收到数据后通过 rs485 经过接 口转换器传输至上位机。 4 系统硬件介绍。本次毕业设计的硬件部分包括了 sonix sn9s102c, sonix sn9p701f,单片机采用 at89s52,与上位机之间的通信采用 rs485 串口通信。在有了硬 件的支持下才能完成这次毕业设计。 5 系统软件详细设计。本次毕业设计的开发语言采用简洁明了的 c 语言,程序主要 包括:初始化程序,sonix sn9p701f 控制程序, rs485 串口通信程序。 6 系统的调试。在软件完成的情况下,通过 keil uvision4 对系统进行调试,发现 软件的不足之处,对其进行 改进。
57、 7 毕业论文的撰写。在完成程序之后,对已有的材料和成果进行整合和修改,将硬件 的信息进行介绍,详细介绍 系统的 c 语言程序部分。 6.26.2 展望展望 这次毕业设计实现的是微条码识别器的软件部分,由于时间有限和材料准备的 不充 足,所以在最后的成果方面不是很完善 ,虽然基本完成了任务目标,但是仍然存在一些 不足。程序设计过于简单,对于现实生活中实际问题的处理还有很大差距, 所以在以后 如果还有机会重试有关条 码识别的工作我一定会注意这些问题。 本次毕业设计工作基本结束但系统仍需改进,当系统运用到实际生活中时 ,应当对 系统进行深度优化和完善。 结束语结束语 这次毕业设计是完成工业微型条码
58、识别系统的软件 部分,在毕业设计初期,通过查 阅大量的资料区了解 at89s52,sonix sn9p701f,以及 sonix sn9s102c 的电路图与引脚 功能,知道了各个设备之间如何连接架构以及每个设备的最佳工作状态。另外, c 语言 也是重点之一,如何调用子函数,如何在 c 语言中表明引脚,都是这次毕业设计的重点。 为了满足微处理器的要求,使产品尽量体积较小,方便携带 ,所以要做到设计的简洁明 了,以及程序的言简意赅。虽然在这次设计 过程中遇到很多问题,比如:函数调用的错 误,程序无法烧录至单片机等 ,不过最后大部分问题都在同学与老师的帮助下顺利解决 了。 随着这次毕业设计的逐步进
59、行,知识量的不断增加,我对我们本专业的课程内容也有 了更深层次的了解,这次毕业设计就是针对现在非常热门的物品流通行业,与通信和物联 网有关。 这次毕业设计虽然基本达到了任务要求,但是还有一些缺陷, 程序设计过于简单, 与现实生活的应用还有一定差距。 毕业设计是一次非常有意义的事情,不仅让我们平时学习的知识得到一次融合,加深 我们对已学知识的理解, 更是知识在实践中应用的一次 尝试。反反复复的斟酌与实践中 我们也加深了同学之间的友谊,增进了 师生之间的关系,学习了导师 钻研的精神。 致谢致谢 在这次毕业设计中,感谢所有帮助过我的同学,是与他们不断的交流沟通才让我对毕 业设计的不懂之处越来越少,在
60、反复讨论中确定了论文与设计的大致方向,当然更要感谢 我的导师肖贤建,在论文撰写的初期,他给我们提供资料,对其中需要修改的地方一一注 释,在设计中期,不断的对我们的工作进行检查,在最后论文提交阶段,对我们的论文不 足之处做出修改,是他不厌其烦的督促我们,不断的解答我们基本的问题,才让我顺利的 完成了这次毕业设计。 参考文献参考文献 1罗元, 郝国法. 基于 sopc 的条形码识别系统设计 j. 微计算机信息, 2008, 24(22): 160-162. 2余先涛. 单片机识别条码数据的系统设计及应用 j. 电气传动自动化, 2005, 22(6): 48-50. 3 谭伟娟. 基于 at89s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模线样板钳工基础技能培训手册
- 工具五金制作工职业技能鉴定经典试题含答案
- 中药质检员安全技术操作规程
- 美发师岗位实习报告
- 小学生课件小插图
- 树脂制备职业技能鉴定经典试题含答案
- 天然气提氦操作工实操任务书
- 物理金相实验工岗位实习报告
- 特种电线电缆制造工岗位实习报告
- 碳五石油树脂装置操作工岗位实习报告
- 致命性大出血急救护理专家共识(2019)解读
- T/IAC 15-2017电网行业20 kV及以下配电网资产保险定损规范
- 2025菜鸟驿站转让合同协议模板
- 小学英语-国际音标-练习及答案
- 2025年中考语文三轮冲刺:修改病句 刷题练习题(含答案解析)
- 2025年中医院护士笔试试题
- 抽成合同协议书范本
- 绍兴低空经济规划
- 2024第41届全国中学生物理竞赛预赛试题(含答案)
- 2025年广西文化和旅游厅所属事业单位招聘考试备考题库
- 塔里木大学《发电厂电气部分A》2023-2024学年第二学期期末试卷
评论
0/150
提交评论