TCS3200模块C51程序.docx
- 文档编号:10032358
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:10
- 大小:37.33KB
TCS3200模块C51程序.docx
《TCS3200模块C51程序.docx》由会员分享,可在线阅读,更多相关《TCS3200模块C51程序.docx(10页珍藏版)》请在冰点文库上搜索。
TCS3200模块C51程序
TCS3200模块C51程序
/*
*TCS3200模块
*
*用途:
TCS3200颜色测试,读取RGB值,LCD1602显示R,G,B值
*/
//接线说明:
//模块S2-----单片机P1.1
//模块S3-----单片机P1.0
//模块OUT----单片机P3.5(计数器1输入)
//模块VCC----单片机VCC
//模块GND----单片机GND
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineDataPortP2//LCD1602数据端
环境可以修改
ucharcount;//颜色标志位(0:
红1:
绿2:
蓝)
//显示数组
uchardisp_R[3];//红
uchardisp_G[3];//绿
uchardisp_B[3];//蓝
//********定义函数*****************************
voiddelay(unsignedintk);
voidInitLcd();
voidWriteDataLCM(uchardataW);
voidWriteCommandLCM(ucharCMD,ucharAttribc);
voidDisplayOneChar(ucharX,ucharY,ucharDData);
//*********LCD1602初始化**********************
voidInitLcd()
{
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
//**********检测忙信号************************
voidWaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
//**********写命令至LCD***********************
voidWriteCommandLCM(ucharCMD,ucharAttribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
//**********写数据至LCD************************
voidWriteDataLCM(uchardataW)
{
WaitForEnable();
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
//*********写一个字符数据到指定的目标***********
voidDisplayOneChar(ucharX,ucharY,ucharDData)
{
Y&=1;
X&=15;
if(Y)X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
WriteDataLCM(DData);
}
//**********延时函数***************
voiddelay(unsignedintk)
{
unsignedinti,j;
for(i=0;i { for(j=0;j<121;j++) {;} } } /******************************************* *函数名称: t0_init() *函数功能: 定时器0初始化 *入口参数: 无 *出口参数: 无 /********************************************/ voidt0_init() { TMOD=0x51;//T1计数T0定时工作方式1 TH1=0x00;//计数初值 TL1=0x00; TH0=0xE0; TL0=0x00;//11。 0592M晶振10ms EA=1;//开中断 ET0=1; TR0=1;//启动 TR1=1; } //********************************************* //数值转换出个十百千的ASCII码 //********************************************* voidconversion(uinttemp_data) { bai=temp_data/100+0x30; temp_data=temp_data%100;//取余运算 shi=temp_data/10+0x30; ge=temp_data%10+0x30;//取余运算 } /******************************************* *函数名称: main() /********************************************/ voidmain() { delay(10); InitLcd();//lcd初始化 s2=0;//初始设定S2引脚 s3=0;//初始设定S3引脚 t0_init();//定时计数初使? while (1) { DisplayOneChar(0,0,'T'); DisplayOneChar(1,0,'C'); DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'2'); DisplayOneChar(4,0,'3'); DisplayOneChar(5,0,'0'); DisplayOneChar(10,0,'R'); DisplayOneChar(11,0,'['); DisplayOneChar(12,0,disp_R[0]); DisplayOneChar(13,0,disp_R[1]); DisplayOneChar(14,0,disp_R[2]); DisplayOneChar(15,0,']'); DisplayOneChar(0,1,'G'); DisplayOneChar(1,1,'['); DisplayOneChar(2,1,disp_G[0]); DisplayOneChar(3,1,disp_G[1]); DisplayOneChar(4,1,disp_G[2]); DisplayOneChar(5,1,']'); DisplayOneChar(10,1,'B'); DisplayOneChar(11,1,'['); DisplayOneChar(12,1,disp_B[0]); DisplayOneChar(13,1,disp_B[1]); DisplayOneChar(14,1,disp_B[2]); DisplayOneChar(15,1,']'); delay(100); } } /******************************************* *函数名称: c10ms_out() *函数功能: 定时中断0服务程序 修改颜色标志disp_tc(0: 红1: 绿2: 蓝) 设置S0S1S2选择滤波器 计算脉冲,读取色值 *入口参数: 无 *出口参数: 无 /********************************************/ voidc10ms_out()interrupt1 { uinttemp; test_pin=! test_pin;//测试定时器中断频率引脚,可以用示波器观察 TR0=0;//关闭定时 TR1=0;//关闭计数 //count+1实现先检测绿色,再检测蓝色,然后检测红色,循环检测 if(count==0) { count++; s2=1;s3=1;//选择滤波器为绿色 temp=(8< temp/=rp; conversion(temp); disp_R[2]=ge;//因为这次的中断,是上次选择滤波器的数值 disp_R[1]=shi; disp_R[0]=bai; } elseif(count==1) { count++; s2=1;s3=0;//选择滤波器为蓝色 temp=(8< temp/=gp; conversion(temp); disp_G[2]=ge;//因为这次的中断,是上次选择滤波器的数值 disp_G[1]=shi; disp_G[0]=bai; } elseif(count==2) { count=0; s2=0;s3=0;//选择滤波器为红色 temp=(8< temp/=bp; conversion(temp); disp_B[2]=ge;//因为这次的中断,是上次选择滤波器的数值 disp_B[1]=shi; disp_B[0]=bai; } //定时器计数器重赋初值 TH0=0xE0; TL0=0x00;//11。 0592M晶振,为10ms TL1=0x00;//计数器清零 TH1=0x00;//计数器清零 TR0=1;//打开定时器 TR1=1;//打开计数器 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCS3200 模块 C51 程序