久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TCS3200顏色傳感器51單片機例程及使用

[復制鏈接]
跳轉到指定樓層
樓主
ID:585817 發表于 2019-8-27 13:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
顏色傳感器的使用方法及源程序
/*實現功能:對顏色傳感器輸出RGB
得出數據后可到www點59178點com/tools/sejie.asp 查詢數據是否正確
使用芯片:AT89S52 或者 STC89C52 或AT89S51 STC89C51
晶振:12MHZ
編譯環境:Keil
作者:zhengzhongxign39*/
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
//==============LCD1602接口連接方法=====================
/*-----------------------------------------------------
       |DB0-----P2.0 | DB4-----P2.4 | RW-------P0.6    |
       |DB1-----P2.1 | DB5-----P2.5 | RS-------P0.7    |
       |DB2-----P2.2 | DB6-----P2.6 | E--------P0.5    |
       |DB3-----P2.3 | DB7-----P2.7 |
    ---------------------------------------------------*/
//================================================*/              
#define LCM_Data     P0    //LCD1602數據接口
#define Busy         0x80   //用于檢測LCM狀態字中的Busy標識
sbit    LCM_RW     = P0^6;  //讀寫控制輸入端,LCD1602的第五腳
sbit    LCM_RS     = P0^7;  //寄存器選擇輸入端,LCD1602的第四腳
sbit    LCM_E      = P0^5;  //使能信號輸入端,LCD1602的第6腳

//=================顏色傳感模塊連接=====================
/*-----------------------------------------------------
       |EO-----GND
       |S0-----VCC | S2-----P1.0 | OUT-------P3.5
       |S1-----VCC | S3-----P1.1 |
  ---------------------------------------------------*/
sbit    tcs230_s2=P1^0;//TCS230 S2接單片機P1.0
sbit    tcs230_s3=P1^1;//TCS230 S3接單片機P1.1
sbit    tcs230_en=P3^0; //TCS230 EN(E0)接GND
//**************函數聲明***************************************
void    WriteDataLCM                (uchar WDLCM);//LCD模塊寫數據
void    WriteCommandLCM        (uchar WCLCM,BuysC); //LCD模塊寫指令
uchar   ReadStatusLCM(void);//讀LCD模塊的忙標
void    DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置顯示一個字符
void    LCMInit(void);//LCD初始
void    DelayMs(uint Ms);//1MS基準延時程序
void    baipingheng();//白平衡子程序
void    celiang();//實際顏色程序
uint    ryz,gyz,byz;//分別定義紅色因子 綠色因子 藍色因子
uint    rb,gb,bb;//RGB值
uchar   tab1[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//***********************主程序******************************
main()   
{   
   TMOD=0x51;//設定T0以工作方式1定時10毫秒
   LCMInit();//LCD初始
   baipingheng();//上電時先白平衡一次
   while(1)
   {
       celiang();//顏色測試
       DisplayOneChar(0, 0,'R');//以十進制顯示RGB中紅色的分值
       DisplayOneChar(0, 1, rb/100+0x30); //顯示百位數據
       DisplayOneChar(0, 2, rb/10%10+0x30);//顯示十位數據
       DisplayOneChar(0, 3, rb%10+0x30);//顯示個位數據
       DisplayOneChar(0, 5,'G');//以十進制顯示RGB中綠色的分值
       DisplayOneChar(0, 6, gb/100+0x30); //顯示百位數據
       DisplayOneChar(0, 7, gb/10%10+0x30);
       DisplayOneChar(0, 8, gb%10+0x30);
       DisplayOneChar(0, 10,'B');//以十進制顯示RGB中藍色的分值
       DisplayOneChar(0, 11, bb/100+0x30);
       DisplayOneChar(0, 12, bb/10%10+0x30);
       DisplayOneChar(0, 13, bb%10+0x30);
       //*****在LCD1602的第二行以16進制顯示RGB*******************
       DisplayOneChar(1, 1, tab1[rb/16]);
       DisplayOneChar(1, 2, tab1[rb%16]);
       DisplayOneChar(1, 3, 'H');
       DisplayOneChar(1, 6, tab1[gb/16]);
       DisplayOneChar(1, 7, tab1[rb%16]);
       DisplayOneChar(1, 8, 'H');
       DisplayOneChar(1, 11,tab1[bb/16]);
       DisplayOneChar(1, 12,tab1[bb%16]);
       DisplayOneChar(1, 13,'H');
       DelayMs(250);//每隔0.25秒測試一次顏色
   }
}
//******************************************************
//白平衡子程序
void   celiang()
{
     //*********求R值************************************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=0;//選擇紅色濾光器
     tcs230_en=0;
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     rb=(unsigned long)(TH1*256+TL1)*255/ryz;
     if(rb>255)rb=255;//判斷RGB值是否合法
     //***********求B值**************************************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=1;//選擇藍色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     bb=(unsigned long)(TH1*256+TL1)*255/byz;
     if(bb>255)bb=255;//判斷RGB值是否合法     
     //***********求G值**************************************   
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=1;
     tcs230_s3=1;//選擇綠色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     tcs230_en=1;
     gb=(unsigned long)(TH1*256+TL1)*255/gyz;
     if(gb>255)gb=255;//判斷RGB值是否合法  
}
//******************************************************
//白平衡子程序
void    baipingheng()
{
     //**************求取紅色因子***********************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=0;//選擇紅色濾光器
     tcs230_en=0;
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     ryz=TH1*256+TL1;//其實這里的比例因子應該為255/(TH1*256+TL1)
     //**************求取藍色因子***********************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=0;
     tcs230_s3=1;//選擇藍色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     byz=TH1*256+TL1;//其實這里的比例因子應該為255/(TH1*256+TL1)
     //**************求綠紅色因子***********************
     TH0=(65536-10000)/256;
           TL0=(65536-10000)%256;
     TH1=0;
     TL1=0;
     tcs230_s2=1;
     tcs230_s3=1;//選擇綠色濾光器
     TR0=1;//10毫秒開始計時
     TR1=1;//開始計數
     while(TF0==0);//等待定時器溢出
     TF0=0;//清楚定時器0溢出標志
     TR0=0;//關閉定時0
     TR1=0;
     tcs230_en=1;
     gyz=TH1*256+TL1;//其實這里的比例因子應該為255/(TH1*256+TL1)
}
/*======================================================================
LCM初始化
=====================================這是部分程序。

51hei圖片20190827132734.png (102.77 KB, 下載次數: 50)

51hei圖片20190827132734.png

TCS3200顏色傳感器51例程.zip

402.57 KB, 下載次數: 94, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 性国产丰满麻豆videosex | 在线观看国产视频 | 国产一卡二卡三卡 | 国产一级在线 | 精品久久一区二区 | 性天堂网 | 午夜免费网 | 在线成人| 久草在线在线精品观看 | 伊人在线| 国产成人精品一区二区三区在线 | 国产精品国产a级 | 狠狠草视频 | 国产精品网页 | 国产精品一区二区在线 | 欧美高清性xxxxhd | 日韩成人在线网站 | 久久久国产一区二区三区 | 欧美精品一区二区三区蜜臀 | 黄色毛片在线观看 | 精品一区二区三区在线观看国产 | 日韩国产欧美一区 | 亚洲劲爆av | 亚洲视频一区在线观看 | 欧美一区不卡 | 国产精品久久久久999 | 国产精品99久久久久久宅男 | 欧美xxxx黑人又粗又长 | 久久久久久91 | 亚洲精品视频久久 | 欧美一二三 | 欧美日韩不卡在线 | 99精品在线 | 亚洲精品国产偷自在线观看 | 国产成人福利在线观看 | 天堂亚洲网 | 天天激情综合 | 日韩欧美二区 | 黄色片在线免费看 | av大片 | 国产精品视屏 |