热门IT资讯网

TCS230/3200实现颜色复制显示源码分享

发表于:2024-11-28 作者:热门IT资讯网编辑
编辑最后更新 2024年11月28日,今天小编给大家分享的是TCS230/3200实现颜色复制显示的详细介绍,相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。关于粘贴复制乱码的问题:如果程序复

今天小编给大家分享的是TCS230/3200实现颜色复制显示的详细介绍,相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。

关于粘贴复制乱码的问题:如果程序复制到Keil编译器上出现注释乱码,可以先建一个.c文件,也就是说不在keil里面编辑,然后用记事本打开.c文件,将源码复制进去,再在keil中添加文件即可。

/**************************************************************************************                               基于TCS3200/230颜色复制显示器 * 用途:用于颜色的复制显示,通过TCS3200模块将取得的数据转换为对应的PWM波给三色灯显示出来    ,同时在LCD1602上显示出来 *接线方法     P0为LCD1602数据端口    P2.5接LCD1602 RS    P2.6接LCD1602 RW    P2.7接LCD1602 EN *三色灯接法    P1.5接红色端    P1.6接绿色端    P1.7接蓝色端 *TCS3200接法    模块S2-----单片机P1.1    模块S3-----单片机P1.0    模块OUT----单片机P3.5(计数器1输入)    模块VCC----单片机VCC    模块GND----单片机GND               2016-12-30------------------------------------------------------SWorld**************************************************************************************/#include#include       //Keil library  #include      //Keil library#include#define uchar unsigned char#define uint  unsigned int#define DataPort P0   //LCD1602 数据端口sbit    LCM_RS=P2^5;   //LCD1602 控制端口sbit    LCM_RW=P2^6;   //LCD1602 控制端口sbit    LCM_EN=P2^7;   //LCD1602 控制端口sbit Red=P1^5;        sbit Green=P1^6;sbit Blue=P1^7;/**引脚定义**/  sbit s2=P1^1;        //TCS3200 S2 sbit s3=P1^0;        //TCS3200 S3                     //TCS3200 S0 模块内部默认上拉                     //TCS3200 S1 模块内部默认上拉                     //TCS3200 OE 模块内部接地sbit test_pin=P1^2;  //用示波器看这个引脚,可知道定时器中断频率//变量、常量定义uchar ge,shi,bai ;uchar rp=3,gp=3,bp=6; //定义比例因子,具体环境可以修改uchar count;          //颜色标志位(0:红 1:绿 2:蓝)uint RC=0,GC=0,BC=0;//显示数组uchar disp_R[3];  //红uchar disp_G[3];  //绿uchar disp_B[3];  //蓝//********定义函数*****************************void    delay(unsigned int k);void    InitLcd();void    WriteDataLCM(uchar dataW);void    WriteCommandLCM(uchar CMD,uchar Attribc);void    DisplayOneChar(uchar X,uchar Y,uchar DData);//*********LCD1602初始化**********************void InitLcd(){    WriteCommandLCM(0x38,1);    WriteCommandLCM(0x08,1);    WriteCommandLCM(0x01,1);    WriteCommandLCM(0x06,1);    WriteCommandLCM(0x0c,1);}//**********检测忙信号************************void WaitForEnable(void){    DataPort=0xff;    LCM_RS=0;LCM_RW=1;_nop_();    LCM_EN=1;_nop_();_nop_();    while(DataPort&0x80);    LCM_EN=0;}//**********写命令至LCD***********************void WriteCommandLCM(uchar CMD,uchar Attribc){    if(Attribc)WaitForEnable();    LCM_RS=0;LCM_RW=0;_nop_();    DataPort=CMD;_nop_();    LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//**********写数据至LCD************************void WriteDataLCM(uchar dataW){    WaitForEnable();    LCM_RS=1;LCM_RW=0;_nop_();    DataPort=dataW;_nop_();    LCM_EN=1;_nop_();_nop_();LCM_EN=0;}//*********写一个字符数据到指定的目标***********void DisplayOneChar(uchar X,uchar Y,uchar DData){    Y&=1;    X&=15;    if(Y)X|=0x40;    X|=0x80;    WriteCommandLCM(X,0);    WriteDataLCM(DData);}//**********延时函数***************void delay(unsigned int k){    unsigned int i,j;    for(i=0;i=256)            {                count = 0;            }        }       }}/******************************************** 函数名称: c10ms_out() * 函数功能: 定时中断0服务程序            修改颜色标志disp_tc(0:红 1:绿 2:蓝)            设置S0 S1 S2 选择滤波器            计算脉冲,读取色值* 入口参数: 无* 出口参数: 无/********************************************/void c10ms_out() interrupt 1{    uint temp;    test_pin=!test_pin; //测试定时器中断频率引脚,可以用示波器观察    TR0=0;              //关闭定时    TR1=0;              //关闭计数    //   count+1实现先检测绿色,再检测蓝色,然后检测红色,循环检测           if(count==0)    {        count++;            s2=1;s3=1;             //选择滤波器为绿色             temp=(8<

完上诉内容,你们掌握TCS230/3200实现颜色复制显示的方法了吗?如果想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0