51单片机驱动TCS3200颜色识别传感器

这篇具有很好参考价值的文章主要介绍了51单片机驱动TCS3200颜色识别传感器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机驱动TCS3200颜色识别传感器

TCS3200

简介

TCS3200颜色传感器是一款全彩的颜色检测器,包括了一块TAOS TCS3200RGB感应芯片和4个白色LED灯,TCS3200能在一定的范围内检测和测量几乎所有的可见光。TCS3200有大量的光检测器,每个都有红绿蓝和清除4种滤光器。每种颜色滤光器均匀地按数组分布来清除颜色中偏移位置的颜色分量。内置的振荡器能输出方波,其频率与所选择的光的强度成比例关系,光线越强,内置的振荡器方波频率越高。

输出频率与滤光器选择说明

TCS3200D的OUT脚输出的信号频率与内置振荡器频率的比率因子可以通过S0,S1的上下电平来选择,具体入下图
51单片机驱动TCS3200颜色识别传感器
根据图中的指示配置S0,S1的电平可以把输出的信号频率设置为100%、20%、2%与0%,分别为600KHz、120KHz与12KHz。
由三原色原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色,TCS3200D有4个滤光器可以阻止某一种颜色的光通过,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。
TCS3200传感器上的红、绿、蓝、和清除4种滤光器,可以通过其引脚S2和S3的上下电平来选择滤波器模式,如如下图。
51单片机驱动TCS3200颜色识别传感器

实验说明

本次实验将用51单片机驱动TCS3200颜色识别模块,通过1602LCD屏幕把识别到的三原色打印出来。
51单片机(STC89C52RC)

51单片机驱动TCS3200颜色识别传感器

点击图片购买

1602LCD液晶显示器

51单片机驱动TCS3200颜色识别传感器

点击图片购买

接线

51单片机 TCS3200 1602LCD
5V VCC
GND GND
P1_1 S2
P1_0 S3
P3_5 OUT
P2 DATA
P0_7 RS
P0_6 RW
P0_5 EN

51单片机驱动TCS3200颜色识别传感器
由0原理图可知,S0,S1已经上拉,输出信号频率为100%
51单片机驱动TCS3200颜色识别传感器

驱动

驱动说明

设置定时器为一固定时间(例如10 ms),然后通过选择三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。

主要代码

void c10ms_out() interrupt 1
{  uint temp;
        test_pin=!test_pin; //测试定时器中断频率引脚,可以用示波器观察
        TR0=0;              //关闭定时
        TR1=0;              //关闭计数
 //   count+1实现先检测绿色,再检测蓝色,然后检测红色,循环检测       
        if(count==0)
        {
        count++;    
        s2=1;s3=1;             //选择滤波器为绿色     
	    
		temp=(8<<TH1)+TL1;    //计算这段时间内 TCS230 的输出脉冲数	
		temp/=rp;			
        conversion(temp);
		disp_R[2]=ge;         //因为这次的中断,是上次选择滤波器的数值
		disp_R[1]=shi;
		disp_R[0]=bai;
        } 

        else if(count==1)
        {            
        count++;
        s2=1;s3=0;            //选择滤波器为蓝色
		temp=(8<<TH1)+TL1;    //计算这段时间内 TCS230 的输出脉冲数	
		temp/=gp;			
        conversion(temp);
		disp_G[2]=ge;         //因为这次的中断,是上次选择滤波器的数值
		disp_G[1]=shi;
		disp_G[0]=bai;
        }

        else if(count==2)
        {            
        count=0;
        s2=0;s3=0;            //选择滤波器为红色

		temp=(8<<TH1)+TL1;    //计算这段时间内 TCS230 的输出脉冲数	
		temp/=bp;		
        conversion(temp);
  	    disp_B[2]=ge;         //因为这次的中断,是上次选择滤波器的数值
		disp_B[1]=shi;
		disp_B[0]=bai;

        }

     //定时器计数器重赋初值
     TH0=0xE0;
     TL0=0x00; //11。0592M 晶振,为10ms
     TL1=0x00;//计数器清零
     TH1=0x00;//计数器清零
     TR0=1;   //打开定时器
     TR1=1;   //打开计数器
}

主函数

void main()
{

      delay(10); 
      InitLcd();      //lcd初始化
	  s2=0;           //初始设定S2引脚
	  s3=0;           //初始设定S3引脚
      t0_init();      //定时计数初使化

     while(1)
     {
     
        DisplayOneChar(0,0,'G'); 
		DisplayOneChar(1,0,':'); 
		DisplayOneChar(2,0,disp_G[0]); 
		DisplayOneChar(3,0,disp_G[1]); 
		DisplayOneChar(4,0,disp_G[2]); 		//绿

        DisplayOneChar(6,0,'B'); 
		DisplayOneChar(7,0,':'); 
		DisplayOneChar(8,0,disp_B[0]); 
		DisplayOneChar(9,0,disp_B[1]); 
		DisplayOneChar(10,0,disp_B[2]);     //蓝


		DisplayOneChar(0,1,'R'); 
		DisplayOneChar(1,1,':'); 
		DisplayOneChar(2,1,disp_R[0]); 
		DisplayOneChar(3,1,disp_R[1]); 
		DisplayOneChar(4,1,disp_R[2]); 	    //红				

        delay(100) ; 


     }
}

实验现象

51单片机驱动TCS3200颜色识别传感器

51单片机驱动TCS3200颜色识别传感器

验证:

51单片机驱动TCS3200颜色识别传感器

实验注意事项:

颜色识别时要避免外界光线的干扰,否则会影响颜色识别的结果。最好把传感器、光源等放置在一个密闭、无反射的箱子中进行测试,上面的实验由于环境与手机拍视角度光线的反射等因素影响,看着会有些许色差。文章来源地址https://www.toymoban.com/news/detail-413474.html

到了这里,关于51单片机驱动TCS3200颜色识别传感器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(48)
  • 单片机】51单片机,TLC2543,驱动程序,读取adc

    TLC2543 是一款 12 位精密模数转换器 (ADC)。 1~9、11、12——AIN0~AIN10为模拟输入端; 15——CS 为片选端; 17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式) 16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。) 19——EOC为转换结束端

    2024年02月14日
    浏览(56)
  • 【51单片机】直流电机驱动(PWM)(江科大)

    · 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 · 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 · 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 电机的驱动无法

    2024年02月20日
    浏览(50)
  • 基于51单片机的步进电机驱动,亲测无误

    这一次要分享的项目是最近接单做的一个小玩意儿,基于51单片机的步进电机驱动。最近积压了两个月的小项目会在后面陆续发出,好了回归正题。本次步进电机驱动的话主要实现的功能就是实现: 步进电机的加速和减速,正转反转和开启或者停止工作。用LCD1602显示当前工作

    2023年04月09日
    浏览(47)
  • 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(42)
  • 51单片机驱动8位数码管(74HC595驱动)滚动显示

    原文链接:https://www.yourcee.com/newsinfo/2929591.html 点击图片购买 主要关注下供电电压是3.0-5.0v(建议5V),请在规定范围内供电。 模块上芯片引出5个引脚,芯片引脚与模块引脚对应关系是:VCC-VCC SCK-SCLK, RCK-RCLK,SER-DIO,GND-GND 可以对比程序学习时序图,便于理解。 1.显示异常可排除

    2024年02月15日
    浏览(58)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(42)
  • 【Proteus仿真】| 51单片机——MAX7219 驱动数码管

    系列文章 todo: 该文章目的:让大家快速上手——知道如何使用MAX7219。故MAX7219就不做详细介绍了(需要了解的话可以看其他博文及数据手册)。 max7219是一个串行输入/输出 共阴极 数码管(点阵)驱动芯片。1个MAX7219最多可以驱动8位数码管。它具有自动扫描(切换位),BCD译码器(即

    2024年02月15日
    浏览(42)
  • 51单片机使用TM1638驱动的数码管键盘模块

    前几天差不多把清翔的视频教程写完了,然后玩了两天,这次准备把以前买的TM1638芯片驱动的数码管按键模块用在51单片机上。 这个模块我在pdd上买的,用了2块的优惠券后付款7元包邮,价格还行吧,对比了下这个价格几乎就是最低价了。TM1638芯片都要1块多,再加上PCB,焊接

    2024年02月03日
    浏览(99)
  • 51单片机按键识别与LED显示(显示0-9的数字)

    实验内容: 单片机外接10个按键,编号为0-9,编程实现任意按键则LED显示对应数字 1.共阴共阳两种不同的方式  2.数码管显示表  3.矩阵键盘介绍 矩阵键盘 是 单片机 外部设备中所使用的排布类似于 矩阵 的 键盘 组。  矩阵 式结构的 键盘 显然比直接法要复杂一些,识别也要

    2024年02月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包