1、长春理工大学光电信息学院本科毕业设计摘要随着现代工业生产向着高速化、自动化方向的发展,需要精确测色的领域越来越广泛,要求也越来越高。很多文献给出的都只能得出待测物体颜色的RGB值,而如果能够有效地得出待测物体颜色的具体颜色信息,直接将该颜色的英文显示在液晶显示屏上,相对来说更加直观适用。针对这一问题,论文工作通过全面调研颜色识别原理及方法,最终确定采用RGB230 色敏探测器与STC89C52单片机相结合,设计出高精度,有较高的稳定性、抗干扰性且价格低廉的颜色探测系统平台。按照设计的程序对信息进行处理和判断,最后将探测的颜色结果显示在液晶显示屏上。最终能够准确识别红、绿、蓝三种颜色。关键词:R
2、GB230 颜色识别系统设计 色度学 STC89C521AbstractWith the development of modern industrial production towards high speed and automation, the fields that need accurate color measurement is more and more widely,also more and more demanding. Many given literature can only come to RGB values of the object color unde
3、r test, while, if you can come to effectively measure the specific color of object color information, directly to the color of the display on the LCD screen in English, relatively more intuitive.To solve this problem, the paper work through comprehensive investigation color identification principles
4、 and methods, finally determined used RGB230 color sensitive detector combined with a STC89C52 MCU to design the high accuracy, have higher stability, anti-interference and low price color detection system platform. Based on the success in the simulation, we under laboratory conditions, in accordanc
5、e with the design scheme of color measurement system to build and debug, eventually be able to accurately identify red, green, blue colors.Key Words:RGB230;color detection system;colorimetry; STC89C522目录摘要IIAbstractIII第1章 绪论11.1 研究的目的及意义11.2 国内外研究现状11.3 课题研究内容1第2章 颜色测量的主要理论基础32.1 颜色匹配32.2 色度学42.3 CI
6、E标准色度学系统4第3章 系统硬件电路设计73.1白光LED补光电路73.2 RGB230色敏探测器83.3 I/V变换电路93.4电压放大电路103.5 A/D转换电路113.6信息处理123.7 LCD液晶显示16第4章 系统软件设计184.1 程序流程设计184.2 算法设计184.3 颜色检测子程序194.4 颜色匹配子程序194.5 液晶显示子程序19第5章 实验测试与分析205.1 系统软硬件测试205.2 实验结果分析215.3 影响测量结果因素22第6章 结论24参考文献25致 谢263第1章 绪论在当今的社会生产生活中,颜色检测的应用越来越广泛,不论是图像处理、材料分拣识别、
7、产品质检、工业自动化,还是其他探测系统都需要对颜色进行探测。然而颜色传感器的飞速发展使得生产过程中长期由人眼主导的颜色识别工作越来越多的被颜色传感器所替代,为生产的自动化实现提供了可能。1.1 研究的目的及意义在颜色科学发展的初期,目视法是主要的测色手段,但是由于受到照明条件、背景亮度、及测色人员视觉和心理上的差异等因素的影响,其结果会出现很大的误差。由于这种方法存在很大的不足,限制人类的发展,越来越多的人开始意识到颜色测量的重要性。随着科技的发展,我们的生产生活发生了翻天覆地的变化,数字化、高速化、自动化的产品倍受青睐,在生产过程中长期以来由人眼起主导作用的颜色识别工作,越来越多地被相应的颜
8、色传感器所替代,人们也渐渐得到了解放。这无疑节省了大量的物力人力,方便了人们的生活。由于科技发展的趋势和人们的生活需求,研究颜色探测器是非常有必要的,而且意义也十分重大,其研究出来的产品市场广大,将有利于自动化行业以及相关行业的发展。1.2 国内外研究现状一些发达国家对颜色检测非常重视,有些产品已达到了适用水平。60年代IDL公司就已研制出样机,70年代末美国Macbeth公司生产的MS-4045在线分光光度计趋于适用阶段,80年代初日本Shibanra电气有限公司研制的在线颜色测量装置也获得了较好的结果。美国的Macbeth、SheLyn、Hennegan、BYK-Garder等,德国Elt
9、rotec、Zeiss、Optronic等主要欧美大型色控仪器公司已控制世界上的颜色检测仪器市场。由于我国颜色识别兴起的时间较晚,在仪器测色的理论和系统的研究领域一直处于相对落后的状态。有很多企业仍然采用原始的目视法,严重制约我国颜色工业的发展。虽然有些企业已采用国外先进的颜色测量仪器,但是由于价格、生产工艺不一致等因素使得国外的未能完全打开中国视场。颜色检测系统在实时检测及自动控制方面具有重要意义,单片机及微机的引入提高了颜色识别的速度及智能化程度。国内与国外尚存在较大差距,颜色识别的精度、灵敏度、颜色范围、快速性成为颜色识别的主要问题。深入研究传统颜色识别系统十分必要,同时对国外先进的颜色
10、识别仪器进行了解,可以在某种程度上给我们以启示。1.3 课题研究内容本次毕业设计的要求是基于RGB230色敏探测器设计一个颜色探测系统,它可以自动辨别探测物体的颜色。根据上述提出的要求,本论文阐述一种采用RGB230色敏探测器和STC89C52结合的探测系统,整个系统主要分为传感器获取信号、I/V变换、电压放大、滤波、A/D转换、单片机处理器和LCD显示七个模块。本论文首先是先对设计方案进行了详细的阐述,其次是详细解说各个程序的功能特点,然后是对已搭建好的电路系统进行测试和分析。第2章 颜色测量的主要理论基础2.1 颜色匹配颜色是不同波长的电磁辐射作用于人的视觉器官所产生的视觉感受。光源、观察
11、物体和观察者是颜色知觉形成的三个主要组成部分。波长在380nm-760nm范围之间的光可被我们人眼所察觉,称为可见光。物体颜色都是由物体对可见光的反射和透射性能决定的。物体由于本身的物理或化学特性,物体将会吸收某些波长的光而同时反射其他波长的光,其本身所显示出来的颜色决定于吸收了哪些波长的光和反射哪些波长的光。当反射光被观察者接收,观察者的大脑将成分一定的光波感受为特定的颜色。不同的光与物体相互作用产生不同的光波组成,于是就产生了各种各样的颜色。任何一个物体的颜色都可由红、绿、蓝三原色按一定的比例混合得到。颜色可分为非彩色和彩色两类。非彩色是指白色、黑色和各种深浅不同的灰色组成的系列,成为黑白
12、系列。彩色是指白黑系列之外的所有颜色。颜色有三个属性:色调,明度,饱和度。色调用来表示红、黄、绿、蓝、紫等颜色彼此相互区分的特性。明度表示人眼对物体的明暗感觉,物体的亮度越高,则明度越高;非发光物体的反射比越高,明度越高。饱和度是指彩色的纯洁度,用以评估彩色在整个视觉中的成分的视觉属性。颜色匹配实验是色度学中最基本的心理物理学实验。该实验证明了一条颜色匹配的基本定律,称为颜色匹配恒常律:两个相互匹配的颜色,尽管处在不同条件下,两个颜色仍然始终保持匹配,即不管颜色周围的环境如何变化,或者人眼已经对其他色光适应后再来观察,视场中两种颜色始终保持匹配。与待测色达到颜色匹配时所需要的三原色的数量称为三
13、刺激值。若以C代表被匹配颜色的单位,R,G,B代表产生混合色的红、绿、蓝三原色的单位。R、G、B、C分别代表红、绿、蓝和被匹配色的数量。当两半视场相互匹配时,此结果可用下列方程表示: (2.1)式中,符号“”代表视觉上相等,即颜色相互匹配;R、G、B为代数量,可为负值。一般情况,可以用三刺激值来定量描述颜色,但是如果都用颜色匹配实验来得到各种颜色的三刺激值显得不现实。因此我们可以根据颜色相加原理,混合色的三刺激值为各组成色三刺激值之和。将待测光的光谱分布函数,与波长加权光谱三刺激值,得出每一波长的三刺激值,然后在可见光波长内进行积分,就可得出该待测物体的三刺激值。其计算公式为: (2.2)2.
14、2 色度学在色度学中,我们不直接用三刺激值R、G、B来表示颜色,而用三原色各自占R+G+B总量的相对比值表示颜色。公式(2.1)两边各除以R+G+B,并考虑C=R+G+B,则可写成单位方程: (2.3)由方程可知,一个单位的颜色C的色度只取决于三原色的刺激值各自在R+G+B总量中的相对比例,此比值称作色度坐标,用符号r,g,b表示,且r+g+b=1。 (2.4)虽然色度坐标有三个量r,g,b,但由于r+g+b=1,故实质上只有两个独立量。以色度坐标表示的平面图称为色度图。因此只需给r和g两个坐标就可确定任意颜色在色度图上的位置。 2.3 CIE标准色度学系统 用三刺激值来定量描述颜色是一种可行
15、的方法。为了统一测得物体颜色的三刺激值数据,国际照明委员会(CIE)规定的颜色测量原理、基本数据和计算方法,称作CEI标准色度学系统。其中1931年在英国剑桥举行的CIE第八次会议上建立了CIE1931标准色度学系统,包括CIE1931-RGB和CIE1931-XYZ两个系统。该系统规定,任何一个物体的颜色都可由红、绿、蓝三颜色,即物体的颜色三刺激值R、G、B或X、Y、Z来表示。2.3.1 CIE1931-RGB色度系统国际照明委员会(CIE)综合了莱特(W.D.Wright)和吉尔德(J.Guild)两项颜色匹配实验,将两人所使用的红、绿、蓝三原色的波长规定为700nm、546.1nm、43
16、5.8nm,并取他们实验结果的平均值定出了匹配等能光谱色的三刺激值,从而制定了CIE1931-RGB色度系统。经实验和计算确定,当这三原色的亮度比率为1.0000:4.5907:0.0601时能够匹配出等能白光,因此选取这一比例作为红、绿、蓝三原色的单位量。2.3.2 CIE1931-XYZ标准色度系统为了解决CIE1931-RGB色度系统计算颜色的三刺激值时出现负值情况,CIE推荐了一个新的国际通用的色度系统,即CIE1931-XYZ标准色度系统。该系统是用三个假想的原色X、Y、Z来代替CIE1931-RGB色度系统的R、G、B,并且选择匹配等能白光,确定三刺激值的单位。在此系统中光谱三刺激
17、值全为正值,因此在选择三原色时必须使三原色所形成的颜色三角形能将整个光谱轨迹包含在内。CIE1931-XYZ色度系统中的光谱三刺激值X、Y、Z和色度坐标x、y、z都变为正值。通过数学推倒、坐标转换,两个系统中的三刺激值之间的相互关系为: (2.5)两个系统色度坐标的转换公式为: (2.6)2.3.3 CIE1964标准色度系统为了适应大视场情况下颜色测量的需要,CIE在1964年规定了一组CIE1964补充标准观察者光谱三刺激值和相应的色度图,这一系统称为CIE1964标准色度系统。此系统将视场范围扩大了,能比较全面表示颜色。研究表明,人眼用于小视场观察颜色时,辨别颜色差异的能力较低。当观察视
18、场从2增大至10时,颜色匹配的精度也随之提高。但视场再进一步增大,颜色匹配精度的提高就不大了。 2.4颜色测量方法目前,根据获得三刺激值方式的不同,一般进行颜色测量的方法一共有三种:目视法、分光光度法、光电积分法。RGB230色敏探测器的测量方法是光电积分法。它是模拟人眼的三刺激值特性,用光电积分效应,直接测得颜色的三刺激值。它不是测量某一波长的色刺激值,而是在整个测量波长范围内对被测颜色的光谱能量进行一次性积分得到样品颜色的三刺激值X、Y、Z,然后计算得出样品的色度坐标等其他色度参数。它使用的滤色片能够对光谱响应进行滤色修正,使得它与CIE标准观察者一致。同时也对光源进行滤色修正,使之符合标
19、准照明体的相对光谱功率分布。虽然它在测量原理和具体元器件精度存在不足,但是由于该测色方法是通过测量构成物体颜色的三基色实现颜色检测的,所以精密度极高,能准确区别机器相似的颜色,甚至相同颜色的不同色调。而且它测量速度快,实时性好,因此作为此次颜色探测系统设计的传感器。第3章 系统硬件电路设计由于RGB230色敏探测器输出的是nA量级的微弱电流信号,对于电流信号,首先要转换成电压信号,通过放大、模数转换后送入到处理器中进行进一步的数据处理。单片机对这些信息进行处理和判断,当处理后的信号与存储的参考值相符,并且在一定的误差范围内,单片机就将颜色信息显示在LCD显示屏上。为了获得处理器能够识别的信号,
20、整个系统主要分为白光LED补光、传感器获取信号、I/V变换、电压放大、A/D转换、单片机处理器和LCD显示七个模块,如图3.1所示。 图3.1系统硬件整体框图 3.1白光LED补光电路本设计中,为了消除外界光源不稳定的影响,RGB230色敏探测器颜色采集模块需要在暗室中进行,所以需要另外添加一个稳定的光源。采用高亮度白光LED作为光源,它是一种新型固体光源,具有极高稳定性、长使用寿命及较小的体积,且能够长时间稳定工作。为保护白光LED不被烧坏,需要串联一个电阻,起到限流的作用。本模块主要是用4个白光LED围绕在RGB230色敏探测器四周,其光照射在待检测的物体上,然后反射到RGB230色敏探测
21、器上,达到合适的光强的目的。其电路原理图如图3.2所示。图3.2 白光LED补光电路3.2 RGB230色敏探测器RGB230色敏探测器采用4个引脚的表面贴片式封装,其中3个分别输出R、G、B光电流,还有1个为阴极。它是三个Si-PIN光电二极管集成在一块芯片上上面,并分别覆盖各自经过修正的红、绿、蓝滤色片,通过获得的红、绿、蓝三刺激值来实现对所有颜色的检测。它是很小的三基色传感器,长为5.12mm,宽为3mm,如图3.3所示。 (a)实物图 (b)结构图 图3.3 RGB230色敏探测器图RGB230色敏探测器将光转换为R、G、B光电流,三个Si-PIN光电二极管用于直接接收光强,直接把光强
22、转换为光电流。该探测器采集颜色信号时,红、绿、蓝区三个引脚都会输出电流信号,电流输出稳定,不会随温度的改变而改变。当入射光照射到RGB230上时,透过带有颜色的滤色片形成红、绿、蓝三个颜色分量,三个P-N结都将产生相对应的光生载流子,形成光电流。其等效电路如图3.4所示。我们可通过处理输出的三路光电流得出具体颜色信息,从而确定出不同的颜色。图3.4 等效电路RGB230色敏探测器具备小尺寸设计和三种颜色同步记录的特点,且该颜色传感器对相似颜色和色调的监测可靠性较高。三个不同区域的颜色识别响应,类似于人眼。每个光电管对相应光谱滤波器的颜色的光最为敏感,主要是红色,绿色,蓝色。该传感器的测量模式是
23、分析红、绿、蓝光的比例,从而确定待测物体的颜色。因为检测距离不管怎样变化,只能引起光强的变化,而三种颜色光的比例不会改变,所以在目标有机械振动的场合也可检测。3.3 I/V变换电路根据探测物体颜色、照明光强度的不同,RGB230色敏探测器的输出信号一般在几十到几百纳安量级,这样小的微电流给测量带来了不便。首先,要将这样微弱的电流转换成电压信号,以便于后续A/D转换和单片机处理。比较可靠的I/V转换方法是通过电阻采样的方法将微弱电流信号转化为mV量级的电压信号。它具有良好的线性特性,外加工作电压低,暗电流小等优点。其基本原理图如图3.5所示。图3.5 I/V转换电路根据上图所示的电路图得到的输出
24、电压为 (3.1)式中,为输入电流,为采样电阻,为与被测电流成比例的输出电压。若运算放大器的增益很高,并且运算放大器的输入失调电压很小,当运算放大器的输入阻抗很大,比采样电阻要大2-3个数量级,于是I/V转换的输出为: (3.2)因此在设计电路时,寻找输入偏置电流小、失调电压低的运算放大器是重中之重。通过查阅相关运算放大器资料并进行比较,本设计选用了高精度、低噪声的高精密运放OP177。它是目前精度性能最高的运算放大器之一,失调电压在室温下的最大值仅为25 V。在更低的输入偏置电流条件下可提供更低的失调电压和漂移以及更高的带宽及压摆率。OP177的超低VOS结合出色的0.1 V/C失调电压漂移
25、最大值,无需进行外部VOS调节,从而可提高整个温度范围内的系统精度。由于微弱电流容易受到外界的干扰,需要在采样电阻上并联一个电容作为前置低通滤波器,滤除高频噪声,可以使得系统更稳定,去除运放负端输入接地的影响。3.4电压放大电路不同颜色产生的微弱电流信号传送到对应的线路通道上,需要把电流信号转换成0-5V的电压信号,以满足A/D转换的输入要求。而经过I/V变换后的电压信号大致能达到几十到几百mV,这个幅值的电压还太小,不能输入到数字系统,因此要对电压信号进行进一步放大。由于I/V变换后的电压输出为负,因此本设计采用反相的电压放大电路,放大倍数为10,使之能够满足要求。其基本原理图如图3.6所示
26、。图3.6 电压放大电路考虑到RGB230颜色探测器产生的信号十分微弱,很容易受到噪声影响,所以本设计选择OP07芯片。它是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25V),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。3.5 A/D转换电路经过放大滤波后的电压信号为模拟信号,要将此信号送入为处理器中进行进一步处理,需要将其转
27、换为数字信号,因此A/D转换是本系统的核心电路之一。由于单片机系统需要同步对三路信号进行处理,在保证可靠性和精度的前提下,为降低系统的成本,满足对输入数字信号倍数的要求,A/D转换器选用8位串行输出的ADC0809芯片。其引脚结构如图3.7所示。图3.7ADC0809芯片引脚ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。IN0
28、IN7为8条模拟量输入通道。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0为数
29、字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHz。VREF(+),VREF()考电压输入。ADC0809的数据输入输出公式为: (3.3)其中为模拟电压输入,为由输出的八位二进制数转换而成的十进制数。ADC0809采用串行数据接口与单片机通行,用单片机模拟ADC0809的通信时序,脉冲信号由单片机提供。放大滤波后的R、G、B电压信号分别通过ADC0809进行模数转换,得到八位二进制信号分别输入P0-P2口,其电路图如图3.8所示。图3.8A/D转换电路3.6信息处理在颜色检测系统中,单片机检测系统是整个系统的核心。它
30、不但控制着整个系统工作的时序,而且还要对采集传输到其内部的数字信号进行即时处理,同时还要将检测的结果显示出来。综合经济性和系统设计的要求,选择了STC89C52单片机。STC89C52单片机大多采用双列直插DIP封装,共40个引脚,40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。89C51单片机的主要引脚功能介绍如下,引脚图如图3.9所示:图3.9STC89C52单片机引脚图(1)电源Vcc芯片电源,接+5V;Vss接地端。(2)时钟XTAL1、XTAL2晶体振荡电路反相输入端和输出端。使用内部振荡电路时外接石英晶体。(3)控制线RST:复位输入信号,高电平有效。在振荡器工作时,在RS
31、T上作用两个机器周期以上的高电平,将单片机复位。:片外程序存储器访问允许信号,低电平有效。=1,选择片内程序存储器;=0,则程序存储器全部在片外,而不管片内是否有程序存储器。ALE/PROG:地址锁存允许信号输出。ALE以1/6振荡频率的固定速率输出,可作为对外输出的时钟或用作外部定时脉冲。:片外程序存储器读选通信号,低电平有效。(4)I/O引脚STC89C52共有4个8位并行I/O端口,共32个引脚。其中,P3.0与P3.1分别为串行输入口和串行输出口。下面是单片机串行口方面的介绍。单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时进行数据的发送与接
32、收,也可作为同步移位寄存器使用。它主要由两个独立的串行数据缓冲器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器)和发送控制器、接收控制器、输入移位寄存器及若干控制们电路组成。单片机可通过特殊功能寄存器SBUF对串行接收或串行发送寄存器进行访问,两个寄存器共用一个地址99H。一共有4种串行口方式,详细介绍如下。(1)方式0。方式0时,串行口为同步移位寄存器的输入/输出方式,主要用于扩展并行输入或输出口。数据有RXD(P3.0)引脚输入或输出,同步移位脉冲有TXD(P3.1)引脚输入。发送和接受均为8位数据,低位在先,高位在后,波特率为。(2)方式1。方式1是10位数据的异步通信口,其中1位起始
33、位,8位数据位,1位停止位。TXD(P3.1)为数据发送引脚,RXD(P3.0)为数据接收引脚。其传输波特率是可变的,对于单片机,波特率由定时器1的溢出率决定。(3)方式2,3。方式2,3时为11位数据的异步通信口。TXD(P3.1)为数据发送引脚,RXD(P3.0)为数据接收引脚。这两种方式下,起始位1位,数据位9位,停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。方式2和方式3的差别仅在于波特率的选取方式不同,在这两种方式下,接收到的停止位与SBUF,RB8及RI都无关。3.6.1 单片机资源分配单片机的端口资源主要分
34、配给色敏探测器和LCD液晶显示,由于色敏探测器输出信号经过处理后输出的是八位串行信号,需要与是3个I/O口进行连接,LCD液晶显示也需要与2个I/O口连接。而STC89C52单片机只有4个I/O接口,因此需要用两片单片机进行双机通信。主机的P0-P2口分别与R、G、B三路信号连接,从机的P0、P2口与LCD1602连接,其电路原理图如图3.10所示。图3.10单片机连接原理图3.6.2 复位电路复位是单片机的初始化操作,复位后单片从头开始执行程序。常态时为低电平,复位时为高电平。这里采取手动按钮复位,在复位端RST端和正电源之间接一个按钮。当按下按钮时,高电平就会直接加到RST端。当程序运行出
35、错或者操作错误使系统处于死锁状态时,需按复位键来重新启动。其电路原理图如图3.11所示。图3.11复位电路原理图3.6.3时钟电路在单片机内带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器,在单片机内部有一个高增益反省放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。本设计采用的晶体振荡器的频率为12MHz,ALE引脚上的信号输出是时钟信号的6分频,为2MHz。其电路原理图如图3.12所示。图3.12时钟电路原理图3.6.4 分频电路由于ADC0809的内部没有时钟电路,所需时钟信号必须由
36、外界提供,通常使用频率为500KHZ。而ALE端输出的频率为2MHz,不满足要求,因此需要设计一个四分频电路。本设计采用74LS74芯片,这是一个双D触发器,可用作寄存器,移位寄存器,振荡器,单稳态,分频计数器。其电路原理图如图3.13所示。图3.13四分频电路原理图3.6.5 双机通信由于单片机资源无法满足要求,因此本设计采取双机通信。主机对输入的三路信号进行处理,并将结果传送给从机,从机显示颜色探测结果。本设计直接将主机的TXD端接从机的RXD端,主机的RXD端接从机的TXD端。两个单片机系统必须要共地,即把它们的系统电源地线连接在一起,这样两者才能统一地被系统识别,还有一点需要注意的是,
37、两单片机通信时应使用相同的串口方式,必须保证两单片机系统的通信波特率完全一致,否则必定收不到正确的数据。通常在做单片机与单片机串口通信时采用的是串口方式1。这里,两单片机都使用串口方式1,串口波特率为9600bps。3.7 LCD液晶显示LCD1602是216字符型液晶显示模块,可以显示两行,每行16个字符,不能显示汉字,为5V电压驱动,带背光,并且只有并行接口,无串行接口。其引脚图如图3.14所示。图3.14LCD1602显示屏引脚图第1脚:为电源地。第2脚:为+5V电源。第3脚:为液晶显示器对比度调整端,接地时对比度最高,接正电源时对比度最弱。使用时用一个10K的电位器来调整对比度。第4脚
38、:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器接主单片机的P2.0口。第5脚:RW为读写选择端,高电平时进行读操作,低电平时进行写操作。由于我们只写数据进显示屏,因此接地。第6脚:E为使能端,当E为高电平时读取液晶模块的信息,当E为高电平跳变成低电平时,液晶模块执行写操作。第7-14脚:D0-D7为8位双向数据线,接从单片机的P0端。第15脚:BLA为背光源正极。第16脚:BLK为背光源负极。由于单片机P0口内部没有上拉电阻,因此我们须在外部加一个排阻。其电路原理图如图3.15所示。图3.15LCD液晶显示原理图第4章 系统软件设计RGB230色敏探测器检测三原色信号R、G
39、、B,同时检测光强信号。颜色检测中可根据三原色与光强之比准确判断颜色。这样考虑了光强的因素,就可以消除被测物体与传感器距离变化和外界光强大小变化带来的测量误差,能够提高检测的准确度。为了提高软件功能,增强可移植量,减小程序量,在软件设计时,采用了多子程序的办法,将功能相同又使用较多的程序设计成可任意调用的子程序。 4.1 程序流程设计单片机系统软件需要完成数据采集,数据对比及颜色结果显示。其程序流程图如图4.1所示。图4.1 程序流程图颜色探测系统软件主程序主要包括颜色检测子程序,颜色匹配字程序和LCD液晶显示子程序。其中,颜色检测子程序用于获取所测颜色的R、G、B三原色分量,颜色匹配子程序用
40、于将所测得的三原色值与颜色库中的已知颜色值进行匹配,LCD液晶显示子程序用于显示颜色检测结果。4.2 算法设计由于此次设计只检测少量的颜色,因此采用查表的方法来检测颜色。本设计在主单片机和从单片机中分别建立一个二维数组颜色数据库,其中主单片机预先存储红、绿、蓝三个颜色的R、G、B参考值,从单片机存储红、绿、蓝三个颜色的英文字符串,两个单片机每行所对应的颜色相同。单片机从色敏探测器读取RGB数据,并与预先存储的颜色数据库进行比较,得到最接近的颜色。其表达式如下: (4.1)其中,Ured=;Ugreen=;Ublue=;red=;green=;blue=;,为未知颜色传感器值;,为参考颜色传感器
41、值。RGB数据与三路电压存在以下关系: (4.2)所有颜色存储在单片机颜色库中的数据都是3字节,R、G、B参考值均为1字节。在单片机每个比较周期内,由RGB230色敏探测器采集到的数据与颜色库的各个颜色代入式(4.1)进行匹配运算,距离最近的颜色即被判定为此时色敏探测器所探测的颜色。 4.3 颜色检测子程序颜色检测子程序用于获取所测颜色的三原色值,首先按照ADC0809芯片规定的时序来进行模数转换。在得到三路模数转换结果后,获得所测颜色的三基色红、蓝、绿颜色值依次为x,y,z。单片机直接获取相关数据,并通过计算得出测量结果输出。4.4 颜色匹配子程序将颜色检测子程序中获得的所测颜色的三原色值与
42、颜色库中的颜色值相匹配,具体方法为: 将测得的三原色的比例与颜色库中每种颜色的三原色的比例相减并将结果取绝对值,差值绝对值最小对应的颜色库中的颜色被判定为测得的颜色,即匹配成功。主单片机将匹配成功颜色所在的行数由发送子程序void send(intk_num)通过特殊功能移位寄存器SBUF传送给从单片机。 4.5 液晶显示子程序液晶显示子程序实现的功能是将颜色库匹配成功的颜色显示在LCD1608液晶显示屏上。首先通过初始化函数void init()对液晶显示屏进行初始化,从单片机接收主单片机传送过来的数据,并显示对应的颜色,通过写命令函数void write_com(uchar com)与写数
43、据函数void write_data(uchar Data)将结果显示在LCD1608液晶显示屏上,如探测物体的颜色为绿色,则液晶显示屏上显示“Green”。第5章 实验测试与分析前几章对硬件设计和软件系统进行了详细的设计和讨论,本章将对硬件、软件进行调试,对测量结果进行分析,并提出优化方案。5.1 系统软硬件测试将设计好的电路搭在面包板上,其实物效果图如图5.1所示。将传感器、白光LED补光、I/V变换、电压放大、A/D转换、单片机处理和LCD显示这七个模块进行级联调试,保证每一个模块都能正常工作。图5.1实物效果图要保证整个系统能够正常工作,首先要先对标准色卡纸进行颜色采集,将对应颜色的R
44、、G、B值存入单片机标准颜色库当中。这需要准备三组8路LED灯并联,每个LED灯串联上一个电阻并共地,并将三路数字信号分别接入三组LED灯中。由于颜色传感器要避免外界光线的干扰,整个系统需置于暗室中进行实验,将标准的红、绿、蓝色卡纸放在RGB230色敏探测器上方,接通电源,观察并记录LED灯的亮暗情况,将它存入颜色库当中。颜色入库各颜色数据如表5.1所示。表5.1为颜色入库各颜色RGB值颜色RGB红色0xBB0x370x1E绿色0x190x330x17蓝色0x2B0x530x6E本设计的测色过程很简单,具体操作如下:首先将整个电路放置于暗室当中,接通电源,将彩色纸板放在RGB230色敏探测器上
45、方,观察LCD1602的显示即可。5.2 实验结果分析按照测试要求分别对红、绿、蓝3种卡纸进行颜色识别,经过多次测试,系统可准确辨别3种卡纸的颜色,系统达到了对不同颜色快速、有效识别的功能。除此之外,若对偏向某种颜色的卡纸进行检测,LCD液晶显示屏也会显示对应标准颜色的英文。红、绿、蓝三种颜色卡纸检测结果分别如图5.2,图5.3,图5.4所示。图5.2 红色卡纸检测结果图5.3 绿色卡纸检测结果图5.3 蓝色卡纸检测结果5.3 影响测量结果因素 确定物体的颜色需要知道三原色刺激值,影响颜色检测准确度的参数主要有照射光、物体反射、光源方位、观测方位和传感器特性等,任何一个参数发生变化都会导致颜色
46、检测结果发生变化。(1)光源的影响照射光包含有太阳光和外界杂散光,太阳照射角度、云层厚度和其它天气条件都会导致照射光发生变化,从而导致被测物体颜色发生变化。为弥补光源变化带来的测量误差,Judd等人在1964年提出了照射光修正模型,但尽管如此,照射光引起物体颜色检测的误差仍不容忽视。(2)光源方位和观测方位的影响光源方位,也就是被测物体指向光源的法线方向,它决定了有多少太阳光或外界杂散光作为入射光。观测方位是指被测物体指向传感器的法线方向,它决定了反射到传感器中的光强。(3)被测物表面反射状况的影响传感器探头与被测物之间的距离影响着输出信号,可能会造成不同颜色信号的交叉,形成测量误差,所以存在某一最佳距离对输出特性影响最小,以保证颜色与输出信号的一一对应关系。被测物表面的较明显凹凸区域也会给输出信号带来较大的误差。为此,Phong,Shafer和Nayar等人先后提出了反射模型以弥补测量误差。第6章 结论本系统使用的RGB230色敏探测器与STC89C52单片机结合