标题: TCS3200颜色传感器配套资料,含调试程序原理图,结构图 [打印本页]

作者: 菜鸟YGC    时间: 2017-4-7 11:01
标题: TCS3200颜色传感器配套资料,含调试程序原理图,结构图
这次课程设计主要用的TCS3200颜色传感器,附件里面有传感器的原理,结构图,调试例程

TCS3200颜色传感器简介:


TCS3200颜色传感模块电路及实验电路图:





控制板是通用型的,可以控制语音模块 、超声波模块、AD模块等,如果只是颜色传感器用,AT24C01部分、按键部分可以不焊接;
超声波控制板电路原理图:


51单片机源程序:
  1. /*模块的使用方法:把板距离白纸2CM处开机,使输出的数据位FFFFFFF(白平衡),接下来就可以正常使用
  2. 实现功能:对颜色传感器输出RGB
  3. 使用芯片:AT89S52 或者 STC89C52 或AT89S51 STC89C51
  4. 晶振:12MHZ
  5. 编译环境:Keil
  6. 作者:zhengzhongxign39*/
  7. #include <reg52.h>
  8. #define uchar unsigned char
  9. #define uint  unsigned int
  10. //==============LCD1602接口连接方法=====================
  11. /*-----------------------------------------------------
  12.        |DB0-----P0.0 | DB4-----P0.4 | RW-------P2.3    |
  13.        |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.4    |
  14.        |DB2-----P0.2 | DB6-----P0.6 | E--------P2.2    |
  15.        |DB3-----P0.3 | DB7-----P0.7 |
  16.     ---------------------------------------------------*/
  17. //================================================*/              
  18. #define LCM_Data     P0    //LCD1602数据接口
  19. #define Busy         0x80   //用于检测LCM状态字中的Busy标识
  20. sbit    LCM_RW     = P2^3;  //读写控制输入端,LCD1602的第五脚
  21. sbit    LCM_RS     = P2^4;  //寄存器选择输入端,LCD1602的第四脚
  22. sbit    LCM_E      = P2^2;  //使能信号输入端,LCD1602的第6脚

  23. //=================颜色传感模块连接=====================
  24. /*-----------------------------------------------------
  25.        |EO-----GND
  26.        |S0-----VCC | S2-----P2.0 | OUT-------P3.5
  27.        |S1-----VCC | S3-----P2.1 |
  28.   ---------------------------------------------------*/
  29. sbit    tcs230_s2=P2^0;//TCS230 S2接单片机P2.0
  30. sbit    tcs230_s3=P2^1;//TCS230 S3接单片机P2.1
  31. sbit    tcs230_en=P3^0; //TCS230 EN(E0)接GND
  32. //**************函数声明***************************************
  33. void    WriteDataLCM                (uchar WDLCM);//LCD模块写数据
  34. void    WriteCommandLCM        (uchar WCLCM,BuysC); //LCD模块写指令
  35. uchar   ReadStatusLCM(void);//读LCD模块的忙标
  36. void    DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符
  37. void    LCMInit(void);//LCD初始
  38. void    DelayMs(uint Ms);//1MS基准延时程序
  39. void    baipingheng();//白平衡子程序
  40. void    celiang();//实际颜色程序
  41. uint    ryz,gyz,byz;//分别定义红色因子 绿色因子 蓝色因子
  42. uint    rb,gb,bb;//RGB值
  43. uchar   tab1[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  44. //***********************主程序******************************
  45. main()   
  46. {   
  47.    TMOD=0x51;//设定T0以工作方式1定时10毫秒
  48.    LCMInit();//LCD初始
  49.    baipingheng();//上电时先白平衡一次
  50.    while(1)
  51.    {
  52.        celiang();//颜色测试
  53.        DisplayOneChar(0, 0,'R');//以十进制显示RGB中红色的分值
  54.        DisplayOneChar(0, 1, rb/100+0x30); //显示百位数据
  55.        DisplayOneChar(0, 2, rb/10%10+0x30);//显示十位数据
  56.        DisplayOneChar(0, 3, rb%10+0x30);//显示个位数据
  57.        DisplayOneChar(0, 5,'G');//以十进制显示RGB中绿色的分值
  58.        DisplayOneChar(0, 6, gb/100+0x30); //显示百位数据
  59.        DisplayOneChar(0, 7, gb/10%10+0x30);
  60.        DisplayOneChar(0, 8, gb%10+0x30);
  61.        DisplayOneChar(0, 10,'B');//以十进制显示RGB中蓝色的分值
  62.        DisplayOneChar(0, 11, bb/100+0x30);
  63.        DisplayOneChar(0, 12, bb/10%10+0x30);
  64.        DisplayOneChar(0, 13, bb%10+0x30);
  65.        //*****在LCD1602的第二行以16进制显示RGB*******************
  66.        DisplayOneChar(1, 1, tab1[rb/16]);
  67.        DisplayOneChar(1, 2, tab1[rb%16]);
  68.        DisplayOneChar(1, 3, 'H');
  69.        DisplayOneChar(1, 6, tab1[gb/16]);
  70.        DisplayOneChar(1, 7, tab1[rb%16]);
  71.        DisplayOneChar(1, 8, 'H');
  72.        DisplayOneChar(1, 11,tab1[bb/16]);
  73.        DisplayOneChar(1, 12,tab1[bb%16]);
  74.        DisplayOneChar(1, 13,'H');
  75.        DelayMs(250);//每隔0.25秒测试一次颜色
  76.    }
  77. }
  78. //******************************************************
  79. //白平衡子程序
  80. void   celiang()
  81. {
  82.      //*********求R值************************************
  83.      TH0=(65536-10000)/256;
  84.            TL0=(65536-10000)%256;
  85.      TH1=0;
  86.      TL1=0;
  87.      tcs230_s2=0;
  88.      tcs230_s3=0;//选择红色滤光器
  89.      tcs230_en=0;
  90.      TR0=1;//10毫秒开始计时
  91.      TR1=1;//开始计数
  92.      while(TF0==0);//等待定时器溢出
  93.      TF0=0;//清楚定时器0溢出标志
  94.      TR0=0;//关闭定时0
  95.      TR1=0;
  96.      rb=(unsigned long)(TH1*256+TL1)*255/ryz;
  97.      if(rb>255)rb=255;//判断RGB值是否合法
  98.      //***********求B值**************************************
  99.      TH0=(65536-10000)/256;
  100.            TL0=(65536-10000)%256;
  101.      TH1=0;
  102.      TL1=0;
  103.      tcs230_s2=0;
  104.      tcs230_s3=1;//选择蓝色滤光器
  105.      TR0=1;//10毫秒开始计时
  106.      TR1=1;//开始计数
  107.      while(TF0==0);//等待定时器溢出
  108.      TF0=0;//清楚定时器0溢出标志
  109.      TR0=0;//关闭定时0
  110.      TR1=0;
  111.      bb=(unsigned long)(TH1*256+TL1)*255/byz;
  112.      if(bb>255)bb=255;//判断RGB值是否合法     
  113.      //***********求G值**************************************   
  114.      TH0=(65536-10000)/256;
  115.            TL0=(65536-10000)%256;
  116.      TH1=0;
  117.      TL1=0;
  118.      tcs230_s2=1;
  119.      tcs230_s3=1;//选择绿色滤光器
  120.      TR0=1;//10毫秒开始计时
  121.      TR1=1;//开始计数
  122.      while(TF0==0);//等待定时器溢出
  123.      TF0=0;//清楚定时器0溢出标志
  124.      TR0=0;//关闭定时0
  125.      TR1=0;
  126.      tcs230_en=1;
  127.      gb=(unsigned long)(TH1*256+TL1)*255/gyz;
  128.      if(gb>255)gb=255;//判断RGB值是否合法  
  129. }
  130. //******************************************************
  131. //白平衡子程序
  132. void    baipingheng()
  133. {
  134.      //**************求取红色因子***********************
  135.      TH0=(65536-10000)/256;
  136.            TL0=(65536-10000)%256;
  137.      TH1=0;
  138.      TL1=0;
  139.      tcs230_s2=0;
  140.      tcs230_s3=0;//选择红色滤光器
  141.      tcs230_en=0;
  142.      TR0=1;//10毫秒开始计时
  143.      TR1=1;//开始计数
  144.      while(TF0==0);//等待定时器溢出
  145.      TF0=0;//清楚定时器0溢出标志
  146.      TR0=0;//关闭定时0
  147.      TR1=0;
  148.      ryz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
  149.      //**************求取蓝色因子***********************
  150.      TH0=(65536-10000)/256;
  151.            TL0=(65536-10000)%256;
  152.      TH1=0;
  153.      TL1=0;
  154.      tcs230_s2=0;
  155.      tcs230_s3=1;//选择蓝色滤光器
  156.      TR0=1;//10毫秒开始计时
  157.      TR1=1;//开始计数
  158.      while(TF0==0);//等待定时器溢出
  159.      TF0=0;//清楚定时器0溢出标志
  160.      TR0=0;//关闭定时0
  161.      TR1=0;
  162.      byz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
  163.      //**************求绿红色因子***********************
  164.      TH0=(65536-10000)/256;
  165.            TL0=(65536-10000)%256;
  166.      TH1=0;
  167.      TL1=0;
  168.      tcs230_s2=1;
  169.      tcs230_s3=1;//选择绿色滤光器
  170.      TR0=1;//10毫秒开始计时
  171.      TR1=1;//开始计数
  172.      while(TF0==0);//等待定时器溢出
  173.      TF0=0;//清楚定时器0溢出标志
  174.      TR0=0;//关闭定时0
  175.      TR1=0;
  176.      tcs230_en=1;
  177.      gyz=TH1*256+TL1;//其实这里的比例因子应该为255/(TH1*256+TL1)
  178. }
  179. /*======================================================================
  180. LCM初始化

  181. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



下载:
TCS3200颜色传感器配套资料.rar (603.14 KB, 下载次数: 504)

作者: 寂寞之雨3    时间: 2017-5-10 20:15
急需TCS3200测试,求资料,谢谢,发到邮箱758759506@qq.com
作者: jessen    时间: 2017-7-2 18:25
不错的。
作者: 1231231434    时间: 2017-8-17 15:22
厉害了
作者: jansui008    时间: 2017-11-14 13:17
不错的。GOOD
作者: my210    时间: 2017-12-27 20:50
非常不错!
作者: liufeng180840    时间: 2018-1-3 13:48
我没有黑笔的,下载不来呀

作者: lingjianjie    时间: 2018-1-7 16:17
学习了
作者: 咖啡加冰    时间: 2018-1-8 18:25
学习了   下次用到了再来下载
作者: 布莱克泰戈    时间: 2018-1-8 18:33
学习了
作者: 旧时    时间: 2018-1-10 23:22
急  需
作者: Lanceden    时间: 2018-1-22 15:33
啊很想要资料,但是没有黑笔很难受了
作者: EVOLVINGINS    时间: 2018-2-26 11:12
好全面呀!!!下载的赶紧
作者: qjzyx    时间: 2018-2-26 11:58
有用,收藏,谢谢分享
作者: Jandia    时间: 2018-3-6 20:20
jessen 发表于 2017-7-2 18:25
不错的。

可不可以给我发一下?我没有黑币 2207442805@qq.com
作者: Jandia    时间: 2018-3-22 16:03
感谢!!
作者: Jandia    时间: 2018-3-22 16:24
如果我只是想要用传感器识别红 绿蓝三种颜色 通过三个LED灯的显示识别出颜色 那程序应该怎么写呢?
作者: jimfan    时间: 2018-3-23 10:27
谢谢,正好需要这个。可惜黑币不够
作者: AMXAZ    时间: 2018-3-23 15:05
没有黑笔,跪求资料929464561@qq.com  谢谢!
作者: baobao5225    时间: 2018-3-29 20:10
楼主,小白一个可不可以发一下学习资料,万分感谢,2570319687@qq.com
作者: 吾问无为谓1    时间: 2018-4-13 10:32
楼主有资料了吗,求分享
作者: 1782808675    时间: 2018-4-14 10:09
厉害了我的哥
作者: 未发生    时间: 2018-4-28 10:38
我的传感器stm32数据测的有问题,下载这个代码来测试是不是传感器tcs3200的问题
作者: dengyifenzhong    时间: 2018-5-2 15:49
好东西,但是发现颜色识别不是很准确的
作者: dengyifenzhong    时间: 2018-5-2 15:50
很不错,识别能力不强,误差较大
作者: yan960812    时间: 2018-5-8 08:20
很不错,给力的文字
作者: 公路小江湖    时间: 2018-5-10 17:04
缺黑笔, 楼主可否可以邮箱发一份2028388623@qq.com  不胜感激 !!!!
作者: zycs    时间: 2018-5-11 17:54
感谢楼主,注释很详细
作者: 4819142    时间: 2018-5-24 09:45
感谢楼主,注释很详细

作者: jiyione    时间: 2018-5-29 23:35
很不错的东西,谢谢
作者: a100670433    时间: 2018-7-8 22:52
没黑币啊
作者: 唯柚子茶尔    时间: 2018-7-21 17:07
学习了,谢谢
作者: 唯柚子茶尔    时间: 2018-7-21 17:09
好详细,赞一个
作者: li1263321    时间: 2018-8-5 09:25
学习了   下次用到了再来下载
作者: jojoisthebad    时间: 2018-8-12 22:03
多谢分享
作者: _jiapi    时间: 2018-8-14 16:40
借鉴学习,谢谢楼主
作者: 孔言88    时间: 2018-8-24 18:01
挺好的!!!!
作者: acp1234567    时间: 2018-9-4 13:48
非常感谢。
作者: 黄源富    时间: 2018-10-22 15:19
很给力
作者: labview学习    时间: 2018-10-23 23:37
大佬哦。。。。。。。。。。
作者: 大智若缺    时间: 2018-10-24 00:35
大佬牛逼      
作者: 大智若缺    时间: 2018-10-24 00:36
厉害了。。。。。
作者: wmmmmm1996    时间: 2018-10-25 09:17
很棒的资料
作者: Tristan    时间: 2018-10-25 15:28
很强啊。学习学习
作者: urbane1    时间: 2019-1-18 19:38
发我谢谢````799310568qq@.com
作者: kongdada    时间: 2019-2-16 17:00
EVOLVINGINS 发表于 2018-2-26 11:12
好全面呀!!!下载的赶紧

你有TCS3200的资料吗?能发给我一份吗?十分感谢  2264584107@qq.com
作者: shelter    时间: 2019-2-24 09:44
赞一个
作者: dengyifenzhong    时间: 2019-3-5 17:17

谢谢,正好需要这个。可惜黑币不够
作者: Strongest丶星空    时间: 2019-7-21 14:47
代码好像不全

作者: JIANGJUN888    时间: 2019-7-28 11:07
很给力!
作者: AKAJUNHAO    时间: 2019-7-28 11:12
很厉害啊
作者: 13542142729    时间: 2019-12-21 12:57
很给力
作者: zxcvzxcvzxcv    时间: 2020-3-15 17:21
(TH1*256+TL1)*255/gyz,这句语句中,为什么用到了255呢,不明白,求大神解释一下。
作者: zxcvzxcvzxcv    时间: 2020-3-25 20:25
Jandia 发表于 2018-3-22 16:24
**** 作者被禁止或删除 内容自动屏蔽 ****

你好,请问你的思路成功了吗,我也遇到了同样的问题,在颜色识别时不清楚
作者: buyuangudan1    时间: 2020-11-20 10:14

学习了   下次用到了再来下载
作者: wifingtta    时间: 2023-3-24 11:54
实测,程序没问题,测量还是比较准确,感谢楼主分享。学习了。注意:TCS3200受环境光照影响还是很大的,不同距离角度的光照都会造成测量值变化很大。
作者: wkman    时间: 2023-3-24 14:16
TCS230 是RGB发光色判读到,有没有类似是  CMYK色判读到传感器?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1