工业微型条码识别系统的软件设计与实现毕业设计.doc_第1页
工业微型条码识别系统的软件设计与实现毕业设计.doc_第2页
工业微型条码识别系统的软件设计与实现毕业设计.doc_第3页
工业微型条码识别系统的软件设计与实现毕业设计.doc_第4页
工业微型条码识别系统的软件设计与实现毕业设计.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

计算机信息工程学院毕业设计说明书 工业微型条码识别系统的软件设计与实现工业微型条码识别系统的软件设计与实现 摘要摘要 条形码读取技术是信息采集,自动识别、功能获取的重要方法 。条形码 信息主要包括产地、制造厂家、商品完备的 编号、生产日期、书籍的出版时 间、种类、保质期等,在众多领域都得到广泛使用。 本论文设计了微型条码识别系统。该系统主要由 sonix sn9s102c,sonix sn9p701f 和 at89s52 单片机组成。at89s52 为主控制器配 合外围设备与 rs485 的数据通信将数据传输并显示在上位机上。 这次毕业设计使用了单片机控制 sn9p701f,使实物的体积较其他条形码 识别器小了很多。该方法不仅大大缩小了 设备的成本,更重要的是这种识别器 便于人们携带。最后本论文实现了条码识别系统的软件部分,并通过了测试 与调试,基本上完成了目标和要求。 关关键键词词:条形码;sonix sn9p701;at89s52 单片机;rs485 abstract the industrys mini bar code identification system software design and implementation abstract barcode reading technology is important methods to information collection, automatic identification 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 consist 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 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;at89s52 mcu;rs485 计算机信息工程学院毕业设计说明书 i 第第 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 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 计算机信息工程学院毕业设计说明书 ii 4.1 系统流程图 .13 4.2 系统初始化设计 .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 第第 6 6 章章 总结与展望总结与展望2626 6.1 总结 .26 6.2 展望 .26 结束语结束语2727 致谢致谢2828 参考文献参考文献2929 附录附录 a a 总程序总程序 3030 计算机信息工程学院毕业设计说明书 iii 前言前言 随着条码逐渐走入我们的生活,条形码识别技术越来越得到人们的重视和利用, 利 用条形码获取信息的优点是:获取信息速度快,信息读取量大,高效率等。尤其是在经济 全球化后,条形码识别对生活有着非凡的意义。 但是普通的条码识别器依旧有很多问题,比如: 体积大不利于携带等问题一直影响 着我们对条形码的利用。 这不仅对商品的流通造成了堵塞,也对时间利用造成了极大的 浪费。同时,条形码的种类也进行着不断的变化和改革, ean码,upc码,39码的不断问 世,注定着条形码识别的发展进入一个新的时代。 本次毕业设计使用at89s52单片机和sonix sn9p701f设计出由单片机控制的微型条码 识别系统,实现人们随时随地对条形码的获取与识别 。 计算机信息工程学院毕业设计说明书 1 第第 1 1 章章 绪论绪论 1.11.1 课题的背景和意义课题的背景和意义 不同规格的白缝隙和黑条组成了条形码,然后它们按照已有的编码规则 形成了我们 日常生活中经常见到的条形码,用它们来记录并传输一些人们交易所 要用到的信息。恰 好是由于这些反射率差异很大的条形码能够方便快捷的反应各个条形码中所包含的信息, 让人们在很短的时间内获取最有用的信息,所以在物品交易,图书借阅,科研开发,工业 制造等许多产业中都起着不可或缺的作用。工业微型条码识别系统主要用于smt 机器工 作位置的检测,预防工作出错产生误安装。 微条码的发展应用基本可以划分为两个时期 :第一时期是非人工结算,这个时期主要 是应用于企业的内部架构。为企业之间信息交流提供了很大的便利,第二个时期是所有商 品的供销管理,产品物流,企业的连锁化运营。在我国,应用条形码技术的现状大概处于 第二个阶段,而且很大程度上识别设备还要借鉴国外的产品 ,所以与国外产品差距很大。 在逐渐融入全球化的中国,大量商品的进出口已经成为现实 ,相信在不久的将来,条形码 将处于全速发展的时代。条形码是物流技术的核心与关键 ,有效的条码识别软件能高效 的实现对条形码的阅读,对条形码的发展与应用提供 了帮助。 由于条形码与我们的生活息息相关, 在工业生产中,伴随着交易数量的持续增加 和 服务质量的不断提高,产品进出口公司业务量和繁琐程度越来越大,工业微型条码软件 系统便应运而生。目前,我们是将 sonix sn9p701f,at89s52 单片机和 sonix sn9s102c 等设备连接在一起,具有高效化、小型化、规范化的优点。让合理的软件算法与简便的 读取设备相结合,帮助人们对商品信息进行及时准确的分析处理,从而 让条形码更简化 了我们工作时的识别过程。 本设计主要是单片机配合外围设备实现该条码识别系统的软件部分。 1.21.2 主要研究内容主要研究内容 本次课程设计中,采用 at89s52 作为系统的控制核心,与 sonix sn9p701f,sonix sn9s102c 等设备配合实现条形码的识别和信息的获取。 1.31.3 论文的结构安排论文的结构安排 本文根据本次毕业设计的要求,将论文分为 六章,具体内容如下: 第 1 章 绪论,介绍了我国条形码领域的发展状况、本课题研究的应用和意义,以及 本人对课题的实现思路。 第 2 章 系统总体框架设计,简单的概括一下这次毕业设计的思路, 分析各设备的作 用。 计算机信息工程学院毕业设计说明书 2 第 3 章 系统硬件介绍,概述了本次毕业设计所使用到的设备,如 sonix sn9s102ce,sonix sn9p701f, at89s52 等等。 第 4 章 系统软件的详细设计,根据现有硬件资源,设计程序的流程图 并写出程序, 详细介绍每部分程序的意义。 第 5 章 系统程序实现与调试,介绍调试步骤,当程序在 keil uvision4 中编译成功 后,通过 usbasp 烧录至单片机。 第 6 章 总结与展望,对已经完成的毕业设计进行总结, 分析系统设计的不足之处。 1.41.4 本章小结本章小结 本章主要介绍了本次毕业设计的研究情况和背景,并说明该领域存在的问题和现状, 阐述自己的设计方向并概述设计思路。同时介绍 硬件的使用情况和详细介绍这次毕业论 文的组成结构。 计算机信息工程学院毕业设计说明书 3 第第 2 2 章章 系统总体框架设计系统总体框架设计 2.12.1 系统结构框图系统结构框图 这次毕业设计的思路是这样的,首先 通过拨码开关对单片机的控制让 sonix sn9p701f 获取条形码的各种信息,再通过 rs485 传输到上位机中,由于现在 pc 机大都 使用 rs232 接口或者 usb 接口,所以需要一个接口转换 器让信息成功传输至上位机中。 系统总体设计框图如图 2-1 所示。 oid图像识别设备 dsp图像处理设备 如sn9p701 at89s52单片机 rs485接口转换上位机 i2c 拨码开关sonix sn9s102c dsp图像处理设备 sonix sn9p701f at89s52单片机 rs485接口转换上位机 拨码开关 a b 图 2-1 系统总体设计框图 2.22.2 sonixsonix sn9s102csn9s102c sonix sn9s102c 为图像传感器模块,是把需要扫描的外部信号转换成电信号,以便 传输给识别模块,一般来说,它是由感知元件和转换器件构成的。市场上的图像传感器千 差万别,但是根据体积,光学分辨率等因素,最后决定采用 sonix sn9s102c,这是一种 高度集成的有源像素图像传感器,采用 0.35um cmos 技术制成。 2.32.3 sonixsonix sn9p701fsn9p701f sonix sn9p701f 为本设计的图像处理模块,在光信号被转换成电信号后,图像处理 模块需要对电信号进行处理,比如信号分析,滤波,信号的调制与解调等 。然后把电信 号传给单片机。为了满足实物的微型化并配合 sn9s102c 图像传感器,这次设计采用了 sonix sn9p701f。 2.42.4 单片机模块单片机模块 单片机是这次设计的核心模块,它起着控制条码的读取,传输数据,控制rs485 通 信等功能,所以它必须有多引脚,但是单片机的体积要尽量 的小。考虑各方面因素,我 选用了 atmel 公司的 at89s52 单片机,在 pdip 封装, plcc 封装, tqfp 封装等型号中 选择了 tqfp44 引脚封装型号,符合设计的微型化。 计算机信息工程学院毕业设计说明书 4 2.52.5 拨码开关拨码开关 在系统的设计当中,拨码开关的作用为切换系统的工作状态, 拨码开关共有四个键, 每一个键对应着单片机不同的功能。 2.62.6 rs485rs485 串口通信串口通信模块模块 这次毕业设计的 at89s52 单片机和上位机之间的通信都是 通过 rs485 进行通信, rs485 串口通信有三根线,分别是 rxd 输入线,txd 输出线和控制线。但是由于 rs485 在上位机上用的较少,最后要通过一个转换器转换为 rs232 或是 usb 接口进行通信。 2.72.7 i i2 2c c 总线总线 i2c 总线是一种比较普遍的传输总线, 本设计中用来连接单片机和 sonix sn9p701f,使其之间保持良好的通信。 i2c 的本质就是两根 i/o 总线,一根时钟线,一 根数据线,并且能很好的完成 半双工的数据通信。 2.82.8 本章小结本章小结 本章介绍了这次毕业设计的主要设计思路,各设备之间如何架构与 各设备的作用。 主要是拨码开关控制单片机,然后单片机控制 sn9p701f 开始扫描条形码,最后通过 rs485 和接口转换器显示在 pc 或上位机上。单片机控制 sn9p701f 方面,主要是通过 sck 和 sdio 两根线通信,sck 为时钟线,sdio 为数据线,两根线的相互作用控制着 sn9p701f 的读与写。 计算机信息工程学院毕业设计说明书 5 第第 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 sn9p701fsn9p701f 的描述的描述 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 截止电流:= rssbuffer.len) rssbuffer.state+; break; 当 case=8 时,执行数据校验。 当 case=9 时,结束数据发送。rsselect=0,转到接受程序。主要程序如下 rssendover_flag = true;/发送完毕 rsselect=0; break; 发送流程图如图 4-5 所示。 rssbuffer.state 的值 将前导码 放入寄存 器,准备 发送数据 执行发送 数据指令 将前导码 放入寄存 器,准备 发送数据 用数据指 针依次发 送数据 判断数据 长度初始 化数据指 针 数据发送 结束 数据校验 将前导码 放入寄存 器,准备 发送数据 将前导码 放入寄存 器,准备 发送数据 将前导码 放入寄存 器,准备 发送数据 复位 结束 开始 0123456789default 图 4-5 发送程序流程图 4.4.34.4.3 接收程序设计接收程序设计 为了保证数据接收的时间性,本接收程序特别采用定时器 t1 作为接收时间溢出定时。 当数据接收超出定时时间,系统将设定为接收出错,便于系统做出响应。根据接收数据量, 本定时器设定的溢出时间为 50ms,则 th1 初始值为 t1h(0xfc) ,tl1 初始值为 t1l(0x17)。 在接收程序 void sendmsg(void)中用 switch 程序完成程序的接收。 case0 为设置定时器初值,设定溢出时间。主要程序如下: rsrbuffer.state+;/接收时间设置 tr1=false; th1=t1h; /10ms 计算机信息工程学院毕业设计说明书 20 tl1=t1l; tr1=true;/开始计时 t1over=5;/50ms timer1_flag=false; case1 为准备接收数据的命令,此时只有命令,没有数据。主要程序如下 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 时数据接收完毕,接收程序结束。接收标志位为 true,表示接收完成,关 闭定时器。主要程序如下: rsrbuffer.crc=sbuf; rsreceive_flag = true; rsrbuffer.state=0; t1over=0;/关闭定时 timer1_flag=false; 接收程序流程图如图 4-6 所示。 rssbuffer.state 的值 设置定时 器初值, 设定溢出 时间 执行准备 接收数据 指令 将寄存器 中的值依 次放入数 据指针并 判断长度 判断数据 长度初始 化数据指 针 程序结束 rssbuffer. state=0 数据校 验,关闭 定时器 程序结束 rssbuffer. state=0 开始 结束 0123456 计算机信息工程学院毕业设计说明书 21 图 4-6 接收程序流程图 4.64.6 本章小结本章小结 本章主要介绍了这次毕业设计的主要流程图 和重要程序。子程序包括了:初始化程 序, sonix sn9p701f 控制程序,rs485 串口通信程序。通过软件编程使 at89s52 单片 机,sonix sn9p701f 和 rs485 有序的工作起来。 计算机信息工程学院毕业设计说明书 22 第第 5 5 章章 系统程序实现与调试系统程序实现与调试 5.15.1 调试环境及调试步骤调试环境及调试步骤 调试对于任何一个实现型毕业设计都至关重要,只有通过程序的不断调试,才能发现 当初设计中存在的问题, 并针对问题一一进行修改。 5.1.15.1.1 调试环境调试环境 本程序调试采用的软件是 keil uvision4,是当前最完善的单片机的调试软件,keil uvision4 软件可以对单片机的型号进行选择,对已写出的程序进行编译,准确的反应出 错位置,便于观察和修改。 5.1.25.1.2 调试步骤调试步骤 在确定了调试环境之后,就开始进行调试工作。而在调试工作之前,确立好调试的步 骤至关重要,全面的调试 才能保证程序的流畅运行。 步骤 1:软件编译。使用 keil uvision4 进行程序编译,通过软件的相关窗口,观 察相关程序是否正确。 步骤 2:对编译后所产生的错误一一进行修改。 步骤 3:通过 usbasp 烧录至单片机中。 步骤 4:动态调试。用示波器监测相关端口,信号是否正常。并对出现的问题作出分 析,提出解决方案。 5.25.2 keilkeil uvision4uvision4 中调试结果及分析中调试结果及分析 5.2.15.2.1 keilkeil uvision4uvision4 中的调试中的调试 在 keil uvision4 中主程序调试结果如图 5-1 所示,调试结果为:0 error(s), 66warning(s) ,软件调试无错误。 计算机信息工程学院毕业设计说明书 23 图 5-1 keil uvision4 中主程序调试结果 在 keil uvision4 中的 rs485 串口通信程序调试结果如图 5-2 所示,调试结果为: 0 error(s),66warning(s) ,软件调试无错误。 图 5-2 keil uvision4 中的 rs485 串口通信程序调试结果 在 keil uvision4 中 sonix sn9p701f 控制程序调试结果如图 5-3 所示,调试结果为: 0 error(s),66warning(s) ,软件调试无错误。 计算机信息工程学院毕业设计说明书 24 图 5-3 keil uvision4 中 sonix sn9p701f 控制程序调试结果 5.2.25.2.2 实物图演示结果分析实物图演示结果分析 在烧录程序至单片机后,可以用示波器检测出波形。示波器 检测电路如图 5-4 所示。 主程序中的延时程序 delayms()可以调节波形的频率。 图 5-4 示波器检测电路 5.45.4 本章小结本章小结 计算机信息工程学院毕业设计说明书 25 本章主要对软件调试时出现的错误进行解决,如软件无法编译成功等问题。经过以 上几个步骤,基本完成了设计要求,软件调试成功,已满足基本功能,并对已写的程序进 行分析和反思。 计算机信息工程学院毕业设计说明书 26 第第 6 6 章章 总结与展望总结与展望 6.16.1 总结总结 随着条形码技术逐渐应用于 工业产品,利用单片机操控识别芯片的微型条形码识别 器在我们日常生活中也起着日益重要的作用。各大企业也越来越重视条形码识别器的准确 性与灵活性。 本课题正是基于用户在识别条形码时对实际需求的分析 ,提出了微型条码识别的技 术方案。通过毕业设计这段时间对实物的硬件与软件架构进行了深入的学习和研究,基本 完成了任务要求,并且加深了对课题的认识,以下是对这次毕业设计的总结: 1,查阅了相关的条形码资料,单片机资料和 sonix sn9p701f 资料。对之前条形码 识别技术和发展有了一定的认识,在搜集了这些资料后,仔细研究和探索资料中能够用到 的地方,加以改进,应用于这次毕业设计中。 2 查阅与这次毕业设计有关的外文资料,在外文资料的整理中, 外文翻译对于本次 毕业设计影响重大,只有严谨准确的翻译才能让这次毕业设计事半功倍。 3 通过查阅单片机与外围设备连接的技术资料,制定了这次毕业设计的总体框架, 拨码开关控制单片机工作状态,单片机 控制 oid 设备,在收到数据后通过 rs485 经过接 口转换器传输至上位机。 4 系统硬件介绍。本次毕业设计的硬件部分包括了 sonix sn9s102c, sonix sn9p701f,单片机采用 at89s52,与上位机之间的通信采用 rs485 串口通信。在有了硬 件的支持下才能完成这次毕业设计。 5 系统软件详细设计。本次毕业设计的开发语言采用简洁明了的 c 语言,程序主要 包括:初始化程序,sonix sn9p701f 控制程序, rs485 串口通信程序。 6 系统的调试。在软件完成的情况下,通过 keil uvision4 对系统进行调试,发现 软件的不足之处,对其进行 改进。 7 毕业论文的撰写。在完成程序之后,对已有的材料和成果进行整合和修改,将硬件 的信息进行介绍,详细介绍 系统的 c 语言程序部分。 6.26.2 展望展望 这次毕业设计实现的是微条码识别器的软件部分,由于时间有限和材料准备的 不充 足,所以在最后的成果方面不是很完善 ,虽然基本完成了任务目标,但是仍然存在一些 不足。程序设计过于简单,对于现实生活中实际问题的处理还有很大差距, 所以在以后 如果还有机会重试有关条 码识别的工作我一定会注意这些问题。 本次毕业设计工作基本结束但系统仍需改进,当系统运用到实际生活中时 ,应当对 系统进行深度优化和完善。 计算机信息工程学院毕业设计说明书 27 结束语结束语 这次毕业设计是完成工业微型条码识别系统的软件 部分,在毕业设计初期,通过查 阅大量的资料区了解 at89s52,sonix sn9p701f,以及 sonix sn9s102c 的电路图与引脚 功能,知道了各个设备之间如何连接架构以及每个设备的最佳工作状态。另外, c 语言 也是重点之一,如何调用子函数,如何在 c 语言中表明引脚,都是这次毕业设计的重点。 为了满足微处理器的要求,使产品尽量体积较小,方便携带 ,所以要做到设计的简洁明 了,以及程序的言简意赅。虽然在这次设计 过程中遇到很多问题,比如:函数调用的错 误,程序无法烧录至单片机等 ,不过最后大部分问题都在同学与老师的帮助下顺利解决 了。 随着这次毕业设计的逐步进行,知识量的不断增加,我对我们本专业的课程内容也有 了更深层次的了解,这次毕业设计就是针对现在非常热门的物品流通行业,与通信和物联 网有关。 这次毕业设计虽然基本达到了任务要求,但是还有一些缺陷, 程序设计过于简单, 与现实生活的应用还有一定差距。 毕业设计是一次非常有意义的事情,不仅让我们平时学习的知识得到一次融合,加深 我们对已学知识的理解, 更是知识在实践中应用的一次 尝试。反反复复的斟酌与实践中 我们也加深了同学之间的友谊,增进了 师生之间的关系,学习了导师 钻研的精神。 计算机信息工程学院毕业设计说明书 28 致谢致谢 在这次毕业设计中,感谢所有帮助过我的同学,是与他们不断的交流沟通才让我对毕 业设计的不懂之处越来越少,在反复讨论中确定了论文与设计的大致方向,当然更要感谢 我的导师肖贤建,在论文撰写的初期,他给我们提供资料,对其中需要修改的地方一一注 释,在设计中期,不断的对我们的工作进行检查,在最后论文提交阶段,对我们的论文不 足之处做出修改,是他不厌其烦的督促我们,不断的解答我们基本的问题,才让我顺利的 完成了这次毕业设计。 计算机信息工程学院毕业设计说明书 29 参考文献参考文献 1罗元, 郝国法. 基于 sopc 的条形码识别系统设计 j. 微计算机信息, 2008, 24(22): 160-162. 2余先涛. 单片机识别条码数据的系统设计及应用 j. 电气传动自动化, 2005, 22(6): 48-50. 3 谭伟娟. 基于 at89s52 单片机的数据采集系统 j. 广西轻工业, 2011 (5): 63-64。 4李建国, 赵战民, 刘卿. 条码扫描器与单片机的接口设计 j. 中国自动识别技术, 2009 (6): 97-99. 5 李艳宇. 有关条形码技术应用的现状和发展研究 j. 信息与电脑 (理论版), 2010, 2: 046。 6 肖正兴, 聂哲. 基于 c 语言的软件设计与实现j. 计算机应用与软件, 2008, 25(6): 216-218. 7 gallo, o; manduchi, r, “reading 1d barcodes with mobile phones using deformable templates,“ pattern analysis and machine intelligence, ieee transactions on , sept. 2011,vol.33, no.9, pp.1834-1843 8 rohs, m. real-world interaction with camera-phones. in proceedings of 2nd international symposium on ubiquitous computing systems, springer, 2004,pp. 7489 9 张铭. 图形 (条形码) 识别技术在现代电力物流企业管理中的应用j. 华东电力, 2011, 39(3): 512-514 10 方路平, 谢超, 魏渊洁. 复杂图像背景下的一维条形码定位研究j. 计算机应用与软件, 2011, 28(8): 155-157 计算机信息工程学院毕业设计说明书 30 附录附录 a a 总程序总程序 /*rs485 通信程序*/ #include “rs485.h“ sbit rsselect=p32 ; void initrs485 (void) rsselect=1;/默认为发送状态 rssbuffer.state=0;/设置 state 状态 void startsendmsg(void) rsselect=1; sbuf=0x0fb; rssbuffer.state=0; rssendover_flag=false; void sendmsg(void) uchar i; switch(rssbuffer.state) case 0:/send 0x0fb sbuf=0xfb; rssbuffer.state+; break; case 1: sbuf=0xfb; rssbuffer.state+; break; case 2: 计算机信息工程学院毕业设计说明书 31 sbuf=0xfb; rssbuffer.state+; break; case 3: sbuf=0xfb; rssbuffer.state+; break; case 4: sbuf=0xfb; rssbuffer.state+; break; case 5: sbuf=rssbuffer.cmd; rssbuffer.state+; break; case 6: sbuf=rssbuffer.len; rssbuffer.state+; if(rssbuffer.len=0) rssbuffer.state+;/没有数据,只是命令 rssbuffer.pointer=0; break; case 7: i=rssbuffer.pointer; sbuf=rssbuffer.datai; 计算机信息工程学院毕业设计说明书 32 i+; rssbuffer.pointer=i; if(i = rssbuffer.len) rssbuffer.state+; break; case 8: sbuf=rssbuffer.crc; rssbuffer.state+; break; case 9: /结束 rssbuffer.state=0;/test rssendover_flag = true;/发送完毕 rsselect=0; break; default: rssbuffer.state=0; rsselect=0; break; void initreceivestate(void) rsrbuffer.state=0; void receivemsg(void) switch(rsrbuffer.state) 计算机信息工程学院毕业设计说明书 33 case 0: if(sbuf= 0xfb) rsrbuffer.state+; /接收时间设置 tr1=false; th1=t1h; /10ms tl1=t1l; tr1=true;/开始计时 t1over=5;/50ms timer1_flag=false; break; case 1: /除掉 0xfb if(sbuf!=0xfb) rsrbuffer.cmd=sbuf; rsrbuffer.state+; break; case 2: rsrbuffer.len=sbuf; rsrbuffer.pointer=0; rsrbuffer.state+; if(rsrbuffer.len=0) rsrbuffer.state+;/没有数据,只是命令 if(rsrbuffer.len15) rsrbuffer.state=0;/数据超长 计算机信息工程学院毕业设计说明书 34 break; case 3: rsrbuffer.datarsrbuffer.pointer=sbuf; rsrbuffer.pointer+; if(rsrbuffer.pointer=rsrbuffer.len) rsrbuffer.state+; break; case 4: rsrbuffer.crc=sbuf; rsreceive_flag = true; rsrbuffer.state=0; t1over=0; /关闭定时 timer1_flag=false; break; case 5: rsrbuffer.state=0; break; case 6: rsrbuffer.state=0; 计算机信息工程学院毕业设计说明书 35 break; /*模拟 i2c 程序*/ #include #include #include “rs485.h“ #define uchar unsigned char #define uchar unsigned char /*宏定义*/ #define uint unsigned int /*端口位定义*/ sbit bell_out=p35; sbit sck=p36;/*模拟 i2c 时钟传送位*/ sbit sdio=p37;/*模拟 i2c 数据控制位*/ char dat; int i; long sum=0; void delays(uchar s) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(s-); 计算机信息工程学院毕业设计说明书 36 void initi2c() sck=1; _nop_(); sdio=1; _nop_(); void i2cstart(void)/i2c 起始程序 sdio=1; delays(1); sck=1; delays(1); sdio=0; delays(1); sck=0; delays(1); void i2cwork(void) /i2c 读取程序 initi2c(); delays(5000); / 延时子程序 sck = 1; delays(6000); sck=0; delays(200000); /延时 2 秒后判断 sdio 是否为低 if(sdio = 0) sck=1; sdio=0; sck=0; delays(10);/延迟 10us,让 dat 读取信号 sck=1; sdio=1;/将 dat 作为输入口 delays(10); 计算机信息工程学院毕业设计说明书 37 sck=1; delays(10); for(i=0;i #include #include “rs485.h“ #define uchar unsigned char sbit led=p14; void delayus(uchar us) do _nop_(); _nop_(); _nop_(); _nop_(); 计算机信息工程学院毕业设计说明书 38 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(us-); void delayms(uchar ms) do delayus(200); while(ms-); void initt1(void) tmod = 0x20; /定时器 t1 工作于定时器方式 2 th1 =t1h ;/设置定时器的初值,10ms tl1 =t1l; tr1 =1;/启动定时器 t1,开始计时 pcon=0x80; scon = 0x50;/设置串口工作于方式 1,允许接收 void init(void) ea=0; initreceivestate(); initrs485(); initi2c() ; initt1() ;/

温馨提示

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

评论

0/150

提交评论