资源描述
-摘要随着现代工业生产向着自动化、智能化方向的开展,生产过程中长期由人眼占据主导地位的颜色识别工作即将被效率和准确度更高的颜色传感器所替代,颜色传感器在未来生活与生产中扮演的作用将会越来越大。颜色识别器的应用十分广泛,现阶段其主要应作为彩色打印机和绘图仪的主要构成局部。并在化装品、纺织品和涂料制造过程中颜色的调配以及医疗等方面都起着重要的作用。因此对颜色识别器的研究对未来检测行业的开展有着重要的意义。本文将研究TCS230颜色传感器识别颜色的原理,并结合单片机和液晶显示模块来实现颜色识别功能。首先,需要了解一定程度的光与颜色的知识以及深入研究TCS230颜色传感器对颜色的识别原理并实现其识别颜色的功能。其次,利用ST89C52单片机对颜色传感器输出数据进展处理,转换成相应的RGB三原色颜色值。最后,通过LCD1602将RGB三原色颜色值显示出来并通过RGB颜色对应表比照和分析所测数据。本设计具有设备本钱低、体积小、易于操作、灵敏度和准确度高等特点。关键字:颜色识别颜色传感器单片机 TCS230 RGBTHE COLOR RECOGNITION DESIGN BASED ON TCS230 COLOR SENSORABSTRACTAt present industrial manufacture is developing to the direction of automation and intelligence. The production process by the human eye to color identification work is replaced by a color sensor. The part that the colour sensor are playing a more and more important role in peoples life and production. Color recognizer plays a major role in colour printer , plotter,cosmetics,textile, paint manufacturers and medical and so on. Therefore, it is of great significance for the development of testing industry to study the colour sensor.In this article, we will introduce how to identify colour by using the TCS230 colour sensor. First of all ,it is necessary to know the basic knowledge of colour and light,it is also important to have a further study of the indentification theory of TCS230 to the colour and the colour indentification function of the TCS230.secondly,we need to analysis the data collected with SCM and convert the data to the RGB tricolor value .at last,the RGB tricolor value will be showed by LCD1602.The desigh has many features ,such as simple operating,low lost,small size,high sensitivity and so on .KEY WORDS Color-Recognition Color-Sensor Single-Chip Microputer TCS230 RGB. z.-目录中文摘要I英文摘要II1绪论21.1 研究背景21.2颜色识别技术的现状及未来开展趋势2颜色传感器的几种设计方案21.3主要工作及意义22颜色识别技术介绍22.1 色彩识别22.2 色彩识别算法2颜色识别与检测原理23 基于TCS230的设计23.1 STC89C52型单片机功能简介23.2 颜色传感器23.2.1 TCS230芯片的构造框图与特点23.2.2 TCS230识别颜色的原理2与STC89C52单片机连接23.3 LCD1602与51单片机的连接23.31 液晶显示器LCD1602的简介23.32 LCD1602显示器与单片机的连接24颜色识别系统的设计与实验24.1 系统构造框图24.2 TCS230颜色采集模块的设计24.2.1 TCS230颜色采集模块与51单片机连接电路设计24.2.2 四个白色LED补光电路的设计24.3液晶显示模块LCD1602D的软件设计24.4 颜色识别器的实验测试24.4.1 实验测试24.4.2 实验数据及分析25 结论与展望25.1 结论25.2 展望2致2参考文献2附录一2程序代码2附录二2系统电路总图2附录三2TCS3200模块PCB2. z.-1绪论1.1 研究背景随着工业生产中自动化、高速化程度的不断提升,颜色识别在各种工业控制和检测领域的应用更加广泛,颜色传感器在终生活与生产中的作用将会越来越大,颜色传感器在终端设备中的作用将会越来越大。例如颜色识别器在图书馆图书的分类和包装行业的应用已经十分普遍;现阶段其主要应作为彩色打印机和绘图仪的主要构成局部。并在化装品、纺织品和涂料制造过程中颜色的调配以及医疗等方面都起着重要的作用。1.2颜色识别技术的现状及未来开展趋势颜色识别技术是新兴检测技术,在彩色打印、商标识别和材料分拣等方面已在我国拥有广泛应用。虽然我国在机器人视觉系统领域已取得举世瞩目的成就,但是在高分辨的颜色识别方面仍然缺乏自主研发能力。高精度的颜色识别技术仍然由少数兴旺国家掌控,我国高分辨率颜色传感器的研究工作任重而道远。颜色识别系统提出的时间较晚,出现在自动控制系统之后。其作为一种新兴的检测技术也是控制理论的简单应用,经过几十年的开展,在工业控制中逐渐开场大围的应用。颜色传感器在实时检测系统以及自动控制方面有着重要的意义,伴随着单片机等处理器技术的开展,颜色识别系统的效率也大大的增加。颜色识别在现代生产中的应用愈加广泛,特别是在遥感技术、工业过程控制、材料分拣、图像处理、机器人视觉系统等方面的起着重要的作用,颜色传感器的快速开展为上述生产应用自动化的实现提供了可能。随着颜色传感器的广泛应用,颜色识别技术已成为工业自动化必不可少的局部,开展前景十分广阔。颜色传感器的几种设计方案颜色别传感器又称作色彩传感器色。目前通用的颜色测量方法是采用通过测量待测颜色的三个根本颜色的频率输入到单片机等处理器中进展数据处理,得到三基色的值,通过仿真软件或RGB颜色对应表将三基色按所测数据合,从而成得到样品的颜色。目前市面上常见的色颜色传感器大致有两种类型:一种是RGB(红、绿、蓝)三基色型颜色传感器,通过检测带测光的红、绿、蓝三基色刺激值来识别颜色;另一种为色差传感器,主要通过测量待测物体颜色与基准颜色之间的色差来识别颜色。下边简要介绍三种常见的颜色传感器的设计方案:1. 带滤色器和跨阻抗放大器的分立型光电二极管本方案是传统颜色识别器的设计方案,具体方法是将外表分别带有红、蓝、绿三种滤色器的光电二极管排列在同一芯片上测取带测光的频率,(通常将两个蓝滤色器组合在一起以补偿硅片对于蓝光的低灵敏度)。然后通过独立的跨阻抗放大器将光电二极管的输出的方波输送至A/D 转换器中转化为数字信号输送给单片机或其他数字处理器中。这种方法能按个人需要调节放大器的增益和A/D 转换器的分辨率,使系统具有更高的灵活度。但是这种设计却为增加了设计难度,元器件的增多也对电路板的排版要求变得苛刻。此实际方案因其能调节放大器增益和A/D转换器频率而适用于那些工业控制中的短时间响应的过程检测。2. 集成光-电压转换器集成光-电压转换器相对于分立型光电二极管将跨阻抗放大器也集成在同一块芯片上,提高了系统的集成度。测量时也是将三个光电二极管的输出传送至外部A/D 转换器中转化为数字信号再输出至处理器中进展数据处理。这种方法去除了独立的跨阻抗放大器,降低了所需的元件数,由于集成度较高,因此芯片质小量轻,便于安装,并且简化了电路板的布局,更易于设计。但是该方法也存在着局部缺点。例如不能随意的改变是颜色传感器的灵敏度和放大增益。该方法主要应用于那些对空间要求较小或具有明确光照条件的系统。3. 集成光-频率转换器第三种方法直接将待测光通过电流-频率转换器转换为其对应频率输出一个脉冲序列。因输出为其为数字输出且输出能驱动一个TTL负载,故无需增设A/D转化器可直接将传感器输出给单片机等微处理器。如此简化了电路设计的难度。美国氏公司TAOS 推出的TCS230 颜色传感器便是采用此设计方法。该方案取消了A/D转换器和跨阻抗放大器是电路排版更加简洁,数字输出相较于模拟量输出提高了系统抗噪声干扰能力,使颜色传感器的远程测量的误差大大减小。1.3主要工作及意义本文主要研究色彩识别系统,并实现其功能,设计采用STC89C52型单片机,利用TCS230颜色传感器采集颜色频率经单片机处理后输出至LCD1602将处理后的数据显示出来。测试需在在密闭隔光的条件下,测出被测物体的RGB三基色的值并利用LCD1602将RGB值和其对应十六进制显示出来,通过仿真软件或RGB颜色对照表合成出实验数据对应的颜色与实际颜色进展对照。虽然色彩识别兴起的时间比拟晚,但却在工业自动化与智能化方面有着极其中亚的作用,单片机及微控制器的引入极大的提高了色彩识别的速度和智能化程度。如何提高系统识别的精度与快速性、扩大其颜色识别围成为本设计主要技术难题。所以颜色识别系统的研究仍需深入进展,对国外先进的颜色识别仪器技术及其开展都要进展必要的了解,这可以在一定程度上给我们启示,使我们跟上当今颜色传感器的开展方向,帮助我们早日解决这些技术难题。研究的色彩识别系统的意义在于研究颜色传感器识别颜色的原理并实现其颜色识别功能,简化颜色识别难度,且确保检测结果能准确可信。2颜色识别技术介绍2.1 色彩识别实际上,颜色就是白光日光在物体上所反射色光在人眼中的反响。而色光是频率连续的电磁波,故理论上的色彩是无限的,但常见色光如红橙黄绿青蓝紫实物波长在380780nm之间,波长在此围之外的电磁波不会会引起人的色彩感觉。人们能分辨出的色彩种类十分有限,不同的人对颜色有着不同的区别能力且差异明显。从事颜色设计相关行业的人在颜色设计时能以5%或更小的区别调整色彩。当这些大致一样的颜色并排在一块时,绝大多数人都能够看出它们之间的区别。但是当这些颜色单独呈现的时候,普通人是无法看出这相差5%的颜色有和区别。因此大多数人会将这些色彩简单的归类到能用红、黄、蓝等术语对颜色进展简单的描述,或对摸个色彩区间进展适当的划分比方红色可以划分为大红、橘红、品红、粉红等。这些以某种颜色为核心的而划分的颜色区间可以看作同一种颜色,虽然在此空间颜色值并不一样。2.2 色彩识别算法RGB色彩模式是工业界设定的一种颜色标准,也是目前运用最广泛的颜色标准这个标准囊括了所有人眼能感知的颜色。认为所有颜色都可以通过红(Red)、绿(Green)、蓝(Blue)三种颜色按不同比例相互叠加产生的。RGB即为红、绿、蓝三种根本颜色。颜色识别与检测原理三基色原理:适当的选取三种根本颜色,任何颜色都能由这三种颜色按照不同的比例叠加合成,这三种颜色相互独立不能由其他颜色按比例配出,这三种颜色就称为三基色。国际照明委员会CIE推荐使用红、绿、蓝作为三种根本颜色且此原理已在现代工业中有了非常广泛的应用。RGB颜色模型如下列图2.1所示。由三基色原理可知自然界中所有色光都可由R、G、B三种根本颜色按照不同的比例叠加合成,当三基色分量都为0时,叠加出的光为黑色,对应于立方体坐标中的0,0,0点;当三基色分量都为255时,叠加出的光为白色光,对应于立体坐标中得255,255,255。以由黑到白为对角线的正方体的其他六个顶点分别为红255,0,0,黄255,255,0,绿0,255,0,青0,255,255,蓝0,0,255和品红255,0,255。每个颜色都有其单独RGB值。图2.1 RGB颜色模型白平衡算法:理论上的白光几位RGB三基色值都为255的色光,颜色即为标准白光实在物体上反射的色光在人眼中所产生的反映,但在实际中白光其RGB 值并为全为255。这种白光照射在物体上所反射的三基色光强与标准白光所反射的三基色光强是不一样的。而颜色传感器TCS230 就是通过检测标准白光在被测物体上所反射三基色的RGB值来得到所测物体颜色的,故在测量中光源定会对实验结果产生较大的影响。解决这个难题的方法就是进展白平衡调节即测出在标准光源想啊物体反射光的三基色值比上标准光源的的三基色值,得到的结果可认为是物体的实际颜色,也是该物体的反射性质。如公式(1),(2),(3)。R=P物红/P源红 (1)G=P物绿/P源绿 (2)B=P物蓝/P源蓝 (3)3 基于TCS230的设计3.1 STC89C52型单片机功能简介国产宏晶STC51系列单片机不但低功耗、高稳定性能而且具有低廉的价格,自上市以来成为国单片机从业者的首选。STC8952系列单片机便是目前国使用最多的一种单片机类型。其采用MCS-51为核,并在此根底上做了很多改良使的芯片功能更加强大。STC89C52型单片机参数如下:1.指令代码与传统8051的代码完全兼容2. 工作电压:3.3V5.5V3. 工作频率:040MHz4. 8K 字节Flash5. 片上集成512 K RAM6. 通用I/O 口32 个7.不需专用编程器,也不需专用得仿真器,可通过串口直接下载程序8. 具有EEPROM 功能9. 具有看门狗功能10. 有3个十六位定时器/计数器。即T0、T1和T211. 有四个外部中断12. 通用异步串行口13. 工作温度围: 07514. PDIP 封装3.2 颜色传感器3.2.1 TCS230芯片的构造框图与特点TCS230是美国氏公司TAOS推出的将彩色光转化为其对应频率的数字输出型传感器。它直接将待测光通过电流-频率转换器转换为其对应频率输出一个脉冲序列。TCS230是业界推出的第一个数字输出式RGB颜色传感器。其输出可以驱动标准的TTL,因此可以与单片机和逻辑电路直接相连,无需A/D转换电路,这样大大简化了电路。图3.1与图3.2为TCS230的引脚图与实物图。图3.3是颜色传感器TCS230的功能图。图3.1 C51单片机管脚图图 3.2 C51单片机实物图图3.3 TCS230的引脚和功能图在单一的TCS230芯片上集成四种类型的光电二极管,这些光电二极管外表分别镶嵌着红、绿、蓝三种颜色的滤光器,加上未镶嵌的中共64个,每种16个。这四种带滤波器的光电二极管在传感器芯片穿插排列,四种光电二极管能够均匀的就接收光源辐射,极大的地减小因入射光幅射不均而造成的误差,提高颜色识别的准确度。工作时,通过引脚S2、S3选择所需滤波器的颜色类型。TCS230传感器的可通过引脚S0、S1来选择输出频率定标,其输出频率围为2Hz500kHz。下面简要介绍TCS230芯片各个引脚的功能。S0、S1引脚用于选择电源关断模式和输出比例因子2%,20%,100%;引脚S2、S3用于选择滤波器的类型;OE可以控制输出的状态为频率输出使能引脚,当微处理器同接收控制多个芯片时,OE可作为芯片的片选信号;OUT为频率输出引脚,GND接电源地,VCC接+5V电源。表3.1 S0、S1及S2、S3的功能表。表3.1 S0、S1及S2、S3的组合选项S0S1输出频率定标S2S3滤波器类型LL关断电源LL红色LH2%LH蓝色HL20%HL无HH100%HH绿色3.2.2 TCS230识别颜色的原理1. 三原色感应原理在平常生活中见到的各种颜色,即是物体通过反射物体外表所吸收的日光中一局部的有色成分。由三原色理论可知,任何颜色都可由三种根本颜色例如红、绿、蓝按不同的比例混合叠加而成。TCS230识别颜色原理对于TCS230来说,利用S2、S3两引脚的组合选项选定某种颜色滤波器的光电二极管时,传感器就只能允许此种颜色的色光通过阻止其他颜色通过。如此依次选通三种带不同颜色滤光器的光电二极管,分别测量出所测颜色的三原色RGB值,利用仿真软件或RGB颜色对照表就可得到所测物体的颜色。2. 白平衡调整原理白平衡就是向系统说明什么是白色。理论上的白色其三种根本颜色红、绿、蓝RGB值是相等的均为255,但在实际中白光其RGB 值并为全为255。这种白光照射在物体上所反射的三基色光强与标准白光所反射的三基色光强是不一样的。而颜色传感器TCS230 就是通过检测标准白光在被测物体上所反射三基色的RGB值来得到所测物体颜色的,故在测量中光源定会对实验结果产生较大的影响,因此在第一次使用TCS230传感器芯片时,必须先进展白平衡调整降低系统误差。在使用过程中下述三个问题必须注意:1在测试时颜色传感器必须工作在一个密闭隔光的环境中,因为这样可以减少外界光对测量产生的影响。2为了是传感器各光电二极管受光均匀要求光源发出的光要尽可能的集中均匀的照射在待测物体上。3. 第一次使用TCS230颜色传感器时一定要进展白平衡调整。与STC89C52单片机连接TCS230输出为数字量,因此可以省去A/D转换电路直接与单片机或其他微处理器相连接,这样大大简化了电路。图3.4 TCS230颜色传感器实物图图3.5 TCS230颜色传感器模块实物图下列图为TCS230与STC89C52的连接图图3.6 颜色传感器TCS230与单片机的电气连接图3.3 LCD1602与51单片机的连接3.31 液晶显示器LCD1602的简介液晶显示模块在生活当中经常可以看到,如在计算器、电表和玩具中主要用来显示数字、符号等。常见的单片机输出显示端的有液晶显示器、九段数码管和发光二极管等几种,其中发光二极管和LED数码管比拟常用,但在近几年习惯用液晶显示模块作为其输出。液晶显示器又叫做LCDLiquid Crystal Display显示器,液晶经过特殊处理能改变其光线的传输方向,液晶显示器正是利用液晶的这种特性来显示信息的。1.液晶显示器的工作原理液晶是介于固液之间的特殊状态的有机化合物,因其常态下呈液态,故取名液晶。它还有另一个特殊的性质:当给液晶外部施加一个电场会改变其局部子排列配以偏振光片,它就会阻止相应光线的通过。如果在液晶外镶嵌彩色滤光片并改变局部液晶上所加的电压,就能改变这局部液晶对光线的通透性能,从而现实出图案或者其他形象。此便是液晶显示的原理2.液晶显示器的分类液晶显示按按颜色分位黑白显示和多灰度与彩色显示等。假设按其显示方式可分为分点阵式、段式和字符式三种-这也是比拟常用的分类方式。前两种可显示数字、字符等,点阵式是最常见的液晶显示器还其可显示汉字和图案,显示效果更加多样。还可以按液晶显示器的驱动方式划分,可分为静态驱动、单纯矩阵驱动和主动矩阵驱动三大类这就是LCD显示的根本原理。3.液晶显示器显示图形的原理:市场上常见的液晶显示模块有2行*16字、2行*20字和2行*40字这几种,而且这些液晶显示模块具有一样的输入输出界面。本设计所使用的液晶显示模块为LCD1602。3. 液晶显示模块LCD1602的外观极其引脚的介绍:LCD1602属于2行*16字的字符型液晶显示模块,它的正反面外观形状如下列图所示。图3.7 LCD1602A正反面的外观LCD1602 十六个引脚情况如下:第1脚:GND为电源地第2脚:VCC接5V电源第4脚:RS为存放器选择引脚第5脚:RW为读写信号线选择引脚第6脚:E端为使能端,高电平时读取信息,下降沿时执行指令。第714脚:D0D7为8位双向数据端。第15脚:背光源的正极。第16脚:背光源的负极。5. LCD1602的时序及指令说明1602液晶模块部控制器种共有11条控制指令,如下表3.2所示表3.2 控制指令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存储器地址0001字符发生存储器的地址8置数据存储器地址001显示数据储存器的地址9读忙标志或地址01BF计数器地址10向CGRAM或DDRAM中写数10要写入的数据容11从CGRAM或DDRAM读取数11待显示的数据容(CGRAM为字符发生存储器;DDRAM为字符显示存储器)LCD1602通过RS和RW两个引脚的组合共同决定选择部多个存放器中得哪一个。选择情况如下表所示表3.3 LCD1602部存放器选择表RSRW存放器及操作00指令存放器写入01地址计数器和忙标志读出10数据存放器写入11数据存放器读出6. LCD1602的RAM地址映射及标准字库表液晶显示模块在执行每条指令必须要先检测其忙标志的电平,假设为低电平那么表示芯片此刻处于空闲状态不忙,可直接执行该指令;假设为高电平表示芯片处于显示状态不能执行该指令,即此指令失效。显示字符前需先输入待显示字符的地址,下列图给出LCD1602的部显示地址。图3.8 LCD1602部的显示地址LCD1602部的字符发生存储器存储有160个不同的字符图形每一个字符均有一固定代码与之严格对应, LCD1602部字符发生存储器字符图形显示地址如下列图所示图3.9 LCD1602字符发生存储器字符图形显示地址3.32 LCD1602显示器与单片机的连接图3.9 LCD1602与STC89C52单片机具体接线图图4颜色识别系统的设计与实验4.1系统构造框图颜色识别系统共分五个模块,分别为颜色传感器TCS230的驱动模块、TCS230颜色采集模块、四个白色发光二极管搭建的补光模块、以STC89C52为核心的数据处理模块和液晶显示模块LCD1602。颜色识别系统的系统框架设计如图下列图所示。图如4.2为所按本论文思路设计的颜色识别系统的实物图。图4.1 系统框架图4.2 颜色识别系统的实物图4.2 TCS230颜色采集模块的设计4.2.1 TCS230颜色采集模块与51单片机连接电路设计在本设计中,颜色传感器TCS230主要与单片机的P1口和P3口连接。P1口是准双向口I/O口。P1口的输入输出特性与P0口作为通用I/O口似的特性一样;但是当P1口输出时可提供电流负载,不需要外接上拉电阻。P1口能驱动4个TTL。P3口不但可以作准双向通用I/O接口使用外且每一个引脚都还具有另一种功能,详见表4.1.表4.1 P3口的第二功能P3口的引脚第二功能P3.0RXD 串行口输入端P3.1TXD 串行口输出端P3.2INT0 外部中断0请求输入端,低电平有效P3.3INT1 外部中断1请求输入端,低电平有效P3.4T0 定时/计数器0外部计数脉冲输入端P3.5T1 定时/计数器1外部计数脉冲输入端P3.6WR 外部数据存储器写信号,低电平有效P3.7RD 外部数据存储器读信号,低电平有效颜色传感器与单片机具体的连接方式如下列图所示。图4.3 TCS230与单片机的具体连接方式本设计的TCS230颜色采集模块主要是利用定时器/计数器T0和外部中断INT0来实现的。流程图如下所示。图4.4 颜色采集模块TCS230软件流程图4.2.2 四个白色LED补光电路的设计为了防止外界光对测试结果的影响,颜色测试模块实在在密闭隔光的环境下工作的,所以需要另外添加一个稳定的光源作为基准光源。本模块采用四个白色的发光二极管作为补充光源,均匀排列在TCS230传感器四周,使其发出的光能均匀的照照射在待检测的物体上,减小测量误差。补光电路的设计如下列图所示。图4.5 四个LED不光模块电路图4.3液晶显示模块LCD1602D的软件设计图4.6 LCD1602与STC89C52单片机具体的连接方式LCD1602液晶显示模块采用字符串的方式进展输出显示其流程图下列图所示。图4.7 LCD1602显示模块流程图图4.8 软件主程序流程4.4 颜色识别器的实验测试利用C语言编译程序,待软件编译通过后下载入单片机,依据设计方案进展调节测试并记录下实验数据。具体操作如下:首先将颜色采集模块用个光效果的纸盒遮盖起来,铺上待测彩色纸板是传感器一段面对彩色纸板。接通开发板电源,将待测彩色纸板平铺于桌面上,再把颜色采集模块平放在待测的纸板上方月一厘米出,然后记录下LCD显示出的数数值,对不同颜色的待测纸板重复上述步骤即可。4.4.1 实验测试进展测试时要注意以下两个问题:1) 颜色识别时要确保纸盒的密闭隔光性,防止外界光线对颜色传感器的干扰,使外界光对实验结果的影响经可能减到最小。2) 白平衡调整:首次使用TCS230时,需要进展白平衡调整。因为标准的白光其R、G、B三原色分量均为255,而我们的四个白色LED补光电路所发出的白光并不是标准的白光。所以,我们要进展白平衡调整,以减小识别系统的误差。白平衡之后,把颜色传感器对着不同的彩色纸板进展颜色检测查看其RGB的值。由得出的数值,可根据RGB颜色表来检验测试结果与实际结果的差异。下表为常用RGB颜色值对应表表。表4.2 常用RGB颜色表颜色RGB值黑色000#000000红色25500#FF0000蓝色00255#0000FF绿色02550#00FF00紫色16032240#A020F0橙色255970#FF6100黄色2552550#FFFF00棕色1284242#802A2A4.4.2 实验数据及分析在实验过程中进展了屡次的测量试验,记录的一些数据如下表4.3表4.3实验数据仿真表结果颜色RGB测得颜色白色第一次245246251第二次248254255第三次247251255红色第一次1676368第二次1766771第三次1746570绿色第一次149202109第二次138187101第三次148204110蓝色第一次6487137第二次7196152第三次6992145黄色第一次25521183第二次25521788第三次25320387紫色第一次143104170第二次12992151第三次13297160第一次241919第二次252020第三次262121从上述实验数据和仿真结果的比照可以看出,假设被测纸板颜色接近于红色,那么输出显示的R值比拟大;同样,假设被测纸板颜色更接近于绿色或者蓝色时,输出显示的G或B值相对较大。在表格的最后一列,利用软件仿真将所测RGB值合成为相应的颜色,比照第一列的标准颜色可以明显看到两种颜色之间的差异,证明所得到的测量结果还存在着一定的误差。去除人为误差和传感器本身的误差,外界光的干扰是误差的最大来源之一。此外,补光电路中LED发出的光会受电源电压的影响使其发出的光不太稳定,这些都将对被测光RGB值得测取产生影响。另外由仿真结果可以看出本设计的准确度略低,还有很大的提升空间,希望后继研究者可以不断的改善系统性能,提高系统的准确度降低系统误差。5 结论与展望5.1 结论本文主要研究了颜色识别系统的原理及其功能的实现。本设计的主要工作可归结如下:(1)了解一定深度的颜色相关的知识和颜色传感器识别颜色的原理。 (2)介绍颜色传感器、单片机、补光灯电路和液晶显示模块。 (3) 对颜色识别系统进展总体性设计。 (4)做出实物进展测试,并分析实验数据。总颜色识别的核心难点在于如何设计出先进RGB三种颜色测量的算法,只有优秀的算才能基于这种算法设计出先进的颜色识别系统。由于作者水平有限,难以建立准确的测量算法,因此设计出的系统存在着较大的误差。5.2 展望色彩识别技术作为一种新兴的检测技术是未来实现工业自动化、智能化的重要手段。基于本文所完成的工作,对下一步研究做如下展望: (1)完善色彩识别的算法。本文测得的RGB在准确度上不够准确,后续研究应因建立更加合理更加准确的颜色识别算法。 (2)对所测颜色进展更多的色彩区分。在后续研究中要对颜色空间进展更为细微的颜色空间划分,使色彩识别更加准确。从色彩识别系统设计到实际的颜色识别器,这其中需要考虑识别系统的稳定性和抗干扰能力,也应注意系统的供电等问题。因而还有大量的研究容,需要我们去了解去研究。我相信在不久的将来,色彩识别系统将被广泛应用到各个行业之中,成为工业自动化的一门重要技术。致四年大学的时光如白驹过隙,转眼间我们即将走出美丽的校园,走向竞争剧烈的社会,回首既往,在这难忘的四年的时间里,经过自己的努力学习和教师的谆谆教导,我的思想和能力都有了很大的提高,在此向辛勤培育我四年的学校和教师标志真挚的感,是他们的教导为我以后顺利踏入社会奠定根底。毕业设计对我来说算是一件富有挑战的一件事。由于之前专业课的学习不是太透彻,切平时没有花更多的时间去实验室锻炼自己的动手能力,在做毕业设计期间暴露了自己理论与动手能力上的缺乏。在此,我要特别感我的毕业论文指导教师志武教师和我的同学孟贺,在他们的帮助下我完成了动手能力较强,帮组我解决了程序的调试。这样让我明白以后的时光我们一定要把理论的知识学扎实,并在掌握理论的根底上努力锻炼自己的动手能力,结合两者才能使我们更好的掌握学习的知识。另外,感我的同学以及学长学姐们对我的支持、鼓励与帮助,正是因为他们的帮助,使我客服在毕设中所遇到的难题,顺利的完成设定的目标。参考文献1卢川英, 于浩成, 敬辉, 孟中. 基于 TCS230传感器的颜色检测系统J.大学学报.2008.11.2 杰,元媛. 基于 TCS230芯片颜色测量系统的研究J. XX电力.2010.3爱勤,绪坤.基于TCS230与LabVIEW的颜色测量系统D.航空大学.2007.11.4 松灿,肖本贤.高分辨率颜色传感器TCS230的原理和应用D.单片机与嵌入式系统.2005.5 胡建民. 颜色传感器TCS230及颜色识别电路 EB/OL.6毅刚,喜元,宇.单片机原理及应用M.高等教育.2012.117王安敏,尚绪超,龙.基于颜色传感器TCS230的油水界面检测仪的设计D.科技大学.2010.9.8丁茹,刚. 可编程彩色光/频转换器TCS230及其应用D. XX工程师学院.2005.9双喜,丁筱玲. 基于TCS230的便携式数字化调色仪的系统设计J.电子元器件应用.2007.10可荣硕,马晓军,思博. 基于RGB色彩空间的颜色识别系统设计J. 微计算机信息.2010.11胡建民. 颜色传感器TCS230及颜色识别电路J.单片机与嵌入式系统应用.2006.12增辉. 颜色传感器技术研究进展J. 传感器技术.2003.13庞小兵,黄,邹富顺.在线式光纤传感颜色识别系统的设计D.自动化仪表.2010.9.14喜凤, 黄娉,贵华. 三基色亮度计的设计和应用J. 微计算机信息.2009.15石磊,国强.Altium Designer 8.0中文版电路设计M.清华大学.2011.16颉晓明.高分辨率颜色传感器原理及应用J.电力高等专科学校校报.200917瑞挺.察颜观色的利器-颜色识别系统J.电子制作.201118Jack Berlien ,Ray King . 色彩传感器的选择-三种本钱-效益型方案各有千秋 J.今日电子.200319王晴,志勇. 基于颜色传感器TCS230的新型经皮测疸仪的设计J.传感器与微系统.200820丽军,天涯,波. 基于OPB780颜色传感器的颜色测量系统的设计J.装备制造技术.201021于志赣,国平,旭斌.液显LCD1602模块的应用J.机电技术.200922卢斌.基于单片机的光电双向计数器J.制造业自动化.201223颜色传感器TCS230 EB/OL附录一程序代码/*模块的使用方法:把板距离白纸2CM处开机,使输出的数据位FFFFFFF白平衡,接下来就可以正常使用实现功能:对颜色传感器输出RGB使用芯片:AT89S52 或者 STC89C52 或AT89S51 STC89C51晶振:12MHZ编译环境:Keil#include #define uchar unsigned char#define uint unsigned int/=LCD1602接口连接方法=/*- |DB0-P0.0 | DB4-P0.4 | RW-P2.3 | |DB1-P0.1 | DB5-P0.5 | RS-P2.4 | |DB2-P0.2 | DB6-P0.6 | E-P2.2 | |DB3-P0.3 | DB7-P0.7 | -*/=*/ #define LCM_Data P0 /LCD1602数据接口#define Busy 0x80 /用于检测LCM状态字中的Busy标识sbit LCM_RW = P23; /读写控制输入端,LCD1602的第五脚sbit LCM_RS = P24; /存放器选择输入端,LCD1602的第四脚sbit LCM_E = P22; /使能信号输入端,LCD1602的第6脚/=颜色传感模块连接=/*- |EO-GND |S0-VCC | S2-P2.0 | OUT-P3.5 |S1-VCC | S3-P2.1 | -*/sbit tcs230_s2=P20;/TCS230 S2接单片机P2.0sbit tcs230_s3=P21;/TCS230 S3接单片机P2.1sbit tcs230_en=P30; /TCS230 EN(E0)接GND/*函数声明*void WriteDataLCM(uchar WDLCM);/LCD模块写数据void WritemandLCM(uchar WCLCM,BuysC); /LCD模块写指令uchar ReadStatusLCM(void);/读LCD模块的忙标void DisplayOneChar(uchar X,uchar Y,uchar ASCII);/在第X+1行的第Y+1位置显示一个字符void LCMInit(void);/LCD初始void DelayMs(uint Ms);/1MS基准延时程序void baipingheng();/白平衡子程序void celiang();/实际颜色程序uint ryz,gyz,byz;/分别定义红色因子绿色因子蓝色因子uint rb,gb,bb;/RGB值uchar tab1=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;/*主程序*main() TMOD=0x51;/设定T0以工作方式1定时10毫秒 LCMInit();/LCD初始 baipingheng();/上电时先白平衡一次 while(1) celiang();/颜色测试 DisplayOneChar(0, 0,R);/以十进制显示RGB中红色的分值 DisplayOneChar(0, 1, rb/100+0x30); /显示百位数据 DisplayOneChar(0, 2, rb/10%10+0x30);/显示十位数据 DisplayOneChar(0, 3, rb%10+0x30);/显示个位数据 DisplayOneChar(0, 5,G);/以十进制显示RGB中绿色的分值 DisplayOneChar(0, 6, gb/100+0x30); /显示百位数据 DisplayOneChar(0, 7, gb/10%10+0x30); DisplayOneChar(0, 8, gb%10+0x30); DisplayOneChar(0, 10,B);/以十进制显示RGB中蓝色的分值 DisplayOneChar(0, 11, bb/100+0x30); DisplayOneChar(0, 12, bb/10%10+0x30); DisplayOneChar(0, 13, bb%10+0x30); /*在LCD1602的第二行以16进制显示RGB* DisplayOneChar(1, 1, tab1rb/16); DisplayOneChar(1, 2, tab1rb%16); DisplayOneChar(1, 3, H); DisplayOneChar(1, 6, tab1gb/16); DisplayOneChar(1, 7, tab1rb%16); DisplayOneChar(1, 8, H); DisplayOneChar(1, 11,tab1bb/16); DisplayOneChar(1, 12,tab1bb%16); DisplayOneChar(1, 13,H); DelayMs(250);/每隔0.25秒测试一次颜色 /*/白平衡子程序void celiang() /*求R值* TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;/选择红色滤光器 tcs230_en=0; TR0=1;/10毫秒开场计时 TR1=1;/开场计数 while(TF0=0);/等待定时器溢出 TF0=0;/清楚定时器0溢出标志 TR0=0;/关闭定时0 TR1=0; rb=(unsigned long)(TH1*256+TL1)*255/ryz; if(rb255)rb=255;/判断RGB值是否合法 /*求B值* TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=1;/选择蓝色滤光器 TR0=1;/10毫秒开场计时 TR1=1;/开场计数 while(TF0=0);/等待定时器溢出 TF0=0;/清楚定时器0溢出标志 TR0=0;/关闭定时0 TR1=0; bb=(unsigned long)(TH1*256+TL1)*255/byz; if(bb255)bb=255;/判断RGB值是否合法 /*求G值* TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=1; tcs230_s3=1;/选择绿色滤光器 TR0=1;/10毫秒开场计时 TR1=1;/开场计数 while(TF0=0);/等待定时器溢出 TF0=0;/清楚定时器0溢出标志 TR0=0;/关闭定时0 TR1=0; tcs230_en=1; gb=(unsigned long)(TH1*256+TL1)*255/gyz; if(gb255)gb=255;/判断RGB值是否合法/*/白平衡子程序void baipingheng() /*求取红色因子* TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=0;/选择红色滤光器 tcs230_en=0; TR0=1;/10毫秒开场计时 TR1=1;/开场计数 while(TF0=0);/等待定时器溢出 TF0=0;/清楚定时器0溢出标志 TR0=0;/关闭定时0 TR1=0; ryz=TH1*256+TL1;/其实这里的比例因子应该为255/(TH1*256+TL1) /*求取蓝色因子* TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=0; TL1=0; tcs230_s2=0; tcs230_s3=1;/选择蓝色滤光器 TR0=1;/10毫秒开场计时 TR1=1;/开场计数 while(TF0=0);/等待定时器溢出 TF0=0;/清楚定时器0溢出标志 TR0=0;/关闭定时0 TR
展开阅读全文