欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5548|回復: 4
打印 上一主題 下一主題
收起左側

GY-31 TCS3200顏色傳感器單片機源程序與資料下載

[復制鏈接]
跳轉到指定樓層
樓主
TCS3200的輔助設計電路原理圖如下:


單片機源程序如下:
  1. /*******************************************
  2. * 文件名: TCS3200顏色測試
  3. * 型號:   GY-31
  4. * 功能:   讀取RGB值
  5. * 單片機: STC89C52
  6. * 晶振:   11.0592m
  7. * 時間:   2011-3-20
  8. * LCD1602顯示R,G,B值
  9. /********************************************/
  10. //接線說明:
  11. //模塊S2-----單片機P1.1
  12. //模塊S3-----單片機P1.0
  13. //模塊OUT----單片機P3.5(計數器1輸入)
  14. //模塊VCC----單片機VCC
  15. //模塊GND----單片機GND
  16. //**********************************************
  17. #include<REG52.H>   
  18. #include<math.h>       //Keil library  
  19. #include<stdio.h>      //Keil library   
  20. #include<INTRINS.H>
  21. #define uchar unsigned char
  22. #define uint  unsigned int   
  23. #define DataPort P0       //LCD1602 數據端口   
  24. sbit    LCM_RS=P2^0;   //LCD1602 控制端口        
  25. sbit    LCM_RW=P2^1;   //LCD1602 控制端口   
  26. sbit    LCM_EN=P2^2;   //LCD1602 控制端口

  27. /**引腳定義**/  
  28. sbit s2=P1^1;        //TCS3200 S2
  29. sbit s3=P1^0;        //TCS3200 S3
  30.                      //TCS3200 S0 模塊內部默認上拉
  31.                      //TCS3200 S1 模塊內部默認上拉
  32.                      //TCS3200 OE 模塊內部接地
  33. sbit test_pin=P1^2;  //用示波器看這個引腳,可知道定時器中斷頻率
  34. //變量、常量定義
  35. uchar ge,shi,bai ;
  36. uchar rp=2,gp=2,bp=2; //定義比例因子,具體環境可以修改
  37. uchar count;          //顏色標志位(0:紅 1:綠 2:藍)

  38. //顯示數組
  39. uchar disp_R[3];  //紅
  40. uchar disp_G[3];  //綠
  41. uchar disp_B[3];  //藍

  42. //********定義函數*****************************
  43. void    delay(unsigned int k);
  44. void    InitLcd();
  45. void    WriteDataLCM(uchar dataW);
  46. void    WriteCommandLCM(uchar CMD,uchar Attribc);
  47. void    DisplayOneChar(uchar X,uchar Y,uchar DData);

  48. //*********LCD1602初始化**********************
  49. void InitLcd()               
  50. {            
  51.     WriteCommandLCM(0x38,1);   
  52.     WriteCommandLCM(0x08,1);   
  53.     WriteCommandLCM(0x01,1);
  54.     WriteCommandLCM(0x06,1);   
  55.     WriteCommandLCM(0x0c,1);
  56. }

  57. //**********檢測忙信號************************
  58. void WaitForEnable(void)   
  59. {                    
  60.     DataPort=0xff;        
  61.     LCM_RS=0;LCM_RW=1;_nop_();
  62.     LCM_EN=1;_nop_();_nop_();
  63.     while(DataPort&0x80);   
  64.     LCM_EN=0;               
  65. }
  66.                     
  67. //**********寫命令至LCD***********************
  68. void WriteCommandLCM(uchar CMD,uchar Attribc)
  69. {                    
  70.     if(Attribc)WaitForEnable();   
  71.     LCM_RS=0;LCM_RW=0;_nop_();
  72.     DataPort=CMD;_nop_();   
  73.     LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  74. }   
  75.                
  76. //**********寫數據至LCD************************
  77. void WriteDataLCM(uchar dataW)
  78. {                    
  79.     WaitForEnable();        
  80.     LCM_RS=1;LCM_RW=0;_nop_();
  81.     DataPort=dataW;_nop_();   
  82.     LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  83. }
  84.                     
  85. //*********寫一個字符數據到指定的目標***********
  86. void DisplayOneChar(uchar X,uchar Y,uchar DData)
  87. {                        
  88.     Y&=1;                        
  89.     X&=15;                        
  90.     if(Y)X|=0x40;                    
  91.     X|=0x80;            
  92.     WriteCommandLCM(X,0);        
  93.     WriteDataLCM(DData);        
  94. }

  95. //**********延時函數***************
  96. void delay(unsigned int k)   
  97. {                        
  98.     unsigned int i,j;               
  99.     for(i=0;i<k;i++)
  100.     {            
  101.     for(j=0;j<121;j++)            
  102.     {;}
  103.     }                        
  104. }                                    

  105. /*******************************************
  106. * 函數名稱: t0_init()
  107. * 函數功能: 定時器0初始化
  108. * 入口參數: 無
  109. * 出口參數: 無
  110. /********************************************/
  111. void t0_init()
  112. {
  113.      TMOD=0x51;        //T1計數 T0定時 工作方式1
  114.      
  115.      TH1=0x00;        //計數初值
  116.      TL1=0x00;

  117.      TH0=0xE0;
  118.      TL0=0x00;        //11。0592M 晶振10ms
  119.      EA=1;            //開中斷

  120.      ET0=1;        
  121.      TR0=1;           //啟動
  122.      TR1=1;
  123. }

  124. //*********************************************
  125. //數值轉換出個十百千的ASCII碼
  126. //*********************************************
  127. void conversion(uint temp_data)  
  128. {  
  129.     bai=temp_data/100+0x30 ;
  130.     temp_data=temp_data%100;   //取余運算
  131.     shi=temp_data/10+0x30 ;
  132.     ge=temp_data%10+0x30;      //取余運算
  133. }

  134. /*******************************************
  135. * 函數名稱: c10ms_out()
  136. * 函數功能: 定時中斷0服務程序
  137.             修改顏色標志disp_tc(0:紅 1:綠 2:藍)
  138.             設置S0 S1 S2 選擇濾波器
  139.             計算脈沖,讀取色值
  140. * 入口參數: 無
  141. * 出口參數: 無
  142. /********************************************/
  143. void c10ms_out() interrupt 1
  144. {  uint temp;
  145.         test_pin=!test_pin; //測試定時器中斷頻率引腳,可以用示波器觀察
  146.         TR0=0;              //關閉定時
  147.         TR1=0;              //關閉計數
  148. //   count+1實現先檢測綠色,再檢測藍色,然后檢測紅色,循環檢測      
  149.         if(count==0)
  150.         {
  151.         count++;   
  152.         s2=1;s3=1;             //選擇濾波器為綠色     
  153.       
  154.         temp=(8<<TH1)+TL1;    //計算這段時間內 TCS230 的輸出脈沖數   
  155.         temp/=rp;            
  156.         conversion(temp);
  157.         disp_R[2]=ge;         //因為這次的中斷,是上次選擇濾波器的數值
  158.         disp_R[1]=shi;
  159.         disp_R[0]=bai;
  160.         }

  161.         else if(count==1)
  162.         {            
  163.         count++;
  164.         s2=0;s3=1;            //選擇濾波器為藍色

  165.         temp=(8<<TH1)+TL1;    //計算這段時間內 TCS230 的輸出脈沖數   
  166.         temp/=gp;            
  167.         conversion(temp);
  168.         disp_G[2]=ge;         //因為這次的中斷,是上次選擇濾波器的數值
  169.         disp_G[1]=shi;
  170.         disp_G[0]=bai;
  171.         }

  172.         else if(count==2)
  173.         {            
  174.         count=0;
  175.         s2=0;s3=0;            //選擇濾波器為紅色
  176.       
  177.         temp=(8<<TH1)+TL1;    //計算這段時間內 TCS230 的輸出脈沖數   
  178.         temp/=bp;        
  179.         conversion(temp);
  180.           disp_B[2]=ge;         //因為這次的中斷,是上次選擇濾波器的數值
  181.         disp_B[1]=shi;
  182.         disp_B[0]=bai;

  183.         }

  184.      //定時器計數器重賦初值
  185.      TH0=0xE0;
  186.      TL0=0x00; //11。0592M 晶振,為10ms
  187.      TL1=0x00;//計數器清零
  188.      TH1=0x00;//計數器清零
  189.      TR0=1;   //打開定時器
  190.      TR1=1;   //打開計數器
  191. }


  192. /*******************************************
  193. * 函數名稱: main()
  194. /********************************************/
  195. void main()
  196. {

  197.       delay(10);
  198.       InitLcd();      //lcd初始化
  199.       s2=0;           //初始設定S2引腳
  200.       s3=0;           //初始設定S3引腳
  201.       t0_init();      //定時計數初使化

  202.      while(1)
  203.      {
  204.      
  205.         DisplayOneChar(0,0,'G');
  206.         DisplayOneChar(1,0,':');
  207.         DisplayOneChar(2,0,disp_G[0]);
  208.         DisplayOneChar(3,0,disp_G[1]);
  209.         DisplayOneChar(4,0,disp_G[2]);         //綠

  210.         DisplayOneChar(6,0,'B');
  211.         DisplayOneChar(7,0,':');
  212.         DisplayOneChar(8,0,disp_B[0]);
  213.         DisplayOneChar(9,0,disp_B[1]);
  214.         DisplayOneChar(10,0,disp_B[2]);     //藍


  215.         DisplayOneChar(0,1,'R');
  216.         DisplayOneChar(1,1,':');
  217.         DisplayOneChar(2,1,disp_R[0]);
  218.         DisplayOneChar(3,1,disp_R[1]);
  219.         DisplayOneChar(4,1,disp_R[2]);         //紅               

  220.         delay(100) ;


  221.      }
  222. }
復制代碼

程序下載:
GY-31顏色模塊發送資料.7z (1.65 MB, 下載次數: 111)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:990652 發表于 2021-12-10 19:07 | 只看該作者
有電路實圖嗎

回復

使用道具 舉報

板凳
ID:1016593 發表于 2022-4-13 14:44 | 只看該作者
請問一下,為什么上面的程序壓縮包里沒有啊
回復

使用道具 舉報

地板
ID:262 發表于 2022-4-13 16:28 | 只看該作者
yhmjjm 發表于 2022-4-13 14:44
請問一下,為什么上面的程序壓縮包里沒有啊

里面有,我找到了 在STC-GY-31顏色模塊測試 里面的STC51_TCS3200.C
回復

使用道具 舉報

5#
ID:1016593 發表于 2022-4-14 19:41 | 只看該作者
heicad 發表于 2022-4-13 16:28
里面有,我找到了 在STC-GY-31顏色模塊測試 里面的STC51_TCS3200.C

好的,謝謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表