工业微型条码识别系统的软件设计与实现.docx
- 文档编号:6399514
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:40
- 大小:571.92KB
工业微型条码识别系统的软件设计与实现.docx
《工业微型条码识别系统的软件设计与实现.docx》由会员分享,可在线阅读,更多相关《工业微型条码识别系统的软件设计与实现.docx(40页珍藏版)》请在冰豆网上搜索。
工业微型条码识别系统的软件设计与实现
工业微型条码识别系统的软件设计与实现
摘要
条形码读取技术是信息采集,自动识别、功能获取的重要方法。
条形码信息主要包括产地、制造厂家、商品完备的编号、生产日期、书籍的出版时间、种类、保质期等,在众多领域都得到广泛使用。
本论文设计了微型条码识别系统。
该系统主要由SONIXSN9S102C,SONIXSN9P701F和AT89S52单片机组成。
AT89S52为主控制器配合外围设备与RS485的数据通信将数据传输并显示在上位机上。
这次毕业设计使用了单片机控制SN9P701F,使实物的体积较其他条形码识别器小了很多。
该方法不仅大大缩小了设备的成本,更重要的是这种识别器便于人们携带。
最后本论文实现了条码识别系统的软件部分,并通过了测试与调试,基本上完成了目标和要求。
关键词:
条形码;SONIXSN9P701;AT89S52单片机;RS485
Theindustry'sminibarcodeidentificationsystemsoftwaredesignandimplementation
Abstract
Barcodereadingtechnologyisimportantmethodstoinformationcollection,automaticidentificationandthefunctiongets.Barcode’smaininformationincludeOrigin,themanufacturer'snumber,productiondate,completegoods,books,publicationdate,type,expirationdate,andsoon,whicharegenerallyusedinmanyareas.
Thisthesisdesignsminibarcoderecognitionsystem,thesystemconsistoftheSONIXSN9S102C,SONIXSN9P701FandAT89S52MCU.AT89S52MCUcombinedwithotherdevicesanddisplayofdatacommunicationwiththers485onthehostcomputer.
ThisgraduationprojectusesMCU control SN9P701F,thephysicalvolumethanotherbarcoderecognitionLittlealot,Themethodhasnotonlygreatlyreducedthecostofequipment,andmoreimportantly,thisrecognitioncanbeeasytopeoplecarry.Finallythethesiscompletesbarcoderecognition’ssoftwaresystem,andpassesthetestanddebug,basicallycompletedthegoalsandrequirements.
Keywords:
Barcode;SONIXSN9P701;AT89S52MCU;RS485
前言
随着条码逐渐走入我们的生活,条形码识别技术越来越得到人们的重视和利用,利用条形码获取信息的优点是:
获取信息速度快,信息读取量大,高效率等。
尤其是在经济全球化后,条形码识别对生活有着非凡的意义。
但是普通的条码识别器依旧有很多问题,比如:
体积大不利于携带等问题一直影响着我们对条形码的利用。
这不仅对商品的流通造成了堵塞,也对时间利用造成了极大的浪费。
同时,条形码的种类也进行着不断的变化和改革,EAN码,UPC码,39码的不断问世,注定着条形码识别的发展进入一个新的时代。
本次毕业设计使用AT89S52单片机和SONIXSN9P701F设计出由单片机控制的微型条码识别系统,实现人们随时随地对条形码的获取与识别。
第1章绪论
1.1课题的背景和意义
不同规格的白缝隙和黑条组成了条形码,然后它们按照已有的编码规则形成了我们日常生活中经常见到的条形码,用它们来记录并传输一些人们交易所要用到的信息。
恰好是由于这些反射率差异很大的条形码能够方便快捷的反应各个条形码中所包含的信息,让人们在很短的时间内获取最有用的信息,所以在物品交易,图书借阅,科研开发,工业制造等许多产业中都起着不可或缺的作用。
工业微型条码识别系统主要用于SMT机器工作位置的检测,预防工作出错产生误安装。
微条码的发展应用基本可以划分为两个时期:
第一时期是非人工结算,这个时期主要是应用于企业的内部架构。
为企业之间信息交流提供了很大的便利,第二个时期是所有商品的供销管理,产品物流,企业的连锁化运营。
在我国,应用条形码技术的现状大概处于第二个阶段,而且很大程度上识别设备还要借鉴国外的产品,所以与国外产品差距很大。
在逐渐融入全球化的中国,大量商品的进出口已经成为现实,相信在不久的将来,条形码将处于全速发展的时代。
条形码是物流技术的核心与关键,有效的条码识别软件能高效的实现对条形码的阅读,对条形码的发展与应用提供了帮助。
由于条形码与我们的生活息息相关,在工业生产中,伴随着交易数量的持续增加和服务质量的不断提高,产品进出口公司业务量和繁琐程度越来越大,工业微型条码软件系统便应运而生。
目前,我们是将SONIXSN9P701F,AT89S52单片机和SONIXSN9S102C等设备连接在一起,具有高效化、小型化、规范化的优点。
让合理的软件算法与简便的读取设备相结合,帮助人们对商品信息进行及时准确的分析处理,从而让条形码更简化了我们工作时的识别过程。
本设计主要是单片机配合外围设备实现该条码识别系统的软件部分。
1.2主要研究内容
本次课程设计中,采用AT89S52作为系统的控制核心,与SONIXSN9P701F,SONIXSN9S102C等设备配合实现条形码的识别和信息的获取。
1.3论文的结构安排
本文根据本次毕业设计的要求,将论文分为六章,具体内容如下:
第1章绪论,介绍了我国条形码领域的发展状况、本课题研究的应用和意义,以及本人对课题的实现思路。
第2章系统总体框架设计,简单的概括一下这次毕业设计的思路,分析各设备的作用。
第3章系统硬件介绍,概述了本次毕业设计所使用到的设备,如SONIXSN9S102CE,SONIXSN9P701F,AT89S52等等。
第4章系统软件的详细设计,根据现有硬件资源,设计程序的流程图并写出程序,详细介绍每部分程序的意义。
第5章系统程序实现与调试,介绍调试步骤,当程序在KeiluVision4中编译成功后,通过USBasp烧录至单片机。
第6章总结与展望,对已经完成的毕业设计进行总结,分析系统设计的不足之处。
1.4本章小结
本章主要介绍了本次毕业设计的研究情况和背景,并说明该领域存在的问题和现状,阐述自己的设计方向并概述设计思路。
同时介绍硬件的使用情况和详细介绍这次毕业论文的组成结构。
第2章系统总体框架设计
2.1系统结构框图
这次毕业设计的思路是这样的,首先通过拨码开关对单片机的控制让SONIXSN9P701F获取条形码的各种信息,再通过RS485传输到上位机中,由于现在PC机大都使用RS232接口或者USB接口,所以需要一个接口转换器让信息成功传输至上位机中。
系统总体设计框图如图2-1所示。
图2-1系统总体设计框图
2.2SONIXSN9S102C
SONIXSN9S102C为图像传感器模块,是把需要扫描的外部信号转换成电信号,以便传输给识别模块,一般来说,它是由感知元件和转换器件构成的。
市场上的图像传感器千差万别,但是根据体积,光学分辨率等因素,最后决定采用SONIXSN9S102C,这是一种高度集成的有源像素图像传感器,采用0.35umCMOS技术制成。
2.3SONIXSN9P701F
SONIXSN9P701F为本设计的图像处理模块,在光信号被转换成电信号后,图像处理模块需要对电信号进行处理,比如信号分析,滤波,信号的调制与解调等。
然后把电信号传给单片机。
为了满足实物的微型化并配合SN9S102C图像传感器,这次设计采用了SONIXSN9P701F。
2.4单片机模块
单片机是这次设计的核心模块,它起着控制条码的读取,传输数据,控制RS485通信等功能,所以它必须有多引脚,但是单片机的体积要尽量的小。
考虑各方面因素,我选用了ATMEL公司的AT89S52单片机,在PDIP封装,PLCC封装,TQFP封装等型号中选择了TQFP44引脚封装型号,符合设计的微型化。
2.5拨码开关
在系统的设计当中,拨码开关的作用为切换系统的工作状态,拨码开关共有四个键,每一个键对应着单片机不同的功能。
2.6RS485串口通信模块
这次毕业设计的AT89S52单片机和上位机之间的通信都是通过RS485进行通信,RS485串口通信有三根线,分别是RXD输入线,TXD输出线和控制线。
但是由于RS485在上位机上用的较少,最后要通过一个转换器转换为RS232或是USB接口进行通信。
2.7I2C总线
I2C总线是一种比较普遍的传输总线,本设计中用来连接单片机和SONIXSN9P701F,使其之间保持良好的通信。
I2C的本质就是两根I/O总线,一根时钟线,一根数据线,并且能很好的完成半双工的数据通信。
2.8本章小结
本章介绍了这次毕业设计的主要设计思路,各设备之间如何架构与各设备的作用。
主要是拨码开关控制单片机,然后单片机控制SN9P701F开始扫描条形码,最后通过RS485和接口转换器显示在PC或上位机上。
单片机控制SN9P701F方面,主要是通过SCK和SDIO两根线通信,SCK为时钟线,SDIO为数据线,两根线的相互作用控制着SN9P701F的读与写。
第3章系统硬件介绍
3.1SONIXSN9S102C
SONIXSN9P701C条形码扫描器是光学图像传感器组件,这是一款高集成的有源像素传感器并装配了3.5CMOS技术,为了有最小化的I/O引脚,原来输出的8位引脚通过2根总线传输数据。
它的CMOS传感器在一个12引脚的CSP封装包里,SONIXSN9P701C提供了一个低成本的方法进行条形码识别。
3.2SONIXSN9P701F
3.2.1SONIXSN9P701F的描述
SN9P701F是第二代解码器,它的设计是为了应用松翰最新发展D.H.R.T.技术。
它整合了一些方案包括CMOS感应界面,图像部分识别工具,稳压器,RC振荡器和恢复指针输出界面。
3.2.2SONIXSN9P701F的特点
1支持光点图像格式
2核心电压工作范围:
3.0V~3.6V
3校准器输入:
3.6v~5v
4最低功率损耗:
3mA
5截止电流:
<10uA
6内含16位dsp的传感器控制和图像部分识别
7光源定时控制
8嵌入式电压稳定
9嵌入式16MhzRC标准振荡电路
10嵌入式低电压检测
1148引脚LQFP包
3.3AT89S52单片机设计
本设计用到的单片机是AT89S52,AT89S52作为硬件的控制部分,主要起到了控制外围设备的作用。
由于该毕业设计需要满足单片机多引脚,体积小,支持RS485通信来实现简单的工业控制,所以本论文使用TFQP44封装的AT89S52单片机。
AT89S52是一种极高效能CMOS、低能耗的8位小型控制处理器,在系统可编程Flash存储器有8k容量。
它使用的高密度不易丢失性存储技术来自Atmel公司,而且与工业使用的80C51系列产品引脚和指令完全相互兼容。
单片机上的Flash允许程序存储器是可编程片上系统,单片机也适用于普遍的其它编程器。
在芯片上,拥有简单实用的8位CPU与Flash系统可编程,使得许多简便、高效的解决方法能在AT89S52单片机上实现应用。
并且AT89S52可降至0Hz静态逻辑操作状态,支持2种不同软件的可选择节电模式。
在空闲模式下,CPU停止运行,但允许定时器/计数器、RAM、串口和中断继续运行。
单片机的掉电保护方式为RAM中的内容被保留,晶体振荡器停止工作,单片机停止当前一切工作,直到下一个中断或手动硬件复位为止。
3.3.1单片机的主要性能
单片机的AT89S52拥有以下一些标准功能:
256字节容量的RAM,32位的I/O口总线和看门狗系统。
另外AT89S52单片机拥有3个16位定时器/计数器,2个数据指针,一个2级6向量的中断结构,片内晶振以及时钟电路,全双工串行口。
AT89S52实物如图3-1所示。
图3-1AT89S52实物图
3.3.2单片机最小系统概述
单片机最小系统的构成部分是:
复位电路,晶振电路,电源,单片机。
一个合格的单片机最小系统可以具有以下几个功能:
1具有复位的功能。
2可以完整的使用单片机内部储存器。
3具有普遍的人机通信接口,像显示器,扬声器等。
4最为重要的一点是具有扩展功能,能与其他设备通过I/O口连接。
3.3.3AT89S52单片机最小系统电路图
晶振电路主要作用产生时钟脉冲,C7和C8可以帮助振荡器起振。
晶振电路如图3-2所示。
图3-2晶振电路
复位电路是当单片机通电时,VCC的+5v电流导入RST端,只要保证RST处于两个周期高电平,则单片机复位。
自动复位电路图如图3-3所示。
图3-3复位电路图
AT89S52单片机引脚图如图3-4所示。
图3-4AT89S52单片机引脚图
3.4单片机的控制方案与选择
3.4.1控制概述
SONIXSN9P701F与AT89S52单片机通信通过4跟总线,数据传输主要依靠SCK和SDIO。
如下图。
外部上拉电阻(4.7kΩ)拉高了4根线上的SDIO。
MCU与OID通信线路如图3-5所示。
图3-5MCU和OID通信线路
4根总线中的SCK和SDIO用于OID和MCU之间的数据通信,传输接口为双向接口,SCK和SDIO的特点如表3-1所示。
表3-1SCK和SDIO的特点
SCK
SDIO
用途
串行时钟
串行数据
方向
MCU→OID
MCU↔OID
上拉控制
否
是
默认状态
低
拉高
OID和MCU之间的传输的是命令,索引和OID的状态,数据特点如表3-2所示。
表3-2OID和DSP数据特点
OID→MCU
OID←MCU
长度
23bits
8bits
用途
OID的指标,命令和状态
命令
3.4.2双向接口
概述:
双向接口是用于OID控制器和MCU之间的,在这个协议中,只有两根线是用于传输数据的,在SDIO上数据依次从高位传输到低位,在双向接口中MCU是主机,OID设备是外围设备。
主从模式:
在双向接口中,主设备是控制系统的主要部分,只有主机设备才能在双向接口上做以下的工作:
1启动运行周期
2在SCK上生成时钟信号
3决定一个传输周期的方向
子设备在双向接口中是被动设备,它需要对主设备的指令很灵敏,如果已经有一个数据准备要发给主设备了,子设备就会发送一个转移请求(拉低SDIO线)来通知主
设备。
工作条件:
默认状态:
主机让SCK保持低电平,SDIO被外部上拉电阻拉高
开始:
主设备通过改变SCK的状态(从低到高)发送一个转移周期
结束:
如果主设备让SCK保持低的状态超过1024个时钟,子设备就会认为转移周期结束,接口工作时序图如图3-6所示。
图3-6接口工作时序图
但是有一点需要注意:
当主设备让SCK保持高的状态,子设备会等待另一个状态改变(高变低)。
在SDIO上的数据从MSb依次转移到LSb上,SDIO程度的变化只会发生在SCK一直保持在高电平,当SCK是低状态,SDIO的状态改变是禁止的。
换句话说,当SCK为低状态时,在SDIO上可以捕获数据。
当SCK为高时,它能把数据放在SDIO上。
SDIO状态的改变会发生在高变低边缘以后。
为了通信成功,主设备必须遵循以下规则去控制SCK
1为了SDIO的程度改变,主设备必须保持SCK的高状态超过32个时钟。
2为了SDIO的数据捕获,主设备必须保持SCK的低状态超过8个时钟低于1024个时钟。
获取有效数据时序图如图3-7所示。
图3-7获取有效数据时序图
子设备传输数据给主设备,读周期如表3-3所示。
表3-3读周期
总线
部分
开始
第1个字节
第2~16个字节
停止
SDIO
主设备
Z
L
Z
Z
子设备
L
Z
16个比特数据
Z
在SDIO上转移的17个字节:
第1个比特:
W/R控制比特,主设备让SDIO保持低状态来开启一个读周期。
第2个比特到第17个比特:
由子设备产生的数据。
在接收到17个比特之后,SDIO会被外部上拉电阻拉高
在读周期之前,子设备发送一个转移请求(拉低SDIO)去通知主设备,在主设备产生开始标示并放置读控制标示在SDIO线上时,一个变化边缘后,子设备开始发送数据。
传输过后,SCK变低状态作为结束标志并且SDIO被上拉电阻拉高。
读周期时序图如图3-8所示。
图3-8读周期时序图
主设备传输数据到子设备,写周期如表3-4所示。
表3-4写周期
总线
部分
开始
第1个字节
第2~9个字节
停止
SDIO
主设备
Z
H
8比特数据
H
子设备
Z/L
Z
Z
Z
在SDIO上一个写周期会有9位比特:
第1个比特是:
读/写控制比特,主设备拉高SDIO去标志一个写周期
第2~9个比特:
由主设备产生的比特
在SDIO传输完9个比特以后,被外部电阻拉高
在写周期中,主机产生一个上升沿在SCK上,并放置一个写控制标示在SDIO线上,主设备传输的任何一个比特都要通过SDIO,并且伴随着写控制标示在SDIO线上,当SCK下降沿之后子设备开始接收数据。
在传输结束后,SCK线保持低状态作为停止信号,并且SDIO线被外部电阻拉高,写周期时序图如图3-9所示。
图3-9写周期时序图
3.4.3数据形式
从OID中得到的连续数据为16个比特指令或16个比特标示。
OID连续数据的规则如表3-5所示。
表3-5OID连续数据的规则
bit15
bit14
bit13
bit12
bit11
bit10
bit9
bit8
bit7
bit6
bit5
bit4
bit3
bit2
bit1
0
关键标示
标示
1
关键标示
指令
从OID到DSP的指令:
1OIDcmd-PowerOn=0xfff8
2OIDcmd-PowerDown=0xfff7
3OIDcmd-Wakeup=0xfff0
OID图像处理会通知用户这个设备已经开始接收用户要求的信息
依次接收来自DSP的指令
命令从DSP到OID
1UserCmd-PowerOnOID=0x53
DSP设备打开OID的图像处理
2UserCmd-PowerDownOID=0x56
DSP设备让OID图像处理处于休眠状态
3UserCmd-AutoSleepFunEnable=0xA0
DSP开启自动休眠功能
4UserCmd-AutoSleepFunDisable=0xA3
DSP不允许开启自动休眠功能
5UserCmd-TriggerToClearAutoSleepTimmer=0xA6
DSP清除自动休眠时间
6UserCmd_ClearAutoSleepTimmerIfOIDDetect=0xAC
UserCmd_NonClearAutoSleepTimmerIfOIDDetect=0x50
OID处理器的自动休眠定时器被清0
7UserCmd_CheckOIDStatus=0x30
DSP可以发送这个命令去检查是否OID处理器被唤醒或休眠
3.4.4控制时间
启动OID时序图如图3-10所示。
图3-10启动OID时序图
1启动OID:
唤醒OID通过让SCK保持高状态超过10ms
2打开程序应该在2s内完成
在OID开始工作后,MCU从OID读取数据
1OID发送的两个数据的时间间隔最少50ms
2如果MCU忽略了发送请求超过300ms,OID将移除发送请求并更新数据。
OID读取数据时序图如图3-11所示。
图3-11OID读取数据时序图
关闭:
OID将会直接关闭如果MCU忽略了来自OIDcmd-PowerDown的发送请求超过75ms。
3.5本章小结
本章主要完成硬件的设计,介绍了这次毕业设计需要使用到的主要硬件设备及相应的各设备引脚功能,主要是AT89S52(控制芯片),SONIXSN9P701F(图像处理模块),SONIXSN9S102C,并列出了系统参数和最佳工作状态。
第4章系统软件的详细设计
为了实现条形码的识别,本系统软件主要为控制SONIXSN9P701F模块程序、系统与上位机之间的RS485通信。
4.1系统流程图
系统流程图主要分为以下几个部分:
系统初始化,SONIXSN9P701F控制及其条码识别和RS485通信。
系统流程图如图4-1所示。
图4-1系统流程图
4.2系统初始化设计
初始化程序流程图如图4-2所示。
图4-2初始化流程图
初始化程序包括了关中断(EA=0),定时器初始化,RS485通信初始化,模拟I2C端口初始化,开中断(EA=1)。
定时器初始化程序为
voidInitT1(void)
{TMOD=0x20;//定时器T1工作于定时器方式2
TH1=T1H;//设置定时器的初值,10ms
TL1=T1L;//定义T1H0x0C4,T1L0x00
TR1=1;//启动定时器T1,开始计时
PCON=0x80;
SCON=0x50;//设置串口工作方式
}
RS485通信初始化程序为
voidInitRS485(void)
{
RSSelect=1;//默认为发送状态
RSSBuffer.State=0;//设置state初值
}
模拟I2C端口初始化程序为
voidInitI2C(void)//I2C总线初始化程序,作用是使总线处于空闲状态
{
SCK=1;
_nop_();
SDIO=1;
_nop_();
}
4.3SONIXSN9P701F控制程序设计
用IO总线在MCU与OID设备之间模拟I2C通信,函数功能实现单片机对SONIXSN9P701F的控制。
通信主要通过两根线SCK(时钟)和SDIO(数据)并设置SCK为P3^6,SDIO为P3^7,并定义数组dat[]和sum。
SONIXSN9P701F控制及其条码识别流程图如图4-3所示。
图4-3SONIXSN9P701F控制程序流程图
本程序包括模拟I2C端口初始化程序Initi2c(),I2C起始程序voidI2CStart(void),I2C结束程序voidI2CStop(void)和I2C读取程序voidI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工业 微型 条码 识别 系统 软件设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)