收藏 分享(赏)

颜色识别系统设计说明书.doc

上传人:精品资料 文档编号:10320133 上传时间:2019-10-29 格式:DOC 页数:24 大小:870KB
下载 相关 举报
颜色识别系统设计说明书.doc_第1页
第1页 / 共24页
颜色识别系统设计说明书.doc_第2页
第2页 / 共24页
颜色识别系统设计说明书.doc_第3页
第3页 / 共24页
颜色识别系统设计说明书.doc_第4页
第4页 / 共24页
颜色识别系统设计说明书.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、1目 录1 选题背景 11.1 概述 11.2 课设要求 12 方案设计 13 实验论述 23.1AT89S52 单片机简介 23.1.1 AT89S52 的主要性能和参数 23.1.2 AT89S52 的主要功能 33.2 传感器 TCS320043.2.1TCS3200 芯片的结构框图与特点: .43.2.2 TCS3200 识别原理 63.3 传感器与单片机连接 83.4 LCD1602 模块 .93.4.1 液晶显示器简介 93.4.2 指令格式与指令功能 .103.4.3 LCD 显示器的初始化 .103.4.4 硬件电路连接 .103.4.5 LCD1602 液晶显示模块软件设计

2、113.5 系统结构图 124 颜色识别系统测试 .134.1 色彩识别的测试过程 .134.2 颜色检测中的误差 144.3 测试结 果分析 .155 课设总结 .16参 考 文 献 .1721选题背景1.1 概述随着现代工业生产向高速化、自动化方向的发展,颜色识别广泛应用于各种工业检测和自动控制领域,而生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、篮滤光片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个 A/D 电路进行采样,对该信号

3、进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。而 TCS3200 颜色传感器是美国 TAOS 公司生产的一种可编程并且能实现彩色光到频率转换的转换器,比市面上见到的光转电压颜色检测仪器在性能上有更多的优势。TCS3200 它对光的动态响应范围大,标准输出频率范围为2Hz500kHz,TCS3200 有两个可编程的引脚,使用者可以对 100%、20%、2%或者是动力关闭模块的输出量程进行选择使用。TCS3200 在不需要 DCs 系统的情况下,给每个彩色通道至少能提供 10 字节的分辨。TCS3200 可以用于彩色打印机、医疗诊断、LED 检测、液体颜色

4、识别、电脑彩色监控标准、颜色产品加工控制、和油漆、纺织品、化装品及打印材料的彩色搭配等颜色检测产品。1.2 课设要求此次课程设计是以色彩识别系统设计为目的,采用 AT89S51 单片机为核心,利用TCS3200 颜色传感器和 LCD1602 建立起来的。文中给出整个系统的设计思路,包括,根据对三原色的感应原理和 TCS3200 颜色传感器识别颜色的原理的分析,设计出一个合适的可行的实验环境。其次,利用 TCS3200 颜色传感器,在合适的环境下,对被测物体进行检测,将测得的数据进行 A/D 转换,转化成数字量。最后,将转化后的数字量送到AT89S51 单片机进行处理,得到被测物体所包含的 RG

5、B 三原色的颜色值,之后利用LCD1602 显示出来。2方案设计本次设计的要求包括硬件电路设计和软件编程的设计。由颜色识别与检测原理可知,设计硬件电路可包括单片机控制电路、TCS32000 颜色采集、LCD 显示三个部分,进而实现颜色的检测识别模式及 RGB 值。软件编程设计方面,通过 C 语言设定不同的 I/O 口驱动显示,在基本 R、G 、B 三基色的基础上设定不同的频率范围来鉴别不同的颜色,可采用定时器 0 的工作方式 1 和计3数器 0 的计数方式 1 进行定时计数特定时间内的脉冲数目来实现。通过单片机动态扫描显示 RGB 的值和检测颜色的模式。这样就可完成了颜色检测系统的设计。3实验

6、论述3.1AT89S52 单片机简介本系统采用 ATMEL 公司生产的 AT89S52 单片机作为微处理器。AT89S52 与 MCS-51 系列单片机完全兼容,它采用静态时钟方式,可以大大节省耗电量。AT89S52 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器(RAM),功能强大的 AT89S52 单片机已经应用于较复杂的系统控制场合。AT89S52 有 40 个引脚,32 个外部双向输入/ 输出(I/O)端口,同时内含 2 个外中断口,3 个 16 位可编程定时计数器,2 个全

7、双工串行通信口,2 个读写口线,AT89S52 可按照常规方法进行编程,亦可在线编程。其将通用之微处理器及 Flash 存储器结合,特别是可反复擦写的 FLASH 存储器可有效降低开发成本。AT89C52 及AT89S52 之别,在于 C 及 S, C 表示需用并行编程器下载(接线多且复杂) ,S 表示可支持 ISP 下载,可在 89S52 系统板上面预留 ISP 下载接口,AT89S52 引脚如图 3.1 所示,实物图如图 3.2。图 3.1 S52 单片机管脚图 图 3.2 S52 单片机实物图3.1.1 AT89S52的主要性能和参数(1)与 MCS-51 单片机完全兼容的指令和引脚排列

8、以及工作特性。(2)片内程序存储器内含 8K 可重复擦写的 Flash 程序存储器。(3)片内数据存储器内含 256 字节的 RAM。4(4)3 个可编程的 16 位计数器(定时器)和 32 个可编程 I/O 口线。(5)串行口是具有一个全双工的可编程的串行通信口。(6)中断系统是具有 8 个中断源、6 个中断矢量、2 个优先权的中断机构。 (7)低功耗模式有空闲模式和掉电模式。 (8)编程频率是 3-24MH,编程启动电流是 1mA。 (9)AT89S52 的工作电压为 5V。3.1.2 AT89S52的主要功能P0 口8 位漏极开路之双向 I/O 口。作为输出口,每位能驱动 8 个 TTL

9、 逻辑电平。对 P0 端口写 “1”时,引脚用作高阻抗输入。访问外部程序和数据存储器时,P0 口亦被作为低 8 位地址/数据复用。在这种模式下,P0 不具有内部上拉电阻。在 FLASH 编程时,P0 口亦用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需外部上拉电阻。P1 口有内部上拉电阻的 8 位双向 I/O 口,P1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可作输入口用。作输入用时

10、,被外部拉低的引脚因内部电阻,将输出电流(IIL) 。此外,P1.0 及 P1.2 分别作定时器/ 计数器 2 之外部计数输入(P1.0/T2 )及时器/计数器 2 之触发输入(P1.1/T2EX ) ,详见表 3.1 所示。在 flash编程及校验时,P1 口接收低 8 位地址字节。 表 3.1 P1 口的第二功能引脚号 第二功能P1.0 T2(定时器/计数器 T2 的外部计数输入) ,时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口有内部上拉电阻的

11、8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写“1” 时,内部上拉电阻把端口拉高,此时可作输入口。作输入用时,被外部拉低的引脚因内部电阻,将输出电流(IIL) 。 在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口用很强的内部上拉发送 1。在用 8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器之内容。在 FLASH 编程及校验时,P2 口亦接收高 8 位地5址字节及一些控制信号。 P3 口有内部上拉电阻的 8 位双向 I/O 口,

12、p3 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P3 端口写 “1”时,内部上拉电阻把端口拉高,此时可用作输入口。作输入用时,被外部拉低的引脚因内部电阻之原因,将输出电流(IIL) 。P3 口亦作为 AT89S52 特殊功能(第二功能)用,如表 3.2 所示。在 FLASH 编程及校验时,P3 口亦接收些控制信号。此外,P3 口亦接收些用于 FLASH 闪存编程及程序校验的控制信号。表 3.2 P3 口的第二功能引脚 第二功能 引脚 第二功能P3.0 RXD(串行输入口) P3.4 TO(定时/计数器 0)P3.1 TXD(串行输出口) P3.5 T1(定时/计数器 1)P3.2 INT

13、O(外中断 0) P3.6 WR(外部数据存储器写选通)P3.3 INT1(外中断 1) P3.7 RD(外部数据存储器读选通)RST复位输入。振荡器工作时,RST 引脚有两个机器周期以上高电平将是单片机复位。 ALE/PROG访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般,ALE 仍以时钟振荡频率的 1/6 输出固定之脉冲信号,故它可对外输出时钟或用于定时目的。需注意:每当访问外部数据存储器时将跳过一个ALE 脉冲。对 FLASH 存储器编程期间,该引脚亦用于输入编程脉冲(PROG) 。若必要,可通过对特殊功能寄存器(SFR)区中的 8E

14、H 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 及 MOVC 指令方能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。PSEN程序储存允许(PSEN )输出是外部程序存储器之读选通信号,AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP外部访问允许,要 CPU 仅访问外部程序存储器(地址为 0000H-FFFFH) ,EA 端须保持低电平(接地) 。需注意:若加密位 LB1 被编程,复位时内部会

15、锁存 EA 端状态。若 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器之指令。 FLASH 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这须是该器件是使用 12V 编程电压 Vpp。XTAL1振荡器反相放大器及内部时钟发生电路之输入端。XTAL2振荡器反相放大器之输出端。63.2 传感器 TCS32003.2.1TCS3200芯片的结构框图与特点:TCS3200 是 TAOS 公司推出的可编程彩色光到频率的转换器。它把可配置的硅光电二极管与电流频率转换器集成在一个单一的 CMOS 电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字

16、兼容接口的 RGB 彩色传感器。TCS3200 的输出信号是数字量,可以驱动标准的 TTL 或 CMOS 逻辑输入,因此可直接与微处理器或其他逻辑电路相连接。由于输出的是数字量,并且能够实现每个彩色信道 10 位以上的转换精度,因而不再需要 A/D 转换电路,使电路变得更简单。图 1 是 TCS230 的引脚和功能框图。图 3.1 中,TCS3200 采用 8 引脚的 SOIC 表面贴装式封装,在单一芯片上集成有 64个光电二极管。这些二极管共分为四种类型。其中 16 个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16 个光电二极管带有蓝色滤波器;其余 16 个不带有任何滤波器,

17、可以透过全部的光信息。这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16 个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。工作时,通过两个可编程的引脚来动态选择所需要的滤波器。该传感器的典型输出频率范围从 2 Hz500 kHz,用户还可以通过两个可编程引脚来选择 100%、20%或 2%的输出比例因子,或电源关断模式。输出比例因子使传感器的输出能够适应不同的测量范围,提高了它的适应能力。例如,当使用低速的频率计数器时,就可以选择小的定标值,使TCS3200 的输出频率和计数器相匹配。从图 3

18、.1 可知:当入射光投射到 TCS3200 上时,通过光电二极管控制引脚 S2、S3 的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是 50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。图 3.1 TCS3200 的引脚和功能框图下面简要介绍 TCS3200 芯片各个引脚的功能及它的一些组合选项。7S0、S1 用于选择输出比例因子或电源关断模式;S2、S3 用于选择滤波器的类型;OE 是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用微处理器的输入引

19、脚时,也可以作为片选信号;OUT 是频率输出引脚,GND 是芯片的接地引脚,VCC为芯片提供工作电压。表 3-1 是 S0、S1 及 S2、S3 的可用组合。表 3-1 S0、S1 及 S2、S3 的组合选项S0 S1 输出频率定标 S2 S3 滤波器类型L L 关断电源 L L 红色L H 2% L H 蓝色H L 20% H L 无H H 100% H H 绿色TCS3200 内部原理图3.2.2 TCS3200识别原理1). 色彩空间通常所看到的物体的颜色, 实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。任何一种颜色都可以用三

20、种基本颜色按照不同的比例混合得到。这里介绍一种最典型的颜色模型,即 RGB 模型。如图 3.2.1 所示,在这个颜色模型中, 3个轴分别为 R、G、B 。原点对应的为黑色 (0, 0, 0),离原点最远的顶点对应白色(255, 255, 255)。 由黑到白的灰度分布在从原点到最远顶点间的连线上, 正方体的其他六个角点分8别为红、 黄、绿、青、蓝、和品红。需要注意的一点是,RGB 颜色模型所覆盖的颜色域取决于显示设备因光电的颜色特性。每一种颜色都有唯一的 RGB 值与它对应。R红B蓝G 绿品红白青黑黄图 3.2.1 RGB 颜色模型2). TCS230 识别颜色的原理由三原色感应原理可知,如果

21、知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于 TCS230 来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到 TCS230 传感器上的光的颜色。3). 白平衡算法颜色实际就是物体对光的反射或投射而表现出来在人眼中的反映, 而 TCS3200 就是通过分别检测一种颜色反映出来的光的红、绿、蓝分量, 通过把光强线性转换为频率信号, 量化出 R、G 、B 值, 从而计算

22、出颜色。值得注意的是, 不同的光线通过物体反映出来的光强是不同的, 而且非标准白光 (RGB 三者不相等 )在物体上反映出来的光强分量也是不同的。为解决这个问题,就要进行白平衡, 即首先测量出基准光源的 RGB 光强值, 再测量出在标准光源下物体所反映出的光强值,两者之比就是物体的反射(或透射)性质, 即物体的实际颜色, 如公式(1), (2), (3)。R=P 物红/P 源红 (1)G=P 物绿/P 源绿 (2)B=P 物蓝/P 源蓝 (3)由于在 RGB 坐标下的颜色标准坐标为 0-255 之间 ,所以把所得结果乘以 255,即得到9标准的 RGB 值。 透明物体直接测量光源的光强-频率值

23、,不透明物体需要用白纸测量反射光源。在实际运用中,对于 TCS230 的光传感器来说,这里有两种方法来计算调整参数: 依次选通三种颜色的滤波器,然后对 TCS230 的输出脉冲依次进行计数。当计数到255 时停止计数,分别计算每个通道所用的时间。这些时间对应于实际测试时 TCS230 每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的 R、G 和 B 的值。 设置定时器为一固定时间(例如 10 ms),然后选通三种颜色的滤波器,计算这段时间内 TCS230 的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为 255。在实际测试时,使用同样的时间进行计数,把测

24、得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的 R、G 和 B 的值。3.3 传感器与单片机连接TCS3200 是 TAOS 公司推出的可编程彩色光到频率的转换器,该传感器具有分辨率高、可变成的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。图 3.3.1 中用 89C51 的 P1 口的几个引脚来控制 TCS230 的各个引脚,而TCS230 的输出引脚连接到 89C51 的定时器/计数器 1 的输入端(P35) 。设置 89C51 定时器/计数器为相应的工作方式,初始化 89C51 定时器为一个定值,再选择 TCS3200 的输出比例因子,并使能输出引脚。

25、实际使用中,通过读取 89C51 计数器的值,就可以分别计算出 TCS3200 的 3 种输出频率,进而确定 R、G、B 值及颜色。相应的软件流程如图 3.3.2所示。10图 3.3.1 TCS230 颜色识别接口电路 在程序流程中:系统初始化负责设置 89C51 的定时器/计数器的工作方式,选择TCS230 的输出比例因子,使能输出引脚以及通信参数的设置。初始化完成后,检测是否需要进行白平衡调整。如有,调整白平衡子程序;否则,转到下一步,检测是否需要进行颜色识别。如不需要颜色识别,返回;如需要颜色识别,调用颜色识别子程序,直到颜色识别完毕。图 3.3.2 软件流程 113.4 LCD1602

26、 模块3.4.1液晶显示器简介液晶显示器简称 LCD 显示器,它是利用液晶经过处理后能改变光线的传输方向的特性显示信息的。液晶显示器具有体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中得到了日益广泛的应用。目前市场上常用的有 16 字*1 行、16 字*2 行、20 字*2 行和 40 字*2 行等的字符液晶显示模块。这些 LCM 虽然显示字符数各不相同,但是都具有相同的输入输出界面。此次课设使用的是 16*2 字符型液晶显示模块 CA1602A。CA1602A 采用标准的 16 脚接口,各引脚情况如下:第 1 脚:Vss,电源地第 2 脚:Vcc,+5v 电源第 3 脚:Vo

27、,液晶显示偏压信号第 4 脚:RS,数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。第 5 脚:RW:读/写选择端,高电平时进行读操作,低电平时进行写操作。但 RS 和RW 共同为低电平时可以写入指令或者显示地址;当 RS 为低电平 RW 为高电平时可以读忙信号;当 RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E,使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 7-14 脚:D0-D7,为 8 位双向数据线。第 15 脚:A,背光源正极第 16 脚:K,背光源负极3.4.2 指令格式与指令功能总共有 11 条指令,它们的格式和功能如下表 3.4:

28、序号 指令 RS RW D7 D6 D5 D4 D3 D2 D1 D01 清显示 0 0 0 0 0 0 0 0 0 12 光标返回 0 0 0 0 0 0 0 0 13 置输入模式 0 0 0 0 0 0 0 1 I/D 04 显示开/关控制 0 0 0 0 0 0 1 D C S12表 3.4 控制命令表3.4.3 LCD显示器的初始化LCD 使用之前须对它进行初始化,初始化可以通过复位完成,也可以在复位后完成,初始化过程如下:1).清屏。2).功能设置。3).开/关显示设置。4).输入方式设置。3.4.4 硬件电路连接在本设计中,1602 显示器与单片机的连接如下:Vss 管脚接地,Vd

29、d 管脚接+5V 电源,Vo 管脚通过一 3.3k 电阻接地,RS 管脚接 P2.0 管脚,RW 管脚接 P2.1 管脚,E 管脚接 P2.3 管脚, D0-D7 管脚依次接 P0.0-P0.7 管脚, A 管脚接+5V 电源,K 管脚接地。P0 口是一个三态双向口,可作为地址/数据分时复用接口,也可作为通用的 I/O 接口。它由一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。P0 口作为I/O 口输出的时候时 输出低电平为 0 输出高电平为高组态(并非 5V,相当于悬空状态) 。也就是说 P0 口不能真正的输出高电平,给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到 V

30、CC) ,由电源通过这个上拉电阻给负载提供电流。P2 口也是准双向口,它有两种用途:通用 I/O 接口和高 8 位地址线。与 P1 口相比,它只在输出驱动电路上比 P1 口多了一个模拟转换开关 MUX 和反相器。LCD1602 与 52 单片机的具体连接方式如图 3.4.4 所示:5 光标或字符移位 0 0 0 0 0 1 S/C R/L * B6 置功能 0 0 0 0 1 DL N F * *7 置字符发生存储器地址 0 0 0 1 字符发生存储器地址8 置数据发生存储器地址 0 0 1 显示数据发生存储器地址9 读忙标志或地址 0 1 BF 计数器地址10 写数到 CGRAM 或 DDR

31、AM 1 0 要写的数据内容11 从 CGRAM 或 DDRAM 读数 1 1 读出的数据内容13图 3.4.4 LCD1602 与单片机的具体连接图3.4.5 LCD1602液晶显示模块软件设计本设计的 LCD1602 液晶显示模块主要是利用比较经典的 LCD 显示方法来进行设计的,即字符串的方式进行输出显示。流程图如图 3.4.5 所示。整型数转化成字符型数组L C D 1 6 0 2 初始化和清屏设定光标显示位置以字符串方式输出单片机处理后的数据输出结束显示完成是否图 3.4.5 LCD1602 显示模块流程图143.5 系统结构图 色彩识别系统是基于 MCS-51 系列单片机控制的基础

32、上,添加了 TCS230 颜色传感器采集模块,TCS230 驱动模块,四个白色 LED 补光模块, LCD1602 液晶显示模块,在这些模块的基础上实现的色彩识别系统,色彩识别系统的设计如图 3.5.1 系统框架所示。电路图如 3.5.2 所示。M C -5 1 系列单片机T C S 2 3 0 颜色采集T C S 2 3 0 驱动模块四个白色 L E D 补光模块L C D 1 6 0 2 液晶显示模块图 3.5.1 系统框架图 3.5.2 系统电路图4 颜色识别系统测试154.1 色彩识别的测试过程事物是随时间变化而运动变化的,由于本系统对软硬件关联性要求很高,其整个实验过程中间变化过程很

33、复杂,一般仿真无法实现。本设计的测试过程很简单,具体操作如下:首先将开发板接通电源,将色彩纸板放平,其次把设计中的颜色采集模块放在待测的纸板上,放正放平,最后用隔光较好的纸张或者盒子将颜色采集模块遮盖起来,然后用笔记录 LCD 显示的值,依次测量不同颜色的纸板并记录数据即可。在测试过程中进行了多次的测量试验,记录的一些数据如下图 4.1结果R G第一次第二次第三次第三次第三次第三次第二次第二次第二次第一次第一次第一次2 5 3 2 4 6 2 4 32 5 5 2 5 0 2 5 32 4 9 2 5 2 2 5 01 6 6 0 3 6 0 4 41 6 6 0 4 7 0 4 11 6 6

34、 0 3 6 0 4 00 7 8 1 3 1 0 6 10 7 5 1 2 8 0 6 21 3 3 0 5 80 3 5 0 4 3 1 0 70 2 8 0 4 5 1 0 10 3 1 0 4 21 0 50 6 9纯白纯红纯绿纯蓝颜色图像B图 4.1 测试数据4.2 颜色检测中的误差物体颜色信息十分广泛,颜色的确定需要色调、明度和饱和度三大要素或三原色(红绿蓝)的刺激值。影响颜色检测准确度的参数主要有: 照射光、物体反射、光源方位、观测方位和传感器性能等,任何一个参数发生变化都会导致观察到的颜色发生变化。(1)光源的影响16照射光包含有太阳光和外界杂散光,太阳照射角度、云层厚度和其它

35、天气条件都会导致照射光发生变化,从而导致被测物体颜色发生变化。(2) 光源方位和观测方位的影响光源方位,也就是被测物体指向光源的法线方向,它决定了有多少太阳光或外界杂散光作为入射光。观测方位是指被测物体指向传感器的法线方向,它决定了反射到传感器中的光强。(3) 被测物表面反射状况的影响传感器探头与被测物之间的距离影响着输出信号,可能会造成不同颜色信号的交叉,形成测量误差,所以存在某一最佳距离对输出特性影响最小,以保证颜色与输出信号的一一对应关系。被测物表面的较明显凹凸区域也会给输出信号带来较大的误差。误差 结果实验次数 R G B第一次 101 121 92光强第二次 98 116 89第一次

36、 46 56 53光照强度光弱第二次 38 58 40第一次 248 42 38正方向第二次 255 34 42第一次 143 86 96方位影响侧方向第二次 123 96 102第一次 123 93 104反射强第二次 113 106 96第一次 66 52 46表面反射影响反射弱第二次 54 61 484.3 测试结果分析通过上面的测试结果可以看出,如果被测物体的颜色中,红色成分比较多,那么在17显示的输出结果中的 R 的值就大;同样的,如果绿色成分多,输出结果中的 G 的值就大,如果蓝色成分多,输出结果中的 B 的值就大。表格最后一列给出了这些颜色值对应的色彩图像,而表格的第一列给出了标

37、准的色彩图像,可以看出,实际测得值与标准值之间还存在着一定的误差,这些误差产生的原因有很多,其中之一就是外界干扰光的存在,其次因为传感器芯片对光的敏感性不同,此外可能的原因包括补光模块中的 LED 二极管发出的光不稳定,还可能因为物体对光的反射能力不同等等,所有的这些原因导致了在测量的过程中存在的误差在所难免,只有不断的改善,以达到减小误差的目的,所以本系统还有待更进一步的研究以改善整个系统。通过系统测试,验证了色彩识别系统的可行性,通过对纯白色、纯绿色、纯蓝色三个纸板的检测,验证了本系统的确可以完成预期的任务,实现系统功能,但是与其真实值之间还有一定的误差,这也是本系统的不完善之处,这也为以

38、后的更完善的功能更强大的精确度更高的色彩识别系统打了一个结实的基础,为以后更好的完善和简化色彩识别系统做下了铺垫。5 课设总结这次课设我们就色彩识别系统的原理及实现做了研究。现将本论文所做的主要工作内容总结如下:(1) 建立颜色识别系统的模型,推算出颜色识别的算法。(2) 介绍单片机等主要模块的功能及优势。(3) 对系统进行整体的软硬件设计。(4)编写程序计算 RGB 三种颜色值,然后进行测试实验,以验证论文中结论的准确性。总的来说,本论文是以 AT89S52 单片机为基础,利用 TCS3200 颜色传感器模块,LCD1602 液晶显示模块实现色彩识别系统的设计,并进行了色彩识别的测试实验。其

39、中,色彩识别的算法实现原理和各模块的实现是其中的重点。心得体会:通过本次的课程设计我们发现了很多不足,不论是理论知识方面还是实践方面都有一些问题。我们从态度上应该积极向上,主动发现问题并且解决问题,克制遇到问题就气馁的坏习惯。而在理论的的知识方面,我们拥有编写代码的能力,但是却没有模块化的编写过程序,导致开始编写的时候代码混淆不清。在硬件电路的焊接中,虽然电路比较小,但是还是忽略了一些细节,或者因为线有些乱而接错了接口并且没有更好的布局。18在制作或者设计中的时候我们总会犯各种各样的小错误,比如布局,接线,测设等等。但是总的来说还是还是学到了一些东西并且最终完成了课设。在此也多些老师的指导和培

40、养,才让我们更快更好的完成设19参 考 文 献1 李朝青.单片机原理及接口技术M.北京航空航天大学出版社,2000.2 杨家国.单片机原理与应用及 S52 程序设计J.电子报,2009.3 张松灿,肖本贤.高分辨率颜色传感器 TCS3200 的原理和应用D.合肥工业大学.2005.4 卢川英, 于浩成, 孙敬辉, 孟 中. 基于 TCS3200 传感器的颜色检测系统J.吉林大学学报.2008.11.5 胡建民. 颜色传感器 TCS3200 及颜色识别电路 EB/OL.20附录 1 程序代码#include#include #include #include#define uchar unsig

41、ned char#define uint unsigned int#define DataPort P0 sbit LCM_RS=P20; sbit LCM_RW=P21; sbit LCM_EN=P22; sbit s2=P11; sbit s3=P10; sbit test_pin=P12; uchar ge,shi,bai ;uchar rp=2,gp=2,bp=2; uchar count; uchar disp_R3; uchar disp_G3; uchar disp_B3; void delay(unsigned int k);void InitLcd();void WriteD

42、ataLCM(uchar dataW);void WriteCommandLCM(uchar CMD,uchar Attribc);void DisplayOneChar(uchar X,uchar Y,uchar DData);void InitLcd() WriteCommandLCM(0x38,0);WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0f,1);void WaitForEnable(void)Da

43、taPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPortLCM_EN=0;void WriteCommandLCM(uchar CMD,uchar Attribc)if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void WriteDataLCM(uchar dataW)21WaitForEnable();LCM_RS=1;LCM_

44、RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;void DisplayOneChar(uchar X,uchar Y,uchar DData)YXif(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);void delay(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+); void t0_init()TMOD=0x51; TH1=0x00; TL1=0x00

45、;TH0=0xE0;TL0=0x00; EA=1; ET0=1; TR0=1; TR1=1;void conversion(uint temp_data) bai=temp_data/100+0x30 ;temp_data=temp_data%100; shi=temp_data/10+0x30 ;ge=temp_data%10+0x30; void c10ms_out() interrupt 1 uint temp;test_pin=!test_pin; TR0=0; TR1=0; if(count=0)22count+; s2=1;s3=1; temp=(8TH1)+TL1; temp/=

46、rp;conversion(temp);disp_R2=ge; disp_R1=shi;disp_R0=bai; else if(count=1) count+;s2=0;s3=1; temp=(8TH1)+TL1; temp/=gp;conversion(temp);disp_G2=ge; disp_G1=shi;disp_G0=bai;else if(count=2) count=0;s2=0;s3=0; temp=(8TH1)+TL1; temp/=bp;conversion(temp);disp_B2=ge; disp_B1=shi;disp_B0=bai;TH0=0xE0;TL0=0

47、x00;TL1=0x00;TH1=0x00;TR0=1; TR1=1; void main()delay(10); InitLcd(); s2=0; s3=0; t0_init(); while(1) DisplayOneChar(0,0,G); DisplayOneChar(1,0,:); DisplayOneChar(2,0,disp_G0); DisplayOneChar(3,0,disp_G1); DisplayOneChar(4,0,disp_G2); 23DisplayOneChar(6,0,B); DisplayOneChar(7,0,:); DisplayOneChar(8,0,disp_B0); DisplayOneChar(9,0,disp_B1); DisplayOneChar(10,0,disp_B2); DisplayOneChar(0,1,R); DisplayOneChar(1,1,:); DisplayOneChar(2,1,disp_R0); DisplayOneChar(3,1,disp_R1); DisplayOneChar(4,1,disp_R2); delay(100) ;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报