单色图像识别单片机课程设计

更新时间:2024-05-07 18:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课题名称 姓 名 学 号 专 业 指导教师

单片机课程设计(论文)

摘要

随着现代工业生产向高速化、自动化方向的发展,色彩识别广泛应用于各种工业检测和自动控制领域,而生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。如:各种物体表面颜色识别(产品包装色标检测,产品外表特征颜色的检测,液体溶液颜色变化过程的检测与控制,等等)。而本文就是介绍如何通过使用TCS3200D颜色传感器来实现色彩识别的功能的。

首先,通过了解一定深度的光与颜色的知识(主要是三原色的感应原理)以及深入学习研究TCS3200D识别颜色的原理,实现TCS3200D颜色传感器测量颜色的功能。其次,对所测得的数据进行处理,转换成RGB三种颜色光数值。最后,通过LCD将经过处理后的数据显示出来。 本设计具有体积小、成本低、功能强等特点。

关键字:TCS3200D颜色传感器;STC89C52RC单片机;LCD1602;色彩识别

单片机课程设计(论文)

目 录

1 绪论 ............................................................................................................................................. 3

1.1 研究背景 ........................................................................................................................... 3 1.2 色彩识别及颜色传感器技术的发展趋势 ....................................................................... 3

1.2.1 颜色识别技术的研究成果 ..................................................................................... 3 1.2.2 国内颜色传感器的研究成果与动态 ..................................................................... 4 1.3本论文的主要工作及意义 ................................................................................................ 5 2 颜色识别及颜色传感器技术介绍 ............................................................................................. 6

2.1 色彩识别 ........................................................................................................................... 6 2.2 色彩识别算法 ................................................................................................................... 6

2.2.1色彩识别的应用 ...................................................................................................... 6 2.2.2色彩识别一般算法 .................................................................................................. 6 2.3颜色传感器技术 ................................................................................................................ 7

2.3.1颜色检测的难点 ...................................................................................................... 7 2.3.2颜色传感器 .............................................................................................................. 8 2.4本章小结 .......................................................................................................................... 12 3 基于TCS3200D的设计 ........................................................................................................... 13

3.1 MCS-51单片机简介 ....................................................................................................... 13 3.2 颜色传感器及硬件电路的连接 ..................................................................................... 14

3.2.1 颜色传感器 ........................................................................................................... 14 3.2.2 TCS3200D颜色传感器与51片机的连接 ........................................................... 15 3.2.3 LCD1602与51单片机的连接 ............................................................................. 16 3.3 TCS3200D颜色识别原理简介 ....................................................................................... 19 3.4液晶显示器各种图形显示的原理简介 .......................................................................... 20 3.5本章小结 .......................................................................................................................... 21 4 色彩识别器系统的设计与实现 ............................................................................................... 22

4.1 系统结构框图 ............................................................................................................... 22 4.2 TCS3200D驱动模块 .................................................................................................... 22 4.3 TCS3200D颜色采集模块的设计 ................................................................................ 23

4.3.1 TCS3200D颜色采集模块与51单片机的接口 ................................................ 23 4.3.2 TCS3200D颜色采集模块的软件设计 .............................................................. 24 4.4 4个白色LED补光模块的设计 .................................................................................. 27 4.5 LCD1602液晶显示模块 .............................................................................................. 27

4.5.1 LCD1602液晶显示模块硬件设计 .................................................................... 27 4.5.2 LCD1602液晶显示模块软件设计 .................................................................... 28 4.6 本章小结 ......................................................................................................................... 30 5 色彩识别系统的实验 ............................................................................................................... 31

5.1色彩识别的实验过程 ...................................................................................................... 31 5.2 实验结果分析 ................................................................................................................. 31 5.3 本章小结 ......................................................................................................................... 31 6 结论与展望 ............................................................................................................................... 33

6.1 结论 ................................................................................................................................. 33

1

单片机课程设计(论文)

6.2展望 .................................................................................................................................. 33 参考文献 ....................................................................................................................................... 34 附录1程序代码 ........................................................................................................................... 35 附录2系统电路总图 ................................................................................................................... 38 附录2系统实验图 ....................................................................................................................... 38

2

单片机课程设计(论文)

1 绪 论

1.1 研究背景

随着现代工业生产向高速化、自动化方向的发展,颜色识别广泛应用于各种工业检测和自动控制领域,而生产过程中长期以来由人眼起主导作用的颜色识别工作将越来越多地被相应的颜色传感器所替代。如:各种物体表面颜色识别(产品包装色标检测,产品外表特征颜色的检测,液体溶液颜色变化过程的检测与控制,等等)。目前的颜色传感器通常是在独立的光电二极管上覆盖经过修正的红、绿、篮滤光片,然后对输出信号进行相应的处理,才能将颜色信号识别出来;有的将两者集合起来,但是输出模拟信号,需要一个A/D电路进行采样,对该信号进一步处理,才能进行识别,增加了电路的复杂性,并且存在较大的识别误差,影响了识别的效果。而TCS3200D颜色传感器是美国TAOS公司生产的一种可编程彩色光到频率的转换器,比市面上见到的光转电压颜色检测仪器在性能上有更多的优势。TCS3200D它对光的动态响应范围大于250,000~1,标准输出频率范围为2Hz~500kHz,TCS3200D有两个可编程的引脚,使用者可以对100%、20%、2%或者是动力关闭模块的输出量程进行选择使用。TCS3200D在不需要DCs的情况下,给每个彩色通道至少能提供10字节的分辨。TCS3200D可以用于彩色打印机、医疗诊断、LED检测、液体颜色识别、电脑彩色监控标准、颜色产品加工控制、和油漆、纺织品、化装品及打印材料的彩色搭配等颜色检测产品。

1.2 色彩识别及颜色传感器技术的发展趋势

颜色传感器也叫色彩识别传感器。

标准的颜色测量方法是采用光谱光度测色仪,通过测量样品的三刺激值,从而得到样品的颜色。

目前,基于各种原理的颜色识别传感器有两种基本类型: 其一是RGB(红绿蓝) 颜色传感器, 检测的是三刺激值; 其二是色差传感器,检测被测物体与标准颜色的色差。这类装置许多是漫反射型、 光束型和光纤型的, 封装在各种金属和聚碳酸酯外壳中。

1.2.1 颜色识别技术的研究成果

1). MAZET公司最新推出的颜色传感器MTCSiCS,不仅能够实现颜色的识别与检测,色彩传感器具有高精度的3色测量(CIE),是测量光源系统的出 色解决方案,其控制系统可以捕捉到目前的颜色状况,然后根据图像信号反馈的信息控制并达到相应的Yxy值。相比别的传感器,在温度变化的情况下,MAZET的传感器性能不变,甚至在温度或者能量很高的情况下、MAZET的传感器也不会有任何老化。

MTCSiCS的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接。由于输出的是数字量,并且能够实现每个彩色信道

3

单片机课程设计(论文)

10位以上的转换精度、因而不再需要A/D转换电路,使电路变得更简单。图1是MTCSiCS的引脚和功能框图。从图 1可知,当入射光投射到MTCSiCS上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器:经过电流到频率转换器后输出不同频率的 方波(占空比是50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调 整,以适应不同的需求。

2). 德国ELTROTEC色标传感器可以检测出颜色的差异,ELTROTEC色标检测器具有灵敏度高、响应速度快、抗背景干扰能力强。即使颜色上的细微差异或高光泽目标物也能够被ELTROTEC检测到,产品被广泛的运用于包装机械和印刷机械,造纸机械等自控系统中。

ELTROTEC色标检测器适用于必须快速和准确检测色标或其他用颜色对比作记号的场合。在30多种不同的灰度等级中,色标检测器可检测所有类型的色标标记,可给不同的用户界面提供多种对比度检测技术,以满足广泛的应用领域,是业界最佳的色彩辨识仪器。

3).FT50C-1颜色传感器:自2001年,通过测试开始投入应用至今FT50C-1一直得到广泛应用。该传感器使用直径4mm的圆光斑。适合用于分选包装或检测不同类型的标签。FT50C-2颜色传感器:使用2mm的正方形光斑。适合于检测非常微小的物体。典型应用是:检测小部件或检测细致的仪器。FT50C-3颜色传感器:使用1mm*5mm的长方形光斑。专为检测长方形物体而设计。典型应用为:检测导管内半导体芯片的缺失和正确顺序。

4). CS颜色检测器利用三色光方法鉴别颜色。CS颜色检测器可以发射多种光谱组合,从而代替了传统的接收端滤式宽带光谱(易受周围光线影响)。被检测物体的反射光线被接收并被数字化,通过集成的微处理器进行运算和标准化。所有的红、绿、蓝(RGB)波长范围包括所有必要色度、饱和度和亮度等信息都被包括在最后的信号值中。这些测量与保存的参考值在数微秒内进行比较,根据结果,改变开关输出的状态。颜色检测器可利用接收光和发射光的颜色检测而鉴别物体-例如透明物体或液体。根据工作需要,可以通过自学习模式存储一个或三个颜色参考值。因为颜色检测器对周围光线极度不敏感,所以检测的可靠性不会被进入传感器一端的反映或光线影响。

1.2.2 国内颜色传感器的研究成果与动态

1). 四川火狐公司推出的MCS颜色传感器是最小的三原色传感器,由三个Si-PIN光电管以及在片滤波器集成在一起的,每个光电管都各自有三种颜色之一的滤波器。它具备小尺寸设计,高质量滤波器和三种颜色同步记录的特点。三个不同区域的颜色识别响应,类似于人眼。每个光电管对相应光谱滤波器的颜色光最敏感,主要是红色,绿色,蓝色。对高动态工业颜色应用(允许信号频率到 MHz范围),新的紧凑型颜色传感器是首选,适合低价格快速信号处理。这种光电管的环型排列,适合辅助光纤测量信号的耦合。这些传

4

单片机课程设计(论文)

感器提供TO5和 SOP8透明塑料或者玻璃封装。

2). 广州创光电子有限公司的PDIC903B颜色传感器主要用来检测环境亮度水平,并通过提供高度线性的成比例输出,来调节显示屏幕或键盘的背光。可帮助便携式显示设备降低功耗,延长LCD屏幕的使用寿命。这些经济型传感器可以根据制造商预先设定的模式来控制便携式LCD显示器的背光。尺寸(宽x长x高)5.0x 5.0 x 1.0mm 受光面积:4.0x4.0mm 波长范围:390-700nm 峰值波长:620nm\\550nm\\470nm(三色)工作电压:2.3-5V 灵敏度范围:3 lx-80 klx 精确度:输入电流500mμA时对数曲线上下偏差3% 可提供样品。广泛应用于:移动设备 PDA、移动电话、笔记本电脑和数码相机的键盘和显示屏背光控制。

3). 深圳市易创特自动化设备有限公司推出的新一代数字颜色传感器TCS3414CS,不但可以侦测颜色,同时还可以侦测色温。其应用主要是带有液晶屏的数码产品如液晶电视,可视DVD,车载数码产品,另外如笔记本电脑,手机,PMP等移动设备也都有应用。 其产品的低档系列,以其优良侦测精度和优势的价格,尤其适合玩具类等产品开发应用。

4). 上海精电电子设备有限公司研发生产的颜色识别传感器、色标传感器系列产品,作为国内最专业的光学测量及检测设备研发及生产厂家特别在辨色识别,激光测距,光纤的技术上处于领先地位,运用了当今先进的数字化背景抑制技术,大大提高了测量精度和抗干扰能力,因为有这样的特点,使得该公司产品在国内市场有相当占有率,依靠合理的价格更适合国内市场的服务理念成为少数几家能与国外顶级品牌抗衡的高科技企业。目前生产的超高功率RGB数字光纤传感器在检测时的方便性为一般传感器望尘莫及, RGB 颜色传感器利用数模转换的高精度放大器,成为业界最佳的色彩辨识,即使颜色上的细微差异或高光泽目标物也能够轻易的检测。

1.3本论文的主要工作及意义

本文以色彩识别系统设计为目的,采用STC89C52RC单片机为核心,利用TCS3200D颜色传感器和LCD1602建立起来的。文中给出整个系统的设计思路,包括,根据对三原色的感应原理和TCS3200D颜色传感器识别颜色的原理的分析,设计出一个合适的可行的实验环境。其次,利用TCS3200D颜色传感器,在合适的环境下,对被测物体进行检测,将测得的数据进行A/D转换,转化成数字量。最后,将转化后的数字量送到STC89C52RC单片机进行处理,得到被测物体所包含的RGB三原色的颜色值,之后利用LCD1602显示出来。

本文研究的色彩识别系统的意义在于降低了色彩识别的难度,而且检测结果能准确可信,将有利于自动化行业以及相关行业的发展,同时为这个领域以后的研究提出自己的一点见解。另外,文中实现的颜色识别系统可用于机器人比赛的视觉识别系统。

5

单片机课程设计(论文)

2 颜色识别及颜色传感器技术介绍

2.1 色彩识别

正如我们所知道的那样,色彩实际上是频率连续的电磁波,理论上色彩是无限的,但是人们能分辨的色彩是有限的,而且存在着个体差异。专业人士在设计一个色彩识别系统的时候,会很仔细地以5%甚至更小的区别来仔细调整色彩之间的比值。当这些类似色并排在一起时,即使是没有经过训练的普通人,除了色盲意外,都能够看出它们之间的区别。但是当一个色彩识别系统被确定并且单独展现时,普通人是无法区别出这5%什么更大的差异的。因此大多数人会简单的将他们所看到的某个色彩归类到他们能用简单语言描述的一类颜色,比如红、黄、白,或在这个基础上加以设当的区分,比如橘黄,有点发白的橘黄等。这种普通人感知的色彩可以被看作围绕着一个核心色的一个一个的区间,在这个区间中的所有颜色在色彩识别的时候,都会被看作是一种色彩。初中同一色彩识别区间的所有色彩尽管值不一样,但是对于受众而言是一样的。

2.2 色彩识别算法

2.2.1色彩识别的应用

在现今的工业化社会中,色彩识别被广泛的应用于各行各业之中,如:各种物体表面颜色识别(产品包装色标检测,产品外表特征颜色的检测,液体溶液颜色变化过程的检测与控制,等等)。又如:图书馆使用颜色区分对文献进行分类,能够极大的提高排架管理和统计等工作;在包装行业,产品包装利用不同的颜色或装磺来表示其不同的性质或用途;在品牌的形象设计和品牌推广的竞争中,色彩系统是一个比较重要的部分,设计师都会花费大量的时间细致地调整不同色彩搭配之间的组合关系,以达到更好的视觉效果。

2.2.2色彩识别一般算法

1). 色彩空间

通常所看到的物体的颜色, 实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。任何一种颜色都可以用三种基本颜色按照不同的比例混合得到。

这里介绍一种最典型的颜色模型,即RGB模型。如图2.1所示,在这个颜色模型中, 3个轴分别为R、G、B。原点对应的为黑色(0, 0, 0),离原点最远的顶点对应白色(255, 255, 255)。 由黑到白的灰度分布在从原点到最远顶点间的连线上, 正方体的其他六个角点分别为红、 黄、绿、青、蓝、和品红。需要注意的一点是,RGB颜色模型所覆盖的颜色域取决于显示设备因光电的颜色特性。每一种颜色都有唯一的RGB值与它对应。

6

单片机课程设计(论文)

B 蓝 青 品红白黑G 绿黄2). 白平衡算法

颜色实际就是物体对光的反射或投射而表现出来在人眼中的反映, 而 TCS3200D 就是通过分别检测一种颜色反映出来的光的红、绿、蓝分量, 通过把光强线性转换为频率信号, 量化出R、G、B值, 从而计算出颜色。值得注意的是, 不同的光线通过物体反映出来的光强是不同的, 而且非标准白光 (RGB三者不相等)在物体上反映出来的光强分量也是不同的。

为解决这个问题,就要进行白平衡, 即首先测量出基准光源的RGB光强值, 再测量出在标准光源下物体所反映出的光强值,两者之比就是物体的反射(或透射)性质, 即物体的实际颜色, 如公式(1), (2), (3)。

R=P物红/P源红 (1) G=P物绿/P源绿 (2) B=P物蓝/P源蓝 (3)

由于在 RGB 坐标下的颜色标准坐标为 0-255 之间,所以把所得结果乘以 255,即得到标准的 RGB 值。 透明物体直接测量光源的光强-频率值,不透明物体需要用白纸测量反射光源。

2.3颜色传感器技术

2.3.1颜色检测的难点

物体颜色信息十分广泛,颜色的确定需要色调、明度和饱和度三大要素或三原色(红绿蓝)的刺激值。影响颜色检测准确度的参数主要有:照射光、物体反射、光源方位、观测方位和传感器性能等,任何一个参数发生变化都会导致观察到的颜色发生变化。

1).光源的影响

照射光包含有太阳光和外界杂散光,太阳照射角度、云层厚度和其它天气条件都会导致照射光发生变化,从而导致被测物体颜色发生变化。

R 红 图2.1 RGB颜色模型 7

单片机课程设计(论文)

为弥补光源变化带来的测量误差,Judd等人在1964年提出了照射光修正模型,但尽管如此,照射光引起物体颜色检测的误差仍不容忽视。

2).光源方位和观测方位的影响

光源方位,也就是被测物体指向光源的法线方向,它决定了有多少太阳光或外界杂散光作为入射光。观测方位是指被测物体指向传感器的法线方向,它决定了反射到传感器中的光强。

3).被测物表面反射状况的影响

传感器探头与被测物之间的距离影响着输出信号,可能会造成不同颜色信号的交叉,形成测量误差,所以存在某一最佳距离对输出特性影响最小,以保证颜色与输出信号的一一对应关系。被测物表面的较明显凹凸区域也会给输出信号带来较大的误差,为此 , Phong,Shafer和 Nayar等人先后提出了反射模型以弥补测量误差。

2.3.2颜色传感器

1).RGB 颜色传感器

RGB颜色传感器对相似颜色和色调的检测可靠性较高。它的测量原理示意图如图2.21 所示。

图2.2 RGB颜色传感器

在三个光电二极管上贴上三基色滤色片,三种光通过同一透镜发射后被目标物体反射,根据测出的数据求出颜色的成分。由于这种颜色检测法是通过测量构成物体颜色的三基色实现颜色检测的,所以精密度极高,能准确区别极其相似的颜色,甚至相同颜色的不同色调。

RGB颜色传感器有两种测量模式:一种是分析红、绿、蓝光的比例。因为检测距离无论怎样变化,只能引起光强的变化,而三种颜色光的比例不会变,因此,即使在目标有机械振动的场合也可以检测;第二种模式是利用红绿蓝三基色的反射光强度实现检测目的 ,利用这种模式可实现微小颜色判别的检测,但传感器会受目标机械位置的影响。无论应用哪种模式,大多数 RGB 颜色传感器都有导向功能,使其非常容易设置。这种传感器大多数都有内建的某种形式的图表和阈值,利用它可确定操作特性。

利用全色色敏器件及相关分析手段可以较精确地测定颜色,一般来说,它至少需要三个光电二极管以及三个相应的滤光器,以获得颜色的三刺激值,因此结构和电路都比较复

8

单片机课程设计(论文)

杂。

2).色差传感器

在一些实际应用中(如分拣、 质量监控等行业),并不需要确切了解被测物的具体颜色,而只需要对两个物体的色差进行识别与判断,区别出从一种颜色到另一种颜色的变化。例如,对家用电器、汽车外壳的色彩管理,对纸浆、油漆、彩色钢板等色彩进行读取和控制,只要检测出两种颜色存在一定的色差,就能将它们区分开来。色差传感器已发展出硅双结、 光纤、有机材料等多种,由于其价格便宜,动态响应效果好,能实现在线实时测量,所以除染色等特殊行业外,工业上一般都采用色差传感器。

硅双结型颜色传感器:

硅双结型颜色传感器的结构及主要特性如图2.3所示。

图2.3 硅颜色传感器的结构原理图与特性曲线

图2.3(a)中所示的N-P-N是结深不同的两个P-N结二极管,放大作用很小。浅结二极管D1是N+- P结;深结二极管D2是P-N结,当有入射光照射时,N+,P,N每个区域及其间的势垒区中都有光子吸收,根据硅的光学性质,蓝紫光部分吸收系数大,经很短距离已吸收完毕,因此浅结光电二极管对蓝紫光的灵敏度高,而红外光的透射深度则一直达到深结区,因此深结光电二极管对红外光的灵敏度高。这就是说此结构中的不同区域对同一波长入射光具有不同的灵敏度,这一特性提供了将这种器件用于颜色识别的可能性。在不同波长的光照射下,两只光电二极管电流的比值I2/I1不同, I1是浅结二极管的短路电流, I2是深结二极管的短路电流。由于单色入射光的波长与色敏器件的短路电流比的对数存在近似的线性关系,即 ,

式中A和B值通过对预先测定数据拟合得到。所以根据短路电流比,如图 2.3(b) 所示,就可以得到入射光的波长。

这种传感器的突出优点是:短路电流比与光强无关,几乎只与入射光波长相关。但色敏器件的输出电流很小,很容易受外界的干扰,因此需要对放大电路进行屏蔽。

液晶颜色传感器:

9

单片机课程设计(论文)

液晶颜色传感器由红外玻璃滤色片、 电子控制双折射液晶和硅 P2N 结光电二极管组成,其结构截面如图2.4 所示。

入射光红外滤波片起偏振器玻璃聚酯薄膜液晶检偏振器SiO2光电二极管P-SiN-Si图2.4 颜色传感器结构

加电压输出电压

传感器的光灵敏度可近似表示为 Tr(λ) ~ Ir(λ)I(λ)Ph(λ) ,

式中Tr(λ)为传感器的光谱灵敏度;Ir(λ)为透过红外滤色片的光强;I(λ)为透过液晶单元的光强;Ph(λ)为光电二极管检测到的光强;λ为入射光的波长。透过液晶的光强 I(λ)是加在液晶两端电压的函数,即

I (λ) = I0(λ)sin2 (2ψ) sin2 (πR/λ) , R = ( ne - n0) d – Rb

式中d为液晶层的厚度;ne为液晶层中非常光线的折射率; n0为液晶层中寻常光线的折射率; Rb为聚酯薄膜中的光延迟; R为液晶单元有效的光延迟; I0(λ)为射到液晶上的入射光强度;ψ为液晶分子轴在电极上的投影方向和起偏振器方向夹角。

其测量原理是利用红外玻璃滤色片滤掉入射光中的红外成分,改变液晶两端的电压,可以改变液晶层中的非常光折射率 ne ,从而改变光强 I(λ)。光电二极管检测到光强与存储在计算机中的颜色数据进行比较,就可知所测物体的颜色。

用该传感器检测采用同样材料编织而穿着方式不同的两件衣服,传感器输出电压的峰值有差异,这意味着这种传感器灵敏,可分辨出非常小的颜色差别。

光纤颜色传感器:

光纤是20世纪70年代为通信而发展的一种新型材料,与其它材料相比,光纤具有良好的传光性能和较宽的频带,因而被广泛地应用在通信领域中。除此之外,光纤本身还是一个敏感元件,即光在光纤中传输时,光的特性如振幅、波长(颜色)、相位、偏振态等将随检测

10

单片机课程设计(论文)

对象变化而相应变化。光从光纤射出时,光的特性得到调制,通过对调制光的检测,便能感知外界的信息。为充分发挥光纤的这一特性,自70年代中期以来出现了许多特殊的光纤传感器,如光纤强度、相位、(波长)颜色传感器等。

光纤颜色传感器的装置如图2.5 所示。

图2.5 光纤颜色传感器的实验装置

光源发出的光由透镜耦合到光纤束,在光纤束的出射端经分光板反射到达被测物,RGB 标准滤色片同装在一个旋转盘上,当旋转盘转动时,物体反射的不同波长的光相继经过滤色片到达光探测器,从光敏管电流强弱,即可反映被测图样颜色。与传统传感器相比它具有以下优点:

(1) 利用光纤束解决了普遍存在的光能量和光源散热问题;

(2) 结构小而紧凑, 便于安装, 可实现在线检测,传感头高度密封,适于恶劣条件,具有可靠的抗干扰措施;

(3) 响应速度快,便于与计算机接口自动地判断或记数。 有机静电感应颜色传感器:

近年来,已有越来越多的研究者提出采用有机材料制成光电传感器,这种传感器成本低,应用范围广,但目前还只处于实验室研究阶段。1986年Tang曾报道了利用有机材料制成光电转换效率很高的太阳能电池,由此可见有机材料具有良好的光敏性能,所以有机材料颜色传感器被认为是很有发展前景的一种传感器。

Kudo利用两种染料制成了一种P型有机静电感应传感器(static induction t ransistor ,SIT) ,并研究了其光电特性。图2.6是 Kudo制成的有机静电感应颜色传感器的结构图。

有机静电感应颜色传感器有两个有机半导体层,分别是酞青蓝和部化青两种染料,酞青蓝和部化青膜的厚度分别为80nm和140nm,它们通过真空沉降方法覆盖在涂有锡铟氧化物的玻璃片上,酞青蓝和部化青膜之间具有P型半导体特性。有机染料膜上面覆盖一层金属金(Au)并与锡铟氧化层形成测量电极,酞青蓝和部化青膜之间有一非常薄的铝电极。当加载在铝电极上的电压增加时,测量电极之间的电流增加,反之,测量电极间的电流减少。Kudo对有机静电感应颜色传感器进行了光敏实验,光从部化青膜侧照射,在两个测量电极

11

单片机课程设计(论文)

上加载2.5V的输入电压,电极间的测量电流IDS则随着加载在铝电极上的电压(VG)变化而变化的,测量结果如图2.7所示。

图2.6 有机静电感应传感器结构

图2.7 有机静电感应传感器的光敏特性

从图2.7中还可以看出,IDS 在600nm时有一峰值,这说明酞青蓝层对600nm光的吸收性非常强。

从 Kudo的实验结果可知,有机材料的光敏特性不仅与电压VG有关,还与有机材料本身有关,所以利用有机材料完全有希望发展出一种新型的价格低廉且性能优良的颜色传感器。

2.4本章小结

本章对色彩识别与各种颜色传感器技术进行了深入的介绍,主要包括色彩识别的一般算法(白平衡算法),以及色彩识别在现实社会中的一些具体应用,另外还介绍了几种主要的传感器技术,为后面的色彩识别系统的设计做好了准备。

12

单片机课程设计(论文)

3 基于TCS3200D的设计

本论文主要是研究和设计色彩识别系统。本系统是以STC89C52RC单片机为核心,以TCS3200D颜色传感器和LCD1602为子系统建立起来的。

3.1 MCS-51单片机简介

MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52两个子系列。

对于51子系列,主要有8031、8051、8751三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片待4KB的ROM,8751芯片待4KB的EPROM。51子系列单片机的主要特点为:

4k/8k字节程序存储器; 128/256字节数据存储器; 32条I/O口线;

111条指令,其中大多数是单字节指令; 21个专用寄存器: 2个可编程定时/计数器: 5个中断源,2个优先级; 一个全双工串行通信口;

外部数据存储器寻址空间为64k字节: 外部程序存储器寻址空间64k字节; 逻辑操作位寻址功能

MCS-51系列单片机应用十分广泛,各种教材和应用资料也很多。尽管INTEL公司本身没有在品种和功能上对MCS-51系列单片机作进一步的扩展,但是由于lNTEL公司开放了MCS-51系列单片机的核心技术,加之51系列单片机已经成为8位通用单片机的公认标准,因此,许多著名的半导体生产厂家。如Atmel、Philips、Cygnal、Dallas等纷纷推出以80C51为基核的各具特色、性能优异、功能强大的单片机,形成了庞大的 80C51系列单片机家族,为熟悉51系列单片机的人们提供了最广泛的选择空间,也为51系列单片机注入了勃勃的生机。

13

单片机课程设计(论文)

图3.1 C51单片机管脚图图3.2 C51单片机实物图

3.2 颜色传感器及硬件电路的连接

3.2.1 颜色传感器

TCS3200D芯片的结构框图与特点:

TCS3200D是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMOS电路上,同时在单一芯片上集成了红绿蓝(RGB)三种滤光器,是业界第一个有数字兼容接口的RGB彩色传感器,TCS3200D的输出信号是数字量,可以驱动标准的TTL或CMOS逻辑输入,因此可直接与微处理器或其他逻辑电路相连接,由于输出的是数字量,并且能够实现每个彩色信道10位以上的转换精度,因而不再需要A/D转换电路,使电路变得更简单,图3.3是TCS3200D的引脚和功能框图。

TCS2301234S0 S3 S1 S2OE OUTGND Vcc8765输出光电二极管阵列S2S3电流--频率转换器S0S1OE图3.3 TCS3200D的引脚和功能图

图3.3中,TCS3200D采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64

14

单片机课程设计(论文)

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

从图3.3可知:当入射光投射到TCS3200D上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。

下面简要介绍TCS3200D芯片各个引脚的功能及它的一些组合选项。

S0、S1用于选择输出比例因子或电源关断模式;S2、S3用于选择滤波器的类型;OE反是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用微处理器的输出引脚时,也可以作为片选信号,OUT是频率输出引脚,GND是芯片的接地引脚,VCC为芯片提供工作电压,表3.1是S0、S1及S2、S3的可用组合。

表3.1 S0、S1及S2、S3的组合选项

S0 L L H H

S1 L H L H

输出频率定标 关断电源 2% 20% 100%

S2 L L H H

S3 L H L H

滤波器类型 红色 蓝色 无 绿色

3.2.2 TCS3200D颜色传感器与51单片机的连接

TCS3200D是TAOS公司推出的可编程彩色光到频率的转换器,该传感器具有分辨率高、可变成的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。图3.4为TCS3200D颜色传感器的实物图。

TCS3200D颜色传感器的S0管脚接51单片机的P1.0管脚,S1管脚接P1.1管脚,OE管脚接P1.2管脚,GND管脚接地,Vcc管脚接电源,OUT管脚接P3.2管脚,S2管脚接P1.6管脚,S3管脚接P1.7管脚。如下图3.5所示。

15

单片机课程设计(论文)

图3.4 TCS3200D颜色传感器实物管脚图

S0S1ETCS230S2S3OUTP1.0P1.1P1.2P1.6P1.7P3.2

51单片机图3.5 TCS3200D与单片机的连接图

3.2.3 LCD1602与51单片机的连接

1、液晶显示器简介

液晶显示器简称LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性显示信息的。液晶显示器具有体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中得到了日益广泛的应用。液晶显示器按其功能可分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果。

字符型液晶显示器模块是一种专门用于显示字母、数字、符号等的点阵式液晶显示模块。它是由若干个5*7或5*11等点阵符位组成的,每一个点阵字符位都可以显示一个字符。点阵字符位之间有一定点距的间隔,这样就起到了字符间距和行距的作用。

要使用点阵型LCD显示器,必须有相应的LCD控制器、驱动器来对LCD显示器进行扫描、驱动,以及一定空间的ROM和RAM来存储写入的命令和显示字符的点阵。现在往往将LCD控制器、驱动器、RAM、ROM和LCD显示器连接在一起,称为液晶显示模块LCM。使用时只要向LCM送入相应的命令和数据就可以实现显示所需的信息。

16

单片机课程设计(论文)

目前市场上常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符液晶显示模块。这些LCM虽然显示字符数各不相同,但是都具有相同的输入输出界面。本文将介绍16*2字符型液晶显示模块CA1602A的应用。

(1)、字符型液晶显示模块CA1602A的外观与引脚

CA1602A字符型液晶显示模块是2行16字的5*7点阵图形字符的液晶显示器,它的外观形状如图3.6。

图3.6 CA1602A的外观

CA1602A采用标准的16脚接口,各引脚情况如下: 第1脚:Vss,电源地 第2脚:Vcc,+5v电源 第3脚:Vo,液晶显示偏压信号

第4脚:RS,数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:RW:读/写选择端,高电平时进行读操作,低电平时进行写操作。但RS和RW共同为低电平时可以写入指令或者显示地址;当RS为低电平RW为高电平时可以读忙信号;当RS为高电平RW为低电平时可以写入数据。

第6脚:E,使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7-14脚:D0-D7,为8位双向数据线。 第15脚:A,背光源正极 第16脚:K,背光源负极 (2)、指令格式与指令功能

LCD控制器HD44780内有多个寄存器,通过RS和RW引脚共同决定选择哪一个寄存器,选择情况见表3.2。

表3.2 HD44780内部寄存器选择表

RS

0 0 1 1 RW 0 1 0 1

寄存器及操作 指令寄存器写入

忙标志和地址计数器读出

数据寄存器写入 数据寄存器读出

总共有11条指令,它们的格式和功能如下表3.3:

17

单片机课程设计(论文)

表3.3 控制命令表

序号 1 2 3 4 5 6 7 8 9 10 11

指令 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能

置字符发生存储器地址 置数据发生存储器地址 读忙标志或地址

从CGRAM或DDRAM读数

RS RW D7 D6 D5 D4 D3 0 0 0 0 0 0 0

0

0

0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 1 0 1

0 0 0 0 0 0 1

0 0 0 0 0 1

0 0 0 0 1

0 0 0 1

1 0 1

D2

0 * 1 D F

D1 D0 0 1 I/D S C *

B * *

S/C R/L *

DL N

字符发生存储器地址

显示数据发生存储器地址

BF 计数器地址

要写的数据内容 读出的数据内容

写数到CGRAM或DDRAM 1

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3.7是1602的内部显示地址。

图3.7 1602的内部显示地址

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大 小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A”。

(3)、LCD显示器的初始化

LCD使用之前须对它进行初始化,初始化可以通过复位完成,也可以在复位后完成,初始化过程如下:

1).清屏。 2).功能设置。 3).开/关显示设置。 4).输入方式设置。

18

单片机课程设计(论文)

2、1602显示器与单片机的连接

在本设计中,1602显示器与单片机的连接如下图3.8所示:Vss管脚接地,Vcc管脚接+5V电源,Vo管脚接地,RS管脚接P2.0管脚,RW管脚接P2.1管脚,E管脚接P2.7管脚,D0-D7管脚依次接P0.0-P0.7管脚,A管脚接+5V电源,K管脚接地。

P0.0~P0.7D0~D7 P2.751单片机 P2.1ELCD1602RW P2.0RS图3.8 1602显示与单片机连接图

3.3 TCS3200D颜色识别原理简介

TCS3200D识别颜色的原理:

由上面的介绍可知,这种可编程的彩色光到频率转换器适合于色度计测量应用领域,如彩色打印、医疗诊断、计算机彩色监视器校准以及油漆、纺织品、化妆品和印刷材料的过程控制和色彩配合。下面以TCS3200D在液体颜色识别中的应用为例,介绍它的具体使用。首先了解一些光与颜色的知识。

(1) 三原色的感应原理:

通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。

(2)TCS3200D识别颜色的原理:

由三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS3200D来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同时,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到TCS3200D传感器上的光的颜色。

(3)白平衡和颜色识别原理:

白平衡就是告诉系统什么是白色。从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS3200D的光传感器来

19

单片机课程设计(论文)

说,它对这三种基本色的敏感性是不相同的,导致TCS3200D的RGB输出并不相等,因此在测试前必须进行白平衡调整,使得TCS3200D对所检测的\白色\中的三原色是相等的。进行白平衡调整是为后续的颜色识别作准备。在本装置中,白平衡调整的具体步骤和方法如下:将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS3200D上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的3个调整参数。

当TCS3200D识别颜色时,就用这3个参数对所测颜色的R、G和B进行调整。这里有两种方法来计算调整参数:1、依次选通三颜色的滤波器,然后对TCS3200D的输出脉冲依次进行计数。当计数到255时停止计数,分别计算每个通道所用的时间,这些时间对应于实际测试时TCS3200D每种滤波器所采用的时间基准,在这段时间内所测得的脉冲数就是所对应的R、G和B的值。2、设置定时器为一固定时间 (例如10ms),然后选通三种颜色的滤波器,计算这段时间内TCS3200D的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,室外同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。

3.4液晶显示器各种图形显示的原理简介

线段的显示:

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列, 每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和 显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显 示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H, (002H)=00H,??(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

字符的显示:

用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和 显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个 字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示 RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

汉字的显示:

汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提 取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5??右边为

20

单片机课程设计(论文)

2、4、6??根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节??直到32B显示完就可以LCD上 得到一个完整汉字。

3.5本章小结

本章主要介绍了TCS3200D颜色传感器和LCD1602液晶显示器的相应原理,以及它们与单片机的连接方式及相应的电路原理图,其中对TCS3200D颜色传感器的内部结构和各个管脚以及它们的功能作了详细介绍,另外对颜色传感器识别颜色的原理以及液晶显示器显示各种图形的原理进行了一定深度的介绍,为后面整个系统的具体设计提供了很好的帮助。

21

单片机课程设计(论文)

4 色彩识别器系统的设计与实现

4.1 系统结构框图

色彩识别系统是基于MCS-51系列单片机控制的基础上,添加了TCS3200D颜色传感器采集模块,TCS3200D驱动模块,四个白色LED补光模块,LCD1602液晶显示模块,在这些模块的基础上实现的色彩识别系统,色彩识别系统的设计如图4.1系统框架所示。

TCS230驱动模块MC-51系列单片机TCS230颜色采集LCD1602液晶显示模块四个白色LED补光模块图 4.1 系统框架

4.2 TCS3200D驱动模块

TCS3200D采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管,这些二极管分为四种类型,其16个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16个光电二极管带有蓝色滤波器,其余16个不带有任何滤波器,可以透过全部的光信息,这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。

本模块主要包括TCS3200D初始化、定时器初始化和颜色采集,具体程序如下: void TCS3200DInital(void) { }

void TimerInital(void) { }

TCCR1A=0x00; TCCR1B=0x06; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00;ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR= 0x00; TCCR2 = 0x07; TCNT2 = 0xb7; OCR2= 0x00; TIMSK=0x40; DDRC= DDRC|0x0f;PORTC = PORTC|0x0f; PORTC = PORTC|0x20; DDRC= DDRC|0x20;

PORTC = PORTC&0xdf;TCS3200DMode(FrequencyMode,PhotoDiodeMode);

22

单片机课程设计(论文)

unsigned char TCS3200DMode(unsigned char FOutMode,unsigned char PhotoType) { }

if( FOutMode == F_POWERDOWN) {

PORTC = PORTC & 0xfc; } else if(FOutMode == F_100_2) { { { {

PORTD = PORTD & 0xfe;PORTD = PORTD | 0x02;} PORTD = PORTD & 0xfd;PORTD = PORTD | 0x01;} PORTD = PORTD | 0x03; } return 1; }

FrequencyMode = FOutMode; if(PhotoType==PH_RED) {PORTD = PORTD & 0xf3; } else if(PhotoType==PH_CLEAR) { { { {

return 2; }

PhotoDiodeMode=PhotoType; return 0;

PORTC = PORTC & 0xf7;PORTC = PORTC | 0x04; PORTC = PORTC & 0xfb;PORTC = PORTC | 0x08; PORTC = PORTC | 0x0c;

}

} }

else if(PhotoType==PH_BLUE) else if(PhotoType==PH_GREEN) else

else if(FOutMode == F_100_20) else if(FOutMode == F_100_100) else

4.3 TCS3200D颜色采集模块的设计

4.3.1 TCS3200D颜色采集模块与51单片机的接口

本设计中,TCS3200D模块主要与51单片机的P1口和P3口连接。P1口是准双向口,它只能作通用I/O接口使用。P1口的输出只由一个场效应管与内部上拉电阻组成。其输入输出原理特性与P0口作为通用I/O接口使用时一样,当其输出时,可以提供电流负载,不必像P0口那样需要外接上拉电阻。P1口具有驱动4个LSTTL负载的能力。

23

单片机课程设计(论文)

P3口除了作为准双向通用I/O接口使用外,它的每一根线还具有第二种功能,见表4.1.

表4.1 P3口的第二功能

P3口的引脚 第二功能 P3.0 RXD 串行口输入端 P3.1 TXD 串行口输出端 P3.2 INT0 外部中断0请求输入端,低电平有效 P3.3 INT1 外部中断1请求输入端,低电平有效 P3.4 T0 定时/计数器0外部计数脉冲输入端 P3.5 T1 定时/计数器1外部计数脉冲输入端 P3.6 WR 外部数据存储器写信号,低电平有效 P3.7 RD 外部数据存储器读信号,低电平有效 当P3口作为通用I/O接口时,第二功能输出线为高电平,与非门的输出取决于锁存器的状态。这时,P3是一个准双向口,它的工作原理、负载能力与P1、P2口相同。

当P3口作为第二功能使用时,锁存器的Q输出端必须为高电平,否则场效应管导通,引脚将被钳位在低电平,无法实现第二功能。当锁存器Q端为高电平,P3口的状态取决于第二功能输出线的状态。单片机复位时,锁存器的输出端为高电平。P3口第二功能中输入信号RXD、INT0、INT1、T0、T1经缓冲器输入,可直接进入芯片内部。 TCS3200D颜色传感器与51单片机具体的连接方式如图4.3所示。

4.3.2 TCS3200D颜色采集模块的软件设计

本设计的TCS3200D颜色采集模块主要是利用定时器/计数器T0和外部中断INT0来实现的。流程图4.4所示。

图4.3 TCS3200D与51的连接图

24

单片机课程设计(论文)

定时器初始化外部脉冲信号定时时间到否外部中断计数是输出频率值图4.4 颜色采集模块软件流程图

1、定时器/计数器:MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1;52子系列有三个,比51子系列多一个定时/计数器T2.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。

在方式0下,16位的加法计数器只用了13为,分别是TL0的低5位和TH0的8位,TL0的高3位未用。计数时,当TL0的低5位计满时向TH0进位,当TH0也计满时则溢出,是TF0置位。如果中断允许,则提出中断请求。另外也可通过查询TF0判断是否溢出。由于采用13位的定时/计数方式,因而最大计数值位2的13次幂,为8192。在实际中使用时,先根据计数值计算出初值,然后按位置置入到初值寄存器中。如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000,TL0=00011000B。在方式0计数的过程中,当计数器计满溢出,计数器的计数过程并不会结束,计数脉冲来时同样会进行加1计数。只是这时计数器是从0开始计数,是满值的计数。如果要重新实现N个单位的计数,则这时应重新置入初值。

在本设计中,设置T0的工作方式为方式0,定时1ms,赋初值为TH0=0xe0,TL0=0x18,在定时器/计数器T0中断函数void timer0(void)中重新给定时器/计数器T0赋初值,并且设定了一个变量lck,用来计数定时器/计数器T0中断的次数,当变量lck达到1000时,表明定时了一秒钟,而外部中断0的中断函数void int0(void)中定义的变量dispcount在定时一秒时间达到时候的值就是此时所选择的某种颜色通道的频率值。具体程序如下:

void initTimer(void) // 定时器初值1ms {TMOD=0x0; TH0=0xe0; TL0=0x18; }

void timer0(void) interrupt 1 //定时1秒,每一秒中断一次,所记得数就是频率

25

单片机课程设计(论文)

{TH0=0xe0; TL0=0x18; lck++; if(lck==1000)

{ disp=dispcount; }

2、MCS-51单片机提供5个硬件中断源:2个外部中断源INT0和INT1;2个定时器/计数器T0和T1的溢出中断TF0和TF1;1个串行口发送TI和接收RI中断。外部中断源INT0和INT1的中断请求信号从外部引脚P3.2和P3.3输入,主要用于自动控制、实时处理、单片机掉电和设备故障的处理。外部中断请求INT0和INT1有两种触发方式:电平触发和边沿触发。在边沿触发方式时,CPU在每个周期都采样P3.2或P3.3。为了保证检测到跳变,输入到P3.2或P3.3引脚上的高电平与低电平至少应保持1个机器周期。CPU响应后能够由硬件自动将IE0或IE1清零。

本设计中采用外部中断请求INT0来接收传感器的输出值。TCS3200D颜色传感器的OUT输出端与外部中断INT0(P3.2)管脚相连接,在外部中断INT0的中断函数void int0(void)中定义了一个变量dispcount,当接收一个脉冲信号时,dispcount就会加1,在定时/计数器T0设定的一秒时间内所累计的数值就是频率。具体程序如下:

void int0(void) interrupt 0 }

3、RGB三种色彩通道采集:此处设置了三个函数void red()、void green()、void blue(),分别代表红、绿、蓝三种颜色通道。在红色通道中,设置S2、S3都为低电平0,表明选择红色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。在绿色通道中,设置S2、S3都为低电平1,表明选择绿色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。在蓝色通道中,设置S2为低电平0,S3为高电平1,表明选择蓝色滤波器,S0为高电平1,S1为低电平0,表明以20%的方式输出频率。具体程序如下:

void red()//红色通道 { P1=0x01;

delay1ms(1100); date=disp/100;

//153是在纯白情况下测得的红色通道频率值

date=(255.0/153)*date; }

//外部中断0,TCS3200D的OUT端口接到INT0端口

{ dispcount++; //每一次中断,计数加一 lck=0;

dispcount=0; }

void green() //绿色通道 { P1=0xc1;

delay1ms(1100); date=disp/100;

26

单片机课程设计(论文)

date=(255.0/145)*date; } //145是在纯白情况下测得的绿色通道频率值

//蓝色通道

void blue() { P1=0x81;

delay1ms(1100); date=disp/100;

date=(255.0/183)*date; } //183是在纯白情况下测得的蓝色通道频率值

4.4 4个白色LED补光模块的设计

因为本设计的TCS3200D颜色采集模块需要在密闭的环境下实现,所以需要另外添加一个稳定的光源。本模块主要是用4个白色的LED光,照在待检测的物体上,然后反射到TCS3200D颜色传感器上,达到合适的光强的目的。电路图设计如图4.5所示。

4.5 LCD1602液晶显示模块

4.5.1 LCD1602液晶显示模块硬件设计

本设计中的LCD1602液晶显示模块主要是和MCS-51单片机的P0口和P2口连接的。Vss管脚接地,Vcc管脚接+5V电源,Vo管脚接地,RS管脚接P2.0管脚,RW管脚接P2.1管脚,E管脚接P2.7管脚,D0-D7管脚依次接P0.0-P0.7管脚,A管脚接+5V电源,K管脚接地。

P0口是一个三态双向口,可作为地址/数据分时复用接口,也可作为通用的I/O接口。它由一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。

P2口也是准双向口,它有两种用途:通用I/O接口和高8位地址线。与P1口相比,它只在输出驱动电路上比P1口多了一个模拟转换开关MUX和反相器。

LCD1602与51单片机的具体连接方式如图4.6所示。

27

单片机处理后的数据整型数转化成字符型数组LCD1602初始化和清屏4.5.2 LCD1602液晶显示模块软件设计

单片机课程设计(论文)

图4.5 白色LED补光模块电路图

图4.6 LCD1602与51单片机的具体连接图

图4.7 LCD1602显示模块流程图

28

是以字符串方式输出设定光标显示位置显示完成输出结束否

单片机课程设计(论文)

本设计的LCD1602液晶显示模块主要是利用比较经典的LCD显示方法来进行设计的,即字符串的方式进行输出显示。流程图如图4.7所示。

首先,将MCS-51单片机处理所得的最终数据送入uchar * int2str(uint d)函数,此函数的功能是将接收到的整型数d的每个位的数字取出,放到一个字符型的数组str[]中,以便LCD1602输出显示,具体程序如下:

uchar * int2str(uint d) //整型数转化成字符型数组函数 { }

其次,对LCD1602进行初始化和清屏,使用8位数据,显示两行,使用5*7的字型;显示器打开,关闭光标闪烁;输出方式为字符不动,光标自动右移一格。具体程序如下: void init_LCD(void) // 初始化lcd

{ LCD_w_com(0x38); // lcd为两行显示8位数据线有效 LCD_w_com(0x0e); // 显示字符 关闭光标

LCD_w_com(0x06); // 输入方式设置 光标向右移动一位 ac-1 }

void clear_LCD()

//清屏

{ LCD_w_com(0x01); //清屏指令

LCD_w_com(0x02); // 光标归位 即光标置于左上位置 }

最后,是向LCD1602液晶显示器写命令函数void LCD_w_com(unsigned com)和写数据函数void LCD_w_dat(uchar dat)以及字符串输出函数void display_LCD_string(uchar *p)、光标定位函数void gotoxy(unsigned x,unsigned y)。写命令函数的功能是向LCD1602中写入相应的命令指令,比如清屏命令LCD_w_com(0x01),实现LCD1602清屏功能。写数据函数和字符串输出函数的功能是向LCD1602写入要输出的数据,字符串输出函数中定义的指针P指向前面的字符型数组str[],一位一位的输出。光标定位函数的功能是告诉LCD1602要输出的数据的显示位置。具体程序如下: void LCD_w_com(unsigned com) { RW=0; RS=0; E=1; P0=com; delay1ms(10); E=0; RW=1; }

void LCD_w_dat(uchar dat) // 写数据 函数, 写要显示的数据 { RW=0; RS=1; E=1; P0=dat; delay1ms(10);

29

str[0]='0'+d/100; str[1]='0'+d0/10; str[2]='0'+d; return str;

//写命令函数,com为 要写的指令

单片机课程设计(论文)

E=0; RW=1; }

void display_LCD_string(uchar *p)//字符串输出函数 { while(*p)

{ LCD_w_dat(*p); p++; delay1ms(10); }}

void gotoxy(unsigned x,unsigned y) //定位 ,x为行,y为列 { if(x==1) LCD_w_com(0x80+y); else LCD_w_com(0xC0+y); }

4.6 本章小结

本章对整个系统所包含的几个模块进行了详细的介绍和设计,包括TCS3200D驱动模块、TCS3200D颜色采集模块、LED补光模块以及LCD1602液晶显示模块。其中TCS3200D颜色采集模块、LCD1602液晶显示模块是最重要的部分。颜色采集模块利用TCS3200D颜色传感器进行数据采集,以数字量输出,送到51单片机里进行数据处理,最后通过LCD1602液晶显示器显示出来。

30

单片机课程设计(论文)

5 色彩识别系统的实验

5.1色彩识别的实验过程

事物是随时间变化而运动变化的,由于本系统对软硬件关联性要求很高,其整个实验过程中间变化过程很复杂,一般仿真无法实现。

本设计的实验过程很简单,具体操作如下:首先将开发板接通电源,将色彩纸板放平,其次把设计中的颜色采集模块放在待测的纸板上,放正放平,最后用隔光较好的纸张或者盒子将颜色采集模块遮盖起来,然后用笔记录LCD显示的值,依次测量不同颜色的纸板并记录数据即可。

在实验过程中进行了多次的测量试验,记录的一些数据如下图5.1

颜色纯白结果第一次第二次第三次第一次第二次第三次第一次第二次第三次第一次第二次第三次R253255249166166166078075069035028031G246250252036047036131128133043045042B243253250044041040061062058107101105图像纯红纯绿纯蓝图5.1 实验数据

5.2实验结果分析

通过上面的实验仿真结果可以看出,如果被测物体的颜色中,红色成分比较多,那么在显示的输出结果中的R的值就大;同样的,如果绿色成分多,输出结果中的G的值就大,如果蓝色成分多,输出结果中的B的值就大。表格最后一列给出了这些颜色值对应的色彩图像,而表格的第一列给出了标准的色彩图像,可以看出,实际测得值与标准值之间还存在着一定的误差,这些误差产生的原因有很多,其中之一就是外界干扰光的存在,其次因为传感器芯片对光的敏感性不同,此外可能的原因包括补光模块中的LED二极管发出的光不稳定,还可能因为物体对光的反射能力不同等等,所有的这些原因导致了在测量的过程中存在的误差在所难免,只有不断的改善,以达到减小误差的目的,所以本系统还有待更进一步的研究以改善整个系统。

5.3 本章小结

通过实验,验证了色彩识别系统的可行性,通过对纯白色、纯红色、纯绿色、纯蓝色

31

单片机课程设计(论文)

四个纸板的检测,验证了本系统的确可以完成预期的任务,实现系统功能,但是与其真实值之间还有一定的误差,这也是本系统的不完善之处,这也为以后的更完善的功能更强大的精确度更高的色彩识别系统打了一个结实的基础,为以后更好的完善和简化色彩识别系统做下了铺垫。

32

单片机课程设计(论文)

6 结论与展望

6.1 结论

本文就色彩识别系统的原理及实现做了研究。现将本论文所做的主要工作内容总结如下:

(1) 建立颜色识别系统的模型,推算出颜色识别的算法。 (2) 介绍单片机等主要模块的的功能及优势。 (3) 对系统进行整体的软硬件设计。

(4)编写程序计算RGB三种颜色值,然后进行测试实验,以验证论文中结论的准确性。

总的来说,本论文是以STC89C52RC单片机为基础,利用TCS3200D颜色传感器模块,LCD1602液晶显示模块实现色彩识别系统的设计,并进行了色彩识别的测试实验。其中,色彩识别的算法实现原理和各模块的实现是本论文研究的重点。

由于本人水平有限,在本文的研究过程中也存在着一些不足之处:色彩识别的核心难点是RGB三种颜色测量的算法设计,算法的优劣程度很大程度上决定了色彩识别系统的优劣,而难以建立精确的测量算法。

6.2 展望

色彩识别技术是现代工业化、自动化社会的一门重要技术。根据本文己完成的工作,对需要进行的下一步研究工作做如下展望:

(1)完善色彩处理的算法。本文对测得的RGB三种颜色的频率值只取了前三位,所以在精确度上不够精确,因此需要建立更精确的色彩处理算法,以使测量结果更准确。 (2)没有对所测色彩进行过多的色彩区分。在以后的工作中需要对色彩空间进行划分,规划出不同的色彩区间,以便可以实现更准确的色彩识别。

从本设计的色彩识别系统到实际的产品,还有很多的不足之处,需要考虑系统的稳定性、抗干扰能力、供电等等问题,因而还有大量的研究内容,需要我们进行更深入的研究。我相信在不久的将来,色彩识别系统将被广泛应用到各个行业之中。

33

单片机课程设计(论文)

参考文献

[1] 李朝青.单片机原理及借口技术[M].北京航空航天大学出版社;2000. [2] 杨家国.单片机原理与应用及C51程序设计[J].电子报,2009.

[3] 张松灿,肖本贤.高分辨率颜色传感器TCS3200D的原理和应用[D].合肥工业大学.2005. [4] 李广弟,朱月秀,王秀山.单片机基础[M].北京航空航天大学出版社,2001.7. [5] 张 伟.单片机原理及应用[M].机械工业出版社,2002.1.

[6] 卢川英, 于浩成, 孙敬辉, 孟 中. 基于 TCS3200D传感器的颜色检测系统[J].吉林大学学报.2008.11. [7] 杨 杰,谢元媛. 基于 TCS3200D芯片颜色测量系统的研究[J]. 新疆电力设计院.2010. [8]李爱勤,张绪坤.基于TCS3200D与LabVIEW的颜色测量系统[D].南京航空大学.2007.11. [9] 王 晴,尹志勇.基于颜色传感器 TCS3200D的新型经皮测疸仪的设计[D]. 第三军医大学.2008.6. [10]王安敏,尚绪超,赵龙.基于颜色传感器TCS3200D的油水界面检测仪的设计[D].青岛科技大学.2010.9. [11]丁 茹,李 刚. 可编程彩色光/频转换器TCS3200D及其应用[D]. 天津工程师范学院.2005.

[12]潘海鸿, 陈 琳, 段素强,梁成业,杨 微. 新型颜色传感器TCS3200D应用于CRRT机漏血检测的可行性研究[D]. 广西大学.2008.

[13]胡建民. 颜色传感器TCS3200D及颜色识别电路[J].单片机与嵌入式系统应用.2006. [14]刘增辉. 颜色传感器技术研究进展[J]. 传感器技术.2003.

[15]庞小兵,黄东胜,邹富顺.在线式光纤传感颜色识别系统的设计[D]. 自动化仪表.2010.9. [16]郑喜凤, 黄 娉,刘贵华. 三基色亮度计的设计和应用[J]. 微计算机信息.2009.

[17]刘双喜,丁筱玲. 基于TCS3200D的便携式数字化调色仪的系统设计[J].电子元器件应用.2007. [18] 可荣硕,马晓军,张思博. 基于RGB色彩空间的颜色识别系统设计[J]. 微计算机信息.2010. [19] 胡建民. 颜色传感器TCS3200D及颜色识别电路 [EB/OL].

[20] 张松灿, 肖本贤. 高分辨率颜色传感器TCS3200D的原理和应用[EB/OL].

[21李爱勤, 张绪坤. 基于TCS3200D与LabVIEW的颜色测量系统 [J]. 电子科技, 2008, 21(6): 26-29. [22] 卢川英, 等. 基于TCS3200D传感器的颜色检测系统 [J]. 吉林大学学报 (信息科学版), 2008, 26(6) . [23] 颜色传感器TCS3200D [EB/OL].

34

单片机课程设计(论文)

附录1 程序代码

#include #include

#define uchar unsigned char #define uint unsigned int uchar str[3]; uchar *s;

uint date; //定义数据类型 uint dispcount=0; //中断计数 uint lck=0; //定时器计数 uint disp=0; //频率值 sbit RS=P2^0; //数据/命令选择端,高电平-数据寄存器,低-指令寄存器 sbit RW=P2^1; //读/写选择端,高-读操作,低-写操作 sbit E=P2^7; //使能端 /************************************************** 延时函数,延时1ms

**************************************************/ void delay1ms(uint i) { uint j; while(i--)

{ or(j=0;j<125;j++); } }

/************************************************** 传感器测量模块

**************************************************/

void initTimer(void) // 定时器初值1ms { TMOD=0x0; TH0=0xe0; TL0=0x18; }

/**************************************************

定时器函数

**************************************************/

void timer0(void) interrupt 1 //定时1秒,每一秒中断一次,所记得数就是频率 { TH0=0xe0; TL0=0x18; lck++; if(lck==1000)

{ disp=dispcount; lck=0;dispcount=0; } }

/**************************************************

中断函数

***************************************************/ void int0(void) interrupt 0 //外部中断0,TCS3200D的OUT端口接到INT0端口

35

单片机课程设计(论文)

{ dispcount++; //每一次中断,计数加一 }

/**************************************************

RGB三种颜色通道选择模块

**************************************************/

void red() //红色通道 { P1=0x01;delay1ms(1100); date=disp/100;date=(255.0/153)*date; //153是在纯白情况下测得的红色通道频率值 }

void green()//绿色通道

{ P1=0xc1;delay1ms(1100); date=disp/100;date=(255.0/145)*date; //145是在纯白情况下测得的绿色通道频率值 }

void blue() //蓝色通道 { P1=0x81;delay1ms(1100); date=disp/100;date=(255.0/183)*date; //183是在纯白情况下测得的蓝色通道频率值 }

/************************************************** 整型数转化成字符串,以便LCD输出显示

**************************************************/ uchar * int2str(uint d) { if(d>=255) {d=255;

str[0]='0'+d/100; str[1]='0'+d0/10; str[2]='0'+d; } else { str[0]='0'+d/100; str[1]='0'+d0/10; str[2]='0'+d; } return str; }

/**************************************************

LCD显示模块

**************************************************/ void LCD_w_com(unsigned com) //写命令函数,com为 要写的指令 { RW=0; RS=0; E=1; P0=com; delay1ms(10); E=0; RW=1; }

void LCD_w_dat(uchar dat) // 写数据 函数, 写要显示的数据 { RW=0; RS=1; E=1; P0=dat; delay1ms(10); E=0; RW=1; }

void init_LCD(void) // 初始化lcd

{ LCD_w_com(0x38); // lcd为两行显示8位数据线有效 LCD_w_com(0x0e); // 显示字符 关闭光标

36

单片机课程设计(论文)

LCD_w_com(0x06); // 输入方式设置 光标向右移动一位 ac-1 }

void clear_LCD() //清屏 {

LCD_w_com(0x01); //清屏指令 LCD_w_com(0x02); // 光标归位 即光标置于左上位置 }

void display_LCD_string(uchar *p) //字符串输出函数 { while(*p)

{ LCD_w_dat(*p); p++; delay1ms(10); } }

void gotoxy(unsigned x,unsigned y) //定位 ,x为行,y为列 { if(x==1) LCD_w_com(0x80+y); elseLCD_w_com(0xC0+y); }

/************************************************** 主函数

**************************************************/ void main(void)

{ IT0=1; //INT0下降沿中断 EX0=1; //允许INT0中断 initTimer(); //装入初值 TR0=1; //开定时器T0 ET0=1; //允许T0中断 EA=1; //中断总控制

init_LCD //LCD初始化 clear_LCD(); //清屏 while(1)

{ gotoxy(1,00); display_LCD_string(\//调用红色通道并显示色彩值 gotoxy(1,02); s = int2str(date); display_LCD_string(s); gotoxy(1,05); display_LCD_string(\

gotoxy(1,07); display_LCD_string(\//调用绿色通道并显示色彩值 gotoxy(1,011); s = int2str(date);display_LCD_string(s); gotoxy(1,014); display_LCD_string(\

gotoxy(2,00); display_LCD_string(\/调用蓝色通道并显示色彩值 gotoxy(2,02); s = int2str(date); display_LCD_string(s); gotoxy(2,05); display_LCD_string(\ } }

37

单片机课程设计(论文)

附录2 系统电路总图

38

本文来源:https://www.bwwdw.com/article/bgxg.html

Top