找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

GY-31 TCS230颜色传感器如何将数据显示在串口助手上

查看数: 3121 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-12-30 22:07

正文摘要:

各位大佬,大家好,我做的这个是GY-31颜色传感器显示在液晶屏LCD1602上RGB三色代码的一个功能,现在我能成功的实现RGB三色代码在LCD屏上,但是我不知道该如何将程序中的三色代码显示在串口助手上,请问有大佬 ...

回复

ID:677868 发表于 2019-12-31 17:32
2032139772 发表于 2019-12-31 11:10
直接采用上面的程序实现就可以了,之前我也是在想别的方法,最后就做好了

请问方便联系吗,我想私下问问你最后是怎么做好的,十分感谢
ID:677868 发表于 2019-12-31 16:14
2032139772 发表于 2019-12-31 11:10
直接采用上面的程序实现就可以了,之前我也是在想别的方法,最后就做好了

能QQ联系问下你吗 十分感谢  我不是很太懂 因为有两个程序
ID:213173 发表于 2019-12-31 15:16
由于你的程序使用两个定时器完成颜色采样,所以采样完成后要关闭定时器,输出一个标志,在主程序中查询这个标志将结果用串口发送到上位机。给你一个串口参考程序,原来的LCD显示程序也要作相应修改。

  1. //重新定义显示缓存数组
  2. uchar disp[]="R:000G:000B:000";
  3. //改写此程序,将读取的数据按位分解保存,同样可用于LCD显示
  4. void conversion(uint temp_data)  
  5. {
  6.         disp[2]=temp_R/100%10+'0';
  7.         disp[3]=temp_R/10%10+'0';
  8.         disp[4]=temp_R%10++'0';
  9.         disp[7]=temp_G/100%10+'0';
  10.         disp[8]=temp_G/10%10+'0';
  11.         disp[9]=temp_G%10++'0';
  12.         disp[12]=temp_B/100%10+'0';
  13.         disp[13]=temp_B/10%10+'0';
  14.         disp[14]=temp_B%10++'0';
  15. }
  16. //定时器1分时工作于颜色采样和串口切换
  17. //下面两个程序放在主函数中
  18. //注意:只发不收不要开串口中断
  19. /**********串口发送函数*************/
  20. void SendOneByte(uchar c)
  21. {
  22.     SBUF = c;                //发送数据
  23.     while(!TI);        //等待发送完成
  24.     TI = 0;                        //发送中断请求标志位清0
  25. }

  26. void analysis()
  27. {
  28.         uchar i;
  29.         if(flag==1)//使能标志,在定时器中断中当完成一次完整颜色采样flag置1
  30.         {
  31.                 flag=0;//使能标志清0
  32.                 //定时器1工作于串口设置
  33.                 SCON = 0x50;                //8位数据,可变波特率
  34.                 TMOD &= 0x0F;                //清除定时器1模式位,保持定时器0模式不变
  35.                 TMOD |= 0x20;                //设定定时器1为8位自动重装方式
  36.                 TL1 = 0xFD;                //设定定时初值(波特率9600)
  37.                 TH1 = 0xFD;                //设定定时器重装值
  38.                 ET1 = 0;                //禁止定时器1中断
  39.                 EA=0;                        //关闭总中断,保证串口发送过程不被干扰
  40.                 TR1 = 1;                //启动定时器1
  41.                 for(i=0;i<100;i++);//小延时等待串口稳定
  42.                 for(i=0;i<14;i++)//串口发送数据串
  43.                         SendOneByte(disp[i]);
  44.                 //恢复定时器1工作于颜色采样设置
  45.                 TMOD &= 0x0F;                //清除定时器1模式位,保持定时器0模式不变
  46.                 TMOD |= 0x50;                //设定定时器1为外部计数模式
  47.                 TH1=0x00;         //计数初值
  48.                 TL1=0x00;
  49.                 EA=1;            //开总中断
  50.                 TR0=1;
  51.                 TR1=1;
  52.         }
  53. }
复制代码
ID:517333 发表于 2019-12-31 11:10
直接采用上面的程序实现就可以了,之前我也是在想别的方法,最后就做好了
ID:215430 发表于 2019-12-31 10:54
很好感谢楼主分享verygood  nicefor you
ID:677868 发表于 2019-12-31 10:33
51hei**1140 发表于 2019-12-31 09:55
你好!
增加一个串口发送函数;
把 RGB值发送给上位机。

您好,请问是在我原程序上添加串口发送函数吗,能否具体指教一下呢,留下联系方式可以吗?万分感谢。
ID:648281 发表于 2019-12-31 09:55
你好!
增加一个串口发送函数;
把 RGB值发送给上位机。

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

Powered by 单片机教程网

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