找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 28204|回复: 56
收起左侧

TCS3200颜色传感器配套资料,含调试程序原理图,结构图

  [复制链接]
ID:187017 发表于 2017-4-7 11:01 | 显示全部楼层 |阅读模式
这次课程设计主要用的TCS3200颜色传感器,附件里面有传感器的原理,结构图,调试例程

TCS3200颜色传感器简介:

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

0.png


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

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黑下载附件…………
复制代码

0.png

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

评分

参与人数 7黑币 +31 收起 理由
li1263321 + 5 很给力!
tytytyty + 5 很给力!
yancey + 3 很给力!
zzzaaaaa + 5 绝世好帖!
qjzyx + 4 赞一个!
沧浪 + 4 很给力!
650913794 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:198687 发表于 2017-5-10 20:15 | 显示全部楼层
急需TCS3200测试,求资料,谢谢,发到邮箱758759506@qq.com
回复

使用道具 举报

ID:160312 发表于 2017-7-2 18:25 | 显示全部楼层
不错的。
回复

使用道具 举报

ID:228085 发表于 2017-8-17 15:22 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:248874 发表于 2017-11-14 13:17 | 显示全部楼层
不错的。GOOD
回复

使用道具 举报

ID:268001 发表于 2017-12-27 20:50 | 显示全部楼层
非常不错!
回复

使用道具 举报

ID:270740 发表于 2018-1-3 13:48 | 显示全部楼层
我没有黑笔的,下载不来呀
回复

使用道具 举报

ID:76494 发表于 2018-1-7 16:17 | 显示全部楼层
学习了
回复

使用道具 举报

ID:273383 发表于 2018-1-8 18:25 | 显示全部楼层
学习了   下次用到了再来下载
回复

使用道具 举报

ID:273384 发表于 2018-1-8 18:33 | 显示全部楼层
学习了
回复

使用道具 举报

ID:274601 发表于 2018-1-10 23:22 | 显示全部楼层
急  需
回复

使用道具 举报

ID:278618 发表于 2018-1-22 15:33 | 显示全部楼层
啊很想要资料,但是没有黑笔很难受了
回复

使用道具 举报

ID:182821 发表于 2018-2-26 11:12 | 显示全部楼层
好全面呀!!!下载的赶紧
回复

使用道具 举报

ID:266116 发表于 2018-2-26 11:58 | 显示全部楼层
有用,收藏,谢谢分享
回复

使用道具 举报

ID:288395 发表于 2018-3-6 20:20 | 显示全部楼层

可不可以给我发一下?我没有黑币 2207442805@qq.com
回复

使用道具 举报

ID:288395 发表于 2018-3-22 16:03 | 显示全部楼层
感谢!!
回复

使用道具 举报

ID:288395 发表于 2018-3-22 16:24 | 显示全部楼层
如果我只是想要用传感器识别红 绿蓝三种颜色 通过三个LED灯的显示识别出颜色 那程序应该怎么写呢?
回复

使用道具 举报

ID:295833 发表于 2018-3-23 10:27 | 显示全部楼层
谢谢,正好需要这个。可惜黑币不够
回复

使用道具 举报

ID:295965 发表于 2018-3-23 15:05 | 显示全部楼层
没有黑笔,跪求资料929464561@qq.com  谢谢!
回复

使用道具 举报

ID:299076 发表于 2018-3-29 20:10 | 显示全部楼层
楼主,小白一个可不可以发一下学习资料,万分感谢,2570319687@qq.com
回复

使用道具 举报

ID:307153 发表于 2018-4-13 10:32 | 显示全部楼层
楼主有资料了吗,求分享
回复

使用道具 举报

ID:307727 发表于 2018-4-14 10:09 | 显示全部楼层
厉害了我的哥
回复

使用道具 举报

ID:101393 发表于 2018-4-28 10:38 | 显示全部楼层
我的传感器stm32数据测的有问题,下载这个代码来测试是不是传感器tcs3200的问题
回复

使用道具 举报

ID:191910 发表于 2018-5-2 15:49 | 显示全部楼层
好东西,但是发现颜色识别不是很准确的
回复

使用道具 举报

ID:191910 发表于 2018-5-2 15:50 | 显示全部楼层
很不错,识别能力不强,误差较大
回复

使用道具 举报

ID:324727 发表于 2018-5-8 08:20 | 显示全部楼层
很不错,给力的文字
回复

使用道具 举报

ID:326973 发表于 2018-5-10 17:04 | 显示全部楼层
缺黑笔, 楼主可否可以邮箱发一份2028388623@qq.com  不胜感激 !!!!
回复

使用道具 举报

ID:287899 发表于 2018-5-11 17:54 | 显示全部楼层
感谢楼主,注释很详细
回复

使用道具 举报

ID:337070 发表于 2018-5-24 09:45 | 显示全部楼层
感谢楼主,注释很详细
回复

使用道具 举报

ID:341023 发表于 2018-5-29 23:35 | 显示全部楼层
很不错的东西,谢谢
回复

使用道具 举报

ID:367564 发表于 2018-7-8 22:52 | 显示全部楼层
没黑币啊
回复

使用道具 举报

ID:376752 发表于 2018-7-21 17:07 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

ID:376752 发表于 2018-7-21 17:09 | 显示全部楼层
好详细,赞一个
回复

使用道具 举报

ID:383039 发表于 2018-8-5 09:25 | 显示全部楼层
学习了   下次用到了再来下载
回复

使用道具 举报

ID:124031 发表于 2018-8-12 22:03 | 显示全部楼层
多谢分享
回复

使用道具 举报

ID:303057 发表于 2018-8-14 16:40 来自手机 | 显示全部楼层
借鉴学习,谢谢楼主
回复

使用道具 举报

ID:241020 发表于 2018-8-24 18:01 | 显示全部楼层
挺好的!!!!
回复

使用道具 举报

ID:282795 发表于 2018-9-4 13:48 | 显示全部楼层
非常感谢。
回复

使用道具 举报

ID:412418 发表于 2018-10-22 15:19 | 显示全部楼层
很给力
回复

使用道具 举报

ID:409508 发表于 2018-10-23 23:37 | 显示全部楼层
大佬哦。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表